2010-05-29 Robert Jordan <robertj@gmx.net>
[mono.git] / mono / metadata / ChangeLog
1 2010-05-29  Robert Jordan  <robertj@gmx.net>
2
3         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
4         mono_marshal_string_to_utf16_copy () to avoid memory allocation
5         mismatches under Windows. Fixes pinvoke2:test_0_asany.
6
7 2010-05-28  Mark Probst  <mark.probst@gmail.com>
8
9         * sgen-gc.c: Change default nursery size to 4MB, because it
10         improves performance on many applications and benchmarks.
11
12 2010-05-28  Mark Probst  <mark.probst@gmail.com>
13
14         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
15         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
16         the GC descriptor by one bit, and don't encode the size for value
17         types not containing references.  Also get rid of
18         DESC_TYPE_STRING.
19
20 2010-05-28  Mark Probst  <mark.probst@gmail.com>
21
22         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
23         other than for remset processing.
24
25 2010-05-28  Mark Probst  <mark.probst@gmail.com>
26
27         * sgen-gc.c: More and better remset consistency checks.
28
29 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
30
31         * sgen-gc.c: Add a note about the int[] trick to avoid some
32         memset.
33
34 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
35
36         * sgen-gc.c (sort_addresses): Use heap sort since it has better
37         performance.
38
39         This helps programs with lots of threads or thread with big stacks
40         since the bottleneck the pin queue can get quite big.
41
42 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
43
44         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
45         a separate function called setup_fragment.
46
47         * sgen-gc.c (search_fragment_for_size_range): Variant of
48         search_fragment_for_size that does search for a secondary smaller
49         size.
50
51         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
52         for tlab allocation so small fragments are used.
53
54         This patch uses small fragments for tlab allocation when possible in order
55         to improve nursery utilization. With a fixed size tlab this patch is not very
56         usefull but once size gets dynamically adjusted, this will be invaluable.
57
58         Performance under pystone 500k is unchanged. Nursery utilization improves by
59         3.5% and 18 more fragments are used per minor GC.
60
61         Performance under modified binary-tree is unchanged. Nursery utilization
62         improves by 0.5% and 3 more fragments are used per minor GC.
63
64         These numbers make sense since as more pinning happens, more fragments are
65         created and so are the chances of having a bunch of small ones.
66
67 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
68         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
69         the current fragment when allocating a TLAB.
70
71         Reduces number of pystone 500k minor collections by 7%.
72
73 2010-05-25  Martin Baulig  <martin@ximian.com>
74
75         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
76
77         * debug-mono-symfile.c: Release memory from symfiles that were
78         loaded from memory.
79
80 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
81
82         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
83         during shutdown.
84
85 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
86
87         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
88         target class and remove some dead code.
89
90 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
91
92         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
93         the MonoTypes inside method headers can be freed when the header is freed.
94
95 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
96
97         * threadpool.c: Fix the DISABLE_SOCKETS build.
98
99 2010-05-19 Martin Baulig  <martin@novell.com>
100
101         Fix #604911.
102
103         * threads.c (wait_for_tids_or_state_change): Use an
104         alertable WaitForMultipleObjectsEx().
105         (wait_for_tids): Likewise.
106
107 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
110         icall.
111
112         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
113         gc tracked memory.
114
115         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
116         argument from a gchandle.
117
118         * marshal.c: Get rid of the delegate_target_locations hash table.
119
120         Fixes #605295.
121
122 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
123
124         * sgen-gc.c: Use _fast variants for string and array length.
125
126 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
127
128         * sgen-gc.c: Fix counters to be 64 bits.
129
130         * sgen-gc.c (dump_heap): Fix formating strings.
131
132 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * sgen-gc.c (global_remset_location_was_not_added): New
135         function that implements a 2 element LRU cache for just
136         added remsets. It is used to avoid adding duplicate ones.
137
138         * sgen-gc.c (add_to_global_remset): Check cache before
139         adding new entry.
140
141         * sgen-gc.c (scan_from_remsets): Don't process global remsets
142         that fail the cache test.
143
144         * sgen-gc.c (scan_from_remsets): Simplify the global remset
145         loop removing one condtion that is not possible.
146
147         A 2 element LRU cache was chosen by profiling IronPython 2.6
148         pytones with 1M passes and corlib compilation.
149
150         For the ipy test duplication was originally 940.92, measured
151         by "Store remsets" divided by "Unique store remsets".
152
153         With a 2-element LRU, duplication went to 1.007. Without the
154         check in scan_from_remsets 1.438.
155
156         With a 16-elements LRU, duplication reduction was negligibe.
157         A single element cache was basically of no use.
158
159         With corlib compilation duplication went from  1.4 to 1.02.
160
161         Performance results is a 20% time decrease for ipy and 2%
162         with corlib.
163 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
164
165         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
166
167 2010-05-15  Geoff Norton  <gnorton@novell.com>
168
169         * mono-debug.c: Fix a leak of the global table on shutdown.
170
171 2010-05-15  Geoff Norton  <gnorton@novell.com>
172
173         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
174         to clean up MonoDebugSourceLocation's.
175
176 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * class.c (mono_class_create_from_typedef): Fail a class
179         if there is a loop with its parent.
180
181         Fixes #598239.
182
183 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
184
185         * loader.c (mono_loader_set_error_type_load): Convert
186         a g_warninig to mono_trace_warning.
187
188 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
189
190         * class.c (mono_class_get_full): Release strings on failure
191         to avoid leaking them.
192
193 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
194
195         * class.c (mono_class_create_from_typedef): Only return
196         the class if no exceptions were detected.
197
198         * class.c (mono_class_create_from_typedef): Don't remove
199         broken classes from class_cache. Just set failure and
200         bail out.
201
202         This fixes a memory a memory leak where resolving the same
203         broken class multiple times resulted in a memory leak.
204
205         The right behavior would be to actually return the class
206         a let the caller figure it out.
207
208 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
209
210         * mono-ptr-array.h: Add mono_ptr_array_sort.
211
212         * reflection.c (mono_image_build_metadata): Replace that ugly
213         qsort call with mono_ptr_array_sort.
214
215 2010-05-13  Mark Probst  <mark.probst@gmail.com>
216
217         * sgen-gc.c: Switch to the copying major collector, because
218         Mark&Sweep is still buggy.
219
220 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
221
222         * reflection.c (mono_image_build_metadata): Don't put managed
223         references on non-tracked memory.
224
225 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
226
227         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
228
229 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
230
231         * icall.c: Switch to mono-ptr-array.h.
232
233 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
234
235         * Makefile.am: Add mono-ptr-array.h.
236
237         * mono-ptr-array.h: New header that implements
238         a GC tracked equivalent of g_ptr_array. 
239
240 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
241
242         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
243         method to avoid initializing the class.
244
245         Fixes #605115.
246
247 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
248
249         * icall.c (ves_icall_System_MonoType_getFullName): It
250         doesn't require to init the class.
251
252 2010-05-11  Miguel de Icaza  <miguel@novell.com>
253
254         * console-unix.c: Signal handlers now save and restore errno.   We
255         have never had a bug report about this, ioctl does change errno. 
256
257         Hide the unused method.   
258
259         Remove internal declarations from public headers.
260
261         Document what the signal handler is doing
262
263 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
264
265         * sgen-gc.c (clear_unreachable_ephemerons): Clear
266         unreachable keys with a tombstone.
267
268         * sgen-gc.c (mark_ephemerons_in_range): Ignore
269         tombstone keys.
270
271 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
272
273         * icall-def.h:
274         * gc-internals.h:
275         * gc.c: New GC:get_ephemeron_tombstone.
276
277 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
278
279         * appdomain.c (create_exceptions): Rename to
280         create_domain_objects. Create the ephemeron tombstone object.
281
282         * domains-internals.h (MonoDomain): Add new field for the
283         ephemeron tombstone.
284
285         * domain.c (mono_domain_free): Set ephemeron_tombstone to
286         NULL.
287
288 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
289
290         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
291         and dislinks must be processed before LOS since they
292         could end up with pointers to memory returned to the
293         OS.
294
295 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
296
297         * class.c (mono_class_alloc): New helper function to centralize memory allocation
298         for classes, allocates either from the image mempool or from the heap.
299
300         * class.c: Use mono_class_alloc to allocate memory owned by classes.
301
302         * metadata.c (free_generic_class_dependents): Free more items belonging to
303         generic classes.
304
305 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
306
307         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
308         as well. Fixes #604054.
309
310 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
311
312         * metadata-verify.c: MS doesn't mind duplicates in the
313         typeref table. Move it to full verification.
314
315         Fixes #600508.
316
317 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
318
319         * image.c (do_mono_image_load): Report verification
320         errors when loading an image fails.
321
322 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
323
324         * reflection.c (mono_type_get_object): Remove chunk of code
325         no longer in use.
326
327 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
328
329         * icall-def.h
330         * icall.c: Delete some unused icalls.
331
332 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
333
334         * appdomain.c (mono_domain_has_type_resolve): Check for
335         NULL domain objects to make pedump happy.
336
337         * object.c (mono_field_get_value): Assert on NULL object.
338         It's the caller resposibility to check for this.
339
340         * object.c (mono_field_get_value_object): Ditto.
341
342         Fixes #601384.
343
344 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
345
346         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
347         checks can avoid doing a mono_class_init.
348
349         * icall.c: Remove mono_class_init from a bunch of icalls that
350         don't need it.
351
352         Hopefully we're now lazy enough to fix most victims of #601431.
353
354 2010-05-07  Mark Probst  <mark.probst@gmail.com>
355
356         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
357
358 2010-05-07  Mark Probst  <mark.probst@gmail.com>
359
360         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
361
362 2010-05-07  Marek Habersack  <mhabersack@novell.com>
363
364         * culture-info-tables.h: updated to include en-TT culture. Fixes
365         bug #594035
366
367 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
368
369         Move mono_class_init from mono_type_get_object to icalls.
370         This causes massive memory savings for Assembly::GetTypes () and
371         make it fail a lot less due to missing dependencies.
372
373         This is a conservative, naive change as it doesn't remove some
374         mono_class_init from places that might not need them. Carefull
375         review of those should follow.
376
377         * reflection.c (mono_type_get_object): Don't mono_class_init the
378         returning type.
379
380         * reflection.c:
381         * cominterop.c:
382         * icall.c:
383         * marshal.c: Call mono_class_init in functions receiving a MonoType
384         object.
385
386         First step into fixing #601431.
387
388 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
389
390         * gc-internal.h: Add new functions required for ephemeron support.
391
392         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
393
394         * icall-def.h: Add GC::register_ephemeron_array.
395
396         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
397         under sgen. Its fields must not be marked.
398
399         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
400
401         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
402         handling finalizable objects. Clean dead ones after all finalizable
403         handling.
404
405         * sgen-gc.c (dump_heap): Add new kind of internal memory.
406
407         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
408         arrays from the dead domain.
409
410         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
411
412         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
413         whose keys are reachable.
414
415         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
416         list of live ephemeron arrays.
417
418 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
419
420         * class.c (mono_class_layout_fields): Don't perform alignment
421         if align is zero.
422
423         * class.c (mono_class_layout_fields): Init field related information
424         to sane defaults.
425
426 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
427
428         * verify.c (mono_verifier_verify_class): Verify the constraint
429         of generic type definitions.
430
431 2010-05-04  Mark Probst  <mark.probst@gmail.com>
432
433         * sgen-marksweep.c: Simplify free list maintenance in sweep.
434
435 2010-05-02  Mark Probst  <mark.probst@gmail.com>
436
437         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
438         major_do_collection() across the two major collectors.
439
440 2010-05-02  Mark Probst  <mark.probst@gmail.com>
441
442         * sgen-gc.c: Add heavy statistics counter for re-added global
443         remsets.
444
445 2010-05-02  Mark Probst  <mark.probst@gmail.com>
446
447         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
448         get rid of a division in critical code.
449
450 2010-04-29  Mark Probst  <mark.probst@gmail.com>
451
452         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
453         blocks for objects without references in mark&sweep, to improve
454         performance.
455
456 2010-04-28  Mark Probst  <mark.probst@gmail.com>
457
458         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
459         statistics up-to-date.
460
461 2010-04-27  Mark Probst  <mark.probst@gmail.com>
462
463         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
464         heap-dump for mark&sweep.
465
466 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
467
468         * loader.c (mono_method_get_header): Move the is_inflated case before the
469         wrapper case, as a method can be both.
470
471 2010-04-27  Mark Probst  <mark.probst@gmail.com>
472
473         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
474         separate pass to scan pinned and large object but use the gray
475         queue like for regular objects.
476
477 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
478
479         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
480         string.h for memmove.
481
482         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
483         ipaddress_to_struct_in6_addr() is only needed when
484         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
485
486 2010-04-25  Mark Probst  <mark.probst@gmail.com>
487
488         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
489         separate copy_object functions for major vs nursery.  Allows us to
490         get rid of a few checks and the start and end parameters for many
491         functions.
492
493 2010-04-25  Mark Probst  <mark.probst@gmail.com>
494
495         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
496         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
497         collector.
498
499 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
500
501         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
502         calling setup_mono_type () since the nested parent could recursively reference
503         the nested class using generic constraints. Fixes #599469.
504
505 2010-04-24  Mark Probst  <mark.probst@gmail.com>
506
507         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
508         abstraction.
509
510 2010-04-24  Mark Probst  <mark.probst@gmail.com>
511
512         * sgen-gc.c: Remove more unneeded code.
513
514 2010-04-24  Mark Probst  <mark.probst@gmail.com>
515
516         * sgen-gc.c: Disable managed allocator and wbarrier when the
517         binary protocol is enabled.
518
519 2010-04-24  Mark Probst  <mark.probst@gmail.com>
520
521         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
522
523 2010-04-24  Mark Probst  <mark.probst@gmail.com>
524
525         * sgen-gc.c: Remove a few commented out and unneeded bits.
526
527 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
528
529         * threadpool.c: patch from Robert Nagy that fixes a nullref and
530         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
531
532 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
533
534         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
535         types.
536
537         Fixes #331126
538
539 2010-04-21  Mark Probst  <mark.probst@gmail.com>
540
541         * sgen-gc.c: Turn off semi-precise stack mark.
542
543 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
544
545         * reflection.c (mono_custom_attrs_from_index): Use right function
546         to free 'list' (i.e. g_list_free) if the verifier fails.
547
548 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
549
550                 * verify.c: Handle the case where mono_type_get_underlying_type_any
551                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
552                 and MONO_TYPE_VALUETYPE in those case.
553
554                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
555
556                 Hopefully Fixes #564253.
557
558 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
559
560         * domain-internals.h: made threadpool_jobs volatile.
561         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
562         all local jobs.
563         * threadpool.c:
564                 -When two threads try to initialize the socket IO pool,
565                 the second one waits until the intialization is finished
566                 instead of continuing right away.
567                 -Add checks for domain unload: no items added in this case.
568                 -Only measure the time every 10 elements added to the queue.
569                 This is an experiment since linux x86 gettimeofday() sucks.
570                 -Create new thread if there are none waiting for work items.
571                 -There was a missing decrement of the busy threads.
572                 -Make sure the local queue is cleaned up before exiting the
573                 thread when the program ends.
574
575 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
576
577         * reflection.c (mono_type_get_object): Normalize generics types
578         as to how managed code expect them to be. A generic instance over
579         the GTD arguments must have the same mirror as the GTD itself.
580
581         Fixes #473289.
582
583 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
584
585         * locales.c: Implement support for DISABLE_NORMALIZATION.
586
587 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
588
589         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
590         since it is not a MonoMethod.
591
592 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
593
594         * icall-def.h: Add get_RequiresElevatedPermissions icall to
595         System.Security.SecurityManager - used only by Moonlight
596         * security-core-clr.c|h: Add Elevated Trust/Permission support
597         for CoreCLR / Moonlight
598
599 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
600
601         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
602         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
603
604 2010-04-16  Marek Habersack  <mhabersack@novell.com>
605
606         * mono-perfcounters.c: added code for the "Mono
607         Memory/Total Physical Memory" performance counter.
608
609         * mono-perfcounters-def.h: added definition of the "Mono
610         Memory/Total Physical Memory" performance counter.
611
612 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
613
614         * class.c (mono_class_get_method_by_index): Return NULL
615         on type load failures.
616
617 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * class.c (mono_class_from_typeref): Check if the supplied
620         image has an assembly bound to it.
621
622         Fixes #567884.
623
624 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
625
626         * loader.c (mono_method_get_signature_full): Use new function
627         inflate_generic_signature_checked to check for errors.
628
629         Fixes #560839.
630
631 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
632
633         * loader.c (inflate_generic_signature): Add _checked variant
634         and move this function to use it.
635
636 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
637
638         * class.c (mono_class_setup_vtable_general): Use error checking
639         version of mono_class_inflate_generic_method_full.
640
641         Fixes #596975.
642
643 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
644
645         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
646         error handling passing MonoError around.
647
648         Fixes #560336.
649
650 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
651
652         * socket-io.c: make GetHostByName ("") work on windows.
653         Fixes bug #456723.
654
655 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
656
657         * object-internals.h:
658         * threads.c: use a spin lock when accesing the per-thread appdomain
659         list.
660
661 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
662
663         * threads.c: no need to take the threads lock in push/pop appdomain.
664
665 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
666
667         * reflection.c (_mono_reflection_parse_type): MS supports
668         non-assembly-qualified types in a generic type parameter list
669         when enclosed in '[]' (which signals that they should be a fqn).
670
671         This breaks ECMA specs for how type names are encoded in cattr
672         blobs but F# does it.
673
674         Fixes #576342.
675
676 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
677
678         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
679         for instance methods/ctors.
680
681         Fixes #422113.
682
683 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
684
685         * reflection.c: Use the new verifier support for checking
686         custom attributes.
687
688         Fixes #595306.
689
690 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
691
692         * metadata-verify.c: Implement structural verification
693         of custom attributes. This check requires access to the
694         loader since to resolve the size of an enum we have to
695         look it up.
696         We don't check if named argumenments are encoded in a
697         compatible fashion to their underlying field/prop.
698         Maybe we should?
699
700         * verify-internals.h: Add two new cattr verification API.
701
702 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
703
704         * metadata-verify.c (decode_signature_header): Fix signature.
705
706 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
707
708         * verify.c (mono_verifier_is_enabled_for_method): Handle
709         assembly less images.
710
711         * verify.c (mono_verifier_is_class_full_trust): Ditto.
712
713 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
714
715         * loader.c (mono_method_signature_checked): Properly
716         init MonoError.
717
718         * loader.c (mono_method_signature): It's the calee
719         resposibility to init the error object.
720
721 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
722
723         * metadata-verify.c (decode_signature_header): Do proper
724         overflow checking.
725
726 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
727
728         * reflection.c: maintain the invariants required by
729         mono_class_layout_fields() also in typebuilder_setup_fields ().
730
731 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
732
733         * security-core-clr.c: Call mono_class_setup_methods in 
734         get_default_ctor before checking klass->methods. Fix typo in
735         comment
736
737 2010-04-10  Jb Evain  <jbevain@novell.com>
738
739         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
740         add .net 4.0 RTM version.
741
742 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
743
744         * reflection.c (resolve_object): Properly inflate generic
745         methods when a context is supplied.
746
747         Fixes #591226.
748
749 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
750
751         * verify.c (mono_method_verify): A switch op don't empty
752         the stack for the next one. Fixes a bug when running fsi
753         under --verify-all.
754
755 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
756
757         * metadata-verify.c (is_valid_standalonesig_blob): Accept
758         fields as valid standalone sig too. F# does generate them.
759
760         * metadata-verify.c (verify_typedef_table_full): Ignore
761         what <module> extends.
762
763 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
764
765         * verify.c (do_invoke_method): It's ok to do use call with
766         virtual, non-final methods if their class is sealed.
767
768 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
769
770         * icall.c (ves_icall_MonoField_GetValueInternal): This function
771         is a near identical copy of mono_field_get_value_object. So simply
772         call it.
773
774         * object.c (mono_field_get_value_object): Handle literal fields
775         on open generic classes.
776
777         Fixes #594942.
778
779 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
780
781         * reflection.c (mono_reflection_create_runtime_class): Setup
782         parent/supertype information again since it can be changed
783         without notice.
784
785 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
786
787         * verify.c (verify_type_compatibility_full): Properly handle
788         stores between arrays of primitives.
789
790         Fixes the verifier side of #555950.
791
792 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
793
794         class.c (mono_bounded_array_class_get): Properly init
795         cast_class to take the fact that uint[] and int[] can be
796         casted between each other.
797
798         Fixes #555950.
799
800 2010-04-07  Geoff Norton  <gnorton@novell.com>
801
802         * domain.c: Avoid a deadlock on osx.  Fixes #565765
803
804 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
805
806         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
807         builders. Fixes #594464.
808
809 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
810
811         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
812         waiting for all threads to suspend, as those threads can't be suspended.
813
814 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
815
816         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
817         to avoid crashes on newly created threads.
818
819 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
820
821         * file-io.c: reset the MonoIOStat structure in case of error.
822         Fixes bug #582667.
823
824 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
825
826         * class.c (print_implemented_interfaces): Print proper type name.
827
828         * class.c (mono_class_setup_vtable): Don't try that hard to produce
829         the override map for generic instances since it later ignored.
830
831         * class.c (mono_class_implement_interface_slow): Don't break for
832         dynamic generic instances.
833
834         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
835
836         * reflection.c (mono_reflection_method_get_handle): New method that
837         resolves a method handle.
838
839         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
840         case when we override methods from a dynamic generic instance interface.
841
842         Fixes #575941.
843
844 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
845
846         * threadpool.c: don't attempt to close the pipe when it has not been
847         created.
848
849 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
850
851         * threadpool.c: if there are no waiting threads, try to start a new
852         one. This fixes the not-so-random hangs in System.ServiceModel tests.
853         No need to use InterlockedCompareExchange to read volatile variables.
854
855 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
856
857         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
858         and reference types that point to the same class.
859
860         Fixes #565598.
861
862 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
863
864         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
865         when verifying compatibility between a generic instance and a generic
866         parameter.
867
868         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
869
870         * verify.c (stack_slot_stack_type_full_name): Improve verification type
871         name.
872
873         Fixes #587849.
874
875 2010-04-04  Mark Probst  <mark.probst@gmail.com>
876
877         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
878
879 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
880
881         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
882
883 2010-04-03  Marek Habersack  <mhabersack@novell.com>
884
885         * process.c: when cross-compiling with MinGW, force GetProcessId
886         lookup using GetProcAddress.
887
888 2010-04-02  Mark Probst  <mark.probst@gmail.com>
889
890         * sgen-gc.c: parse_environment_string_extract_number() must be
891         static.
892
893 2010-04-02  Mark Probst  <mark.probst@gmail.com>
894
895         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
896         gray_object_dequeue(), to make sure they're inlined.
897
898 2010-04-02  Mark Probst  <mark.probst@gmail.com>
899
900         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
901         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
902
903 2010-04-02  Jb Evain  <jbevain@novell.com>
904
905         * exception.c: remove dead code.
906
907 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
908
909         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
910         with mono-gc.h.
911
912 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
913
914         * sgen-gc.c: Make the nursery size adjustable by the
915         MONO_GC_PARAMS environment variable.
916
917         Code is contributed under MIT/X11 license.
918
919 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
920
921         * threadpool.c: threadpool threads wait is alertable.
922         Fixes bug #592964.
923         Reduced the stack size of the *poll_wait thread.
924
925 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
926
927         * exception.c|metadata-internals.h: Add new mono_get_exception_
928         field_access_msg and mono_get_exception_method_access_msg 
929         functions that accept a const char* parameter to provide more 
930         details when the exception is thrown.
931         * security-core-clr.c|h: Rework code to allow logging exceptions
932         (export MONO_LOG_MASK="security") and to supply more details in
933         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
934         mono_security_core_clr_is_field_access_allowed and 
935         mono_security_core_clr_is_call_allowed to return an exception,
936         with messages and logging, that can be emitted by method-to-ir.c
937
938 2010-04-01  Mark Probst  <mark.probst@gmail.com>
939
940         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
941         pinned object.
942
943 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
944
945         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
946         the assembly name is not well formed utf8. Fixes #567882.
947
948 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
949
950         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
951         the generic parameters from the builder. Fixes #473298.
952
953 2010-03-31  Miguel de Icaza  <miguel@novell.com>
954
955         * object.c (mono_class_proxy_vtable): Eliminate warning. 
956
957         * marshal.c (emit_marshal_boolean): Eliminate possible
958         uninitialized local warning. 
959
960 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
961
962         * class.c (mono_class_init): Postpone coreclr inheritance check
963         until the end of the initialization (so we can check up the 
964         default ctor manually for the core-clr inheritance rules).
965         * security-core-clr.c: Add the missing (undocumented) checks on
966         default constructors when verifying inheritance rules.
967
968 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * domain-internals.h (MonoJitExceptionInfo): Add new field
971         handler_end to the data union. To be used to point the end
972         of a finally block.
973
974 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
975
976         * reflection.c: Add support for new v4 type
977         System.Reflection.MonoModule that is the concrete version
978         of Module which is abstract unver v4.
979
980 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
981
982         * class.c (mono_class_init): Don't set class failure after
983         inited = 1 is set. It must be done before.
984
985 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
986
987         * mono-config.c: Add support for OS "haiku"
988         * ChangeLog: Fix UTF-8 encoding
989
990         Code is contributed under MIT/X11 license.
991
992 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
993
994         * console-unix.c: fixed include logic for sys/ioctl.h.
995
996 2010-03-30  Mark Probst  <mark.probst@gmail.com>
997
998         * threads.c: Fix bitmap generation for TLS marking on 64 bit
999         systems.
1000
1001 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1004         unfinished/broken typebuilders.
1005
1006 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1007
1008         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1009         for the minor section allowance.
1010
1011 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1012
1013         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1014         "NoOptimization".
1015
1016 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1017
1018         * sgen-gc.c: Count bytes allocated with heavy statistics.
1019
1020 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1021
1022         * sgen-gc.c: More detailed time statistics.
1023
1024 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1025
1026         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1027         fix the user defined mark interface to pass a pointer
1028         to the object location and not the object itself.
1029
1030 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1031
1032         * reflection.c (mono_method_body_get_object): Release
1033         the method header before the call to CACHE_OBJECT since
1034         this is a macro that returns.
1035
1036 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1037
1038         * class.c (inflate_generic_type): mono_metadata_type_dup
1039         already dupes array information, the g_memdup was just
1040         leaking memory.
1041
1042 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1043
1044         * verify.c: Add stack_peek function. Fix CEE_DUP
1045         to not read from invalid memory if push did expand
1046         the stack.
1047
1048 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1049
1050         * verify.c: Remove old table verification code that has
1051         been superseeded by the new metadata verifier.
1052
1053         * verify.h: Remove mono_image_verify_tables from the public
1054         API.
1055
1056         * pedump.c: Fix for removed bits.
1057
1058 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1059
1060         * verify.c: Allocate stack slows lazily to reduce stack usage
1061         in case of methods with huge stacks. Reduces memory consumption
1062         for mcs yyparse from 459Mb to 1.8Mb.
1063
1064 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1065
1066         * threadpool.c: don't try executing items from domains being
1067         unloaded. Fixes appdomain-async-invoke test.
1068
1069 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1070
1071         * threadpool.c: spin while the threadpool initializes.
1072         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1073         down, don't do anything.
1074
1075 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1076
1077         * threads.c (mono_thread_create_internal): Set the GC type of the
1078         threads_starting_up hash table.
1079
1080 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1081
1082         * threadpool.c: reset 'state' to avoid returning non-null when the
1083         event type is not found.
1084
1085 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1086
1087         * sgen-gc.c: make copy_object () take the address of the
1088         slot holding the reference. This allows saving memory stores
1089         when not needed and it allows keeping track of oldspace->nursery
1090         references for the card table code.
1091
1092 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1093
1094         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1095
1096         Code is contributed under MIT/X11 license.
1097
1098 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1099
1100         * object.c, threads.c, threads-types.h, threads.h: make the
1101         managed thread local storage references precisely tracked.
1102
1103 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1104
1105         * threadpool.[ch]: reworked the threadpool:
1106                 -Threadpool threads use a work-stealing queue. Adding a work
1107                 item from a threadpool thread will queue it in the thread
1108                 local queue without locking (in most cases).
1109                 -epoll events are coalesced before being added to the IO
1110                 queue.
1111                 -Dynamically change the number of active threads
1112                 -Changed the global queue to be more GC friendly
1113
1114         * class-internals.h: add 2 new performance counters for the number of
1115         threads in the threadpool and the IO threadpool.
1116
1117         * object-internals.h: new field in MonoAsyncResult.
1118         * icall-def.h: new internal call for queueing work items.
1119
1120         * Makefile.am: add 2 new files.
1121
1122         * appdomain.c: bump up corlib version.
1123
1124         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1125
1126         * mono-perfcounters-def.h:
1127         * mono-perfcounters.c: added 2 new performance counters.
1128
1129 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1130
1131         * sgen-gc.c: More FIXME/TODO updates.
1132
1133 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1134
1135         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1136         function mono_gc_invoke_with_gc_lock() which invokes a function
1137         with the guarantee that no collection will occur during its execution.
1138
1139 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1140
1141         * sgen-gc.c: Update a few comments.
1142
1143 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1144
1145         * reflection.c: Add support for new v4 type
1146         System.Reflection.MonoAssembly that is the concrete version
1147         of Assembly which is abstract unver v4.
1148
1149 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1150
1151         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1152         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1153
1154         Expose a few macros that are needed for SR but not SRE to the
1155         world (previous inside the SRE ifdef)
1156
1157 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1158
1159         * sgen-gc.c (gc_register_current_thread): We need
1160         stack_start_limit as well in the non-attribute pthread case.
1161
1162 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1163
1164         * threads.c: Fix windows build.
1165
1166 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1167
1168         * thread-types.h: Add mono_thread_resume_interruption.
1169
1170         * threads.c: Add mono_thread_resume_interruption, this
1171         function should be called after the last protected handler
1172         found at interruption time has finished.
1173
1174 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1175
1176         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1177         Check MonoInternalThread's ::state instead of ::abort_exc
1178         since the later can be lazily created.
1179
1180         This is specially problematic when running a finally block
1181         under AbortRequested state. ResetAbort must work, but the
1182         abort_exc object has not been created because interruption
1183         has not began.
1184
1185 2010-03-22  Geoff Norton  <gnorton@novell.com>
1186
1187         * locales.c: Its possible for CFStringGetCStringPtr
1188         to return null and not convert encodings.  Use
1189         CFStringGetCString instead.
1190
1191 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1192
1193         * class-internals.h, class.c, object.c: introduce compressed
1194         interface bitmaps (for now only under small config): this saves
1195         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1196         startups.
1197
1198 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1199
1200         * mono-debug.c: don't try to get the method header, it causes a
1201         deadlock and it is not used for anything anymore.
1202
1203 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1206         broken by the last change.
1207
1208 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1209
1210         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1211         SOCK_RDM.
1212         
1213         Code is contributed under MIT/X11 license.
1214
1215 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1216
1217         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1218         nursery.
1219
1220         Code is contributed under MIT/X11 license.
1221
1222 2010-03-19  Martin Baulig  <martin@ximian.com>
1223
1224         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1225         dummy field, containing an empty string.
1226         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1227
1228
1229 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1230
1231         * class.c: setup_interface_offsets() refactor to not call
1232         mono_class_get_implemented_interfaces () more times than needed and
1233         to reduce the runtime memory requirements to be O(num_interfaces)
1234         instead of O(max_interface_id).
1235
1236 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1237
1238         * mono-mlist.[ch]: add mono_mlist_set_next ().
1239
1240 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1241
1242         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1243         associated changes to support holes in the protected range of a
1244         try block.
1245
1246         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1247         retrieves the holes table from a given MonoJitInfo.
1248
1249 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1250
1251         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1252         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1253         hide the contents of the MonoString and MonoArray structs from the
1254         public API. Change the accessor macros to accessors functions where
1255         needed. Adjusted the array API to allow for pointer-sized lengths and
1256         starting positions, so 64 bit arrays can be optionally provided in an
1257         API compatible way if needed on 64 bit systems.
1258
1259 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1260
1261         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1262         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1263
1264 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1265
1266         * class-internals.h: remove the method header from MonoMethod since
1267         from now on it will be transient. We have a header pointer for method
1268         wrappers, since in that case we need to keep track of it. For this
1269         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1270         structs now. The same happens with MonoMethodInflated.
1271         * class.c: reset the sre_method flag for inflated method structures:
1272         this makes the code that cares look at the header in the MonoMethodInflated
1273         structure.
1274         * loader.c: lookup the method header in the appropriate field now that
1275         it is removed from MonoMethod.
1276         * metadata-internals.h: add a flag to the method header to know if it
1277         can be freed inside mono_metadata_free_mh ().
1278         * method-builder.c: updates after moving the header field from
1279         MonoMethod to MonoMethodWrapper.
1280         * reflection.c: MonoMethods generated from Reflection.Emit use
1281         MonoMethodWrapper structs if they need a method header now (later take
1282         advantage of this and remove all the current unsafe uses of method_aux_hash).
1283         * metadata.c: make method header parsing not leak when verification
1284         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1285         These changes save a few hundred KB of runtime memory in a mcs
1286         bootstrap or a monodevelop startup.
1287
1288 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1289
1290         * verify.c: Improve error message.
1291
1292 2010-03-12  Jb Evain  <jbevain@novell.com>
1293
1294         * reflection.c (add_exported_type): populate the exported
1295         table with the type's nested type.
1296
1297 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1298
1299         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1300         can't read parentheses.
1301
1302 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1303
1304         * threads.c (thread_cleanup): Add a guard to dereferencing
1305         "thread" to avoid an unlikely race condition.
1306
1307 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1308
1309         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1310         instead of an empty string.
1311
1312 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1315         convert to a boolean, recent gcc versions compile this differently.
1316
1317 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1318
1319        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1320        inlined.
1321
1322 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1323
1324         * sgen-gc.c (STRING_SIZE): Off by one.
1325
1326 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1327
1328         * sgen-archdep.h: Fix the signal context register access for
1329         AMD64.
1330
1331 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1332
1333         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1334
1335 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1336
1337         * verify.c: Store the initial basic block returned by mono_basic_block_split
1338         so we can release the whole list and not just the first one.
1339
1340 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1341
1342         * verify.c, debug-helpers.c, profiler.c, loader.c,
1343         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1344         MonoMethodHeader a transient entity.
1345
1346 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1347
1348         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1349         uncontrolled growth of the gray stack.
1350
1351         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1352         added items are removed first, improving cache locality. Avoid freeing queue
1353         segments in the fast path, use the list of segments as the free list, truncate
1354         it to its max size at the start of collection.
1355
1356 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
1357
1358         * metadata-internals.h: more memory savings, both with small config and without.
1359
1360
1361 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
1362
1363         * appdomain.c, domain-internals.h, domain.c, object.c:
1364         make class_vtable_hash into an array to reduce memory usage.
1365
1366 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1367
1368         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
1369         object-internals.h, object.c, reflection.c, threadpool.c:
1370         reduce resource usage when the small config is selected.
1371         In particular, up to 64K of methods/fields/properties/events
1372         are allowed and "other" methods in events are ignored.
1373
1374 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
1375
1376         * threads.c: reduce resource usage when compiled for a small config.
1377
1378 2010-03-05  Mark Probst  <mark.probst@gmail.com>
1379
1380         * sgen-gc.c: Also collect number of degraded-alloced objects with
1381         heavy statistics.
1382
1383 2010-03-04  Geoff Norton  <gnorton@novell.com>
1384
1385         * assembly.c: Only support OSX bundling if the bundle is 
1386         actually detectable.
1387
1388 2010-03-04  Geoff Norton  <gnorton@novell.com>
1389
1390         * loader.c: The marshal specs are freed at the end of the call
1391         but it explicitly frees the strings as well as the container,
1392         so we need to dup them too to avoid referencing free'd memory.
1393
1394 2010-03-04  Geoff Norton  <gnorton@novell.com>
1395
1396         * icall-def.h:
1397         * icall.c: Add a new private internal icall to construct
1398         an object from its type without running the ctor.
1399
1400 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1401
1402         * profiler.c: allow multiple profiler engines to be loaded
1403         at the same time.
1404
1405 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1406
1407         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
1408         profiler event to track object moves.
1409
1410 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
1411
1412         * object.c, profiler.c, profiler.h, string-icalls.c:
1413         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
1414
1415 2010-03-03  Miguel de Icaza  <miguel@novell.com>
1416
1417         * decimal.c (mono_double2decimal): Add support for reducing the
1418         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
1419         expected.
1420
1421 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * icall-def.h:
1424         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
1425
1426 2010-03-03  Marek Habersack  <mhabersack@novell.com>
1427
1428         * mono-config.c (mono_config_parse_assembly_bindings): added -
1429         parses assembly binding redirections from appdomain's config
1430         file.
1431
1432         * metadata-internals.h: added definition of a new function -
1433         mono_config_parse_assembly_bindings - to support parsing assembly
1434         binding redirections defined in appdomain's config file.
1435
1436         * domain-internals.h: added two new fields to _MonoDomain - a list
1437         of assembly bindings and a flag to parse the config file only
1438         once.
1439
1440         * assembly.c (assembly_binding_maps_name): empty culture name and
1441         NULL culture name are considered equal.
1442         (mono_assembly_apply_binding): added support for domain specific
1443         assembly binding redirections, read from the appdomain's
1444         configuration file. Fixes bug #580185
1445
1446 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
1447
1448         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
1449         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
1450         support.
1451
1452 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1453
1454         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
1455         from this function. The new function receive the parent token instead of a type.
1456
1457         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
1458         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
1459         typebuilders. This make it possible to properly encode generic type builders since
1460         their unmanaged type don't have generics data while unfinished.
1461
1462         Fixes #583655.
1463
1464 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1465
1466         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
1467         writing binary log files (can be enabled by #define'ing
1468         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
1469         bugs in longer running programs.
1470
1471 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
1472
1473         * metadata.c: added some API documentation.
1474
1475 2010-03-01  Robert Jordan  <robertj@gmx.net>
1476
1477         * filewatcher.h: Include glib.h to fix the MSVC build.
1478
1479 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
1482         a GC handle instead. This is a bit slower to access, but avoids burdening the
1483         GC with 100s of individual roots.
1484
1485         * reflection.c (mono_class_get_ref_info):
1486         (mono_class_set_ref_info):
1487         (mono_class_free_ref_info): New internal helper fuctions.
1488
1489         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
1490         of accessing klass->reflection_info directly.
1491
1492         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
1493         words.
1494
1495         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
1496         the previous array.
1497
1498 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
1499
1500         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
1501         needs an indirection.
1502
1503 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
1506         so all generic sharing code is in one place.
1507
1508         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
1509         we don't call setup_interface_offsets () for unfinished types.
1510
1511 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1512
1513         * class.c (mono_class_generic_sharing_enabled): Move this to
1514         generic-sharing.c.
1515
1516         * image.c: Add an unload hook which is called before an image is unloaded.
1517
1518         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
1519         metadata.c having to depend on generic sharing.
1520
1521 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1522
1523         * class.c: reduce size of ridiculously large cache.
1524
1525 2010-02-26  Martin Baulig  <martin@ximian.com>
1526
1527         * mono-debug.h
1528         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
1529
1530         * threads.c (mono_thread_internal_reset_abort): New method; resets
1531         the abort, but doesn't throw any exception if no abort was requested.
1532
1533 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1534
1535         * class.c (get_implicit_generic_array_interfaces): Call
1536         mono_class_setup_interface_offsets () before accessing
1537         eclass->interface_offsets_count. This only shows up on platforms without IMT for
1538         some reason.
1539
1540 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1541
1542         * environment.c, environment.h, icall.c: make the GetOSVersionString()
1543         icall internal.
1544
1545 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
1546
1547         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
1548         direct access to the MonoType fields.
1549
1550 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * threads.h: Move some internal functions which were added to this header by
1553         mistake to threads-types.h.
1554
1555         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
1556
1557 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
1558
1559         * class-internals.h, class.h, object.h: make MonoRemoteClass
1560         and mono_remote_class() internal.
1561
1562 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
1563
1564         * metadata-internals.h, class-internals.h, metadata.h: make the
1565         MonoType guts internal as well.
1566
1567 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
1568
1569         * reflection.h: the MonoTypeNameParse guts are internal now.
1570         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
1571         are internal now, provide accessors as needed.
1572         * metadata.h, metadata-internals.h: the MonoMethodSignature
1573         guts are internal now.
1574         * Makefile.am: mempool.h is an internal header now.
1575         * *.h, *.c: remove glib.h usage from the public headers.
1576
1577 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
1578
1579         * culture-info-table.h : regenerated.
1580
1581 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1582
1583         * metadata.c: Add mono_method_get_header_summary which returns minimal
1584         information about the header of a method. This is the information used
1585         by the inline oracle to reject methods.
1586
1587         This method doesn't decode local variables and doesn't cache it's result,
1588         so it should cause a minimal reduction in memory usage.
1589
1590         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
1591         mono_method_get_header_summary.
1592
1593 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
1594
1595         * threads.c (mono_thread_exit): Make sure that the main thread is
1596         non-null before dereferencing it.
1597
1598 2010-02-21  Geoff Norton  <gnorton@novell.com>
1599
1600         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
1601         locale.
1602         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
1603         before falling back to the posix lookup.
1604
1605 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
1608         the DONT_MANAGE flag set.
1609
1610 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1611
1612         * domain.c: Remove old v1 version strings. Let the runtime
1613         default to 2.0 instead of failing because it can't find a
1614         working 1.0 instalation.
1615
1616 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1617
1618         * domain.c: Add v4 RC version string.
1619
1620 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
1621
1622         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
1623         of overflow checking function.
1624
1625 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
1628         generic methods.
1629
1630         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
1631         cases for ParameterInfo.
1632
1633         Fixes #579493.
1634
1635 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1636
1637         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
1638         have has_cctor set. Fixes #575946.
1639
1640 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1641
1642         * appdomain.c: display a warning if the parsing the config file
1643         produces any error.
1644         Skip the BOM in UTF-8 files.
1645         Copy the AppDomainSetup before setting the privateBinPath so that the
1646         correct configuration file is read.
1647
1648 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
1651         vtable trampoline per vtable slot index. Not used yet.
1652
1653 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1654
1655         * icall-def.h:
1656         * icall.c: add internal call that returns the system page size.
1657
1658 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1659
1660         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
1661         'int' for system classes.
1662
1663 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
1664
1665         * icall.c, icall-def.h: new icall to check for sufficient
1666         stack space.
1667
1668 2010-02-12  Mark Probst  <mark.probst@gmail.com>
1669
1670         * reflection.c (ensure_complete_type): Check that reflection_info
1671         is set, too.  Fixes crash of corlib testsuite with -O=-all.
1672
1673 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
1674
1675         * attrdefs.h:
1676         * tabledefs.h: Add NoOptimization flag.
1677
1678 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1679
1680         * sgen-gc.c: Don't consider it a missing remset if the target
1681         object is pinned - we might have done the store but not added the
1682         remset yet.
1683
1684 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1685
1686         * sgen-gc.c: When checking for missing remsets, don't assert on
1687         the first one, but print them all and then assert.
1688
1689 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1690
1691         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
1692
1693 2010-02-09  Miguel de Icaza  <miguel@novell.com>
1694
1695         * console-unix.c: On OSX Control-Y is assigned to
1696         VDSUSP (non-Posix), the
1697         suspend-program-next-time-it-tries-to-read-input command (this is
1698         different than C-z, which suspends immediately).
1699
1700         Do the same thing that bash does and ignore this setting,
1701         making our repl/getline support pasting.
1702
1703 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1704
1705         * sgen-gc.c: Simple plausibility check for scan_starts.
1706
1707 2010-02-10  Mark Probst  <mark.probst@gmail.com>
1708
1709         * sgen-gc.c: Round up when calculating the number of scan starts.
1710
1711 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
1712
1713         * reflection.c: Export mono_get_object_from_blob.
1714
1715         * object-internals.h: Ditto.
1716
1717         * icall.c: New icall property_info_get_default_value to get the default
1718         value of a property. Since using this is not common, no caching is done.
1719
1720         * icall-def.h: Add new icall.
1721
1722 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
1723
1724         * class.c: Add mono_class_get_property_default_value.
1725
1726         * class-internal.h: Export mono_class_get_property_default_value.
1727
1728 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
1729
1730         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
1731
1732 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
1733
1734         * sgen-gc.c: introduced critical regions to allow some lockless
1735         operations and increase scalability.
1736
1737 2010-02-10  Geoff Norton  <gnorton@novell.com>
1738
1739         * reflection.c: Support building with DISABLE_REFLECTION
1740
1741 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
1742
1743         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
1744         Closes bug #566057.
1745
1746         * exception.c: fix typo in comment.
1747
1748 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
1749
1750         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
1751         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
1752
1753         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
1754
1755         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
1756         the internal API.
1757
1758         Fixes #574434.
1759
1760 2010-02-09  Mark Probst  <mark.probst@gmail.com>
1761
1762         * threads.c: Removed two assertions that were too strict.  Added a
1763         clarifying comment.  Fixes #577090.
1764
1765 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
1768         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
1769
1770         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
1771
1772         * verify.c (mono_type_get_stack_name): Fix a warning.
1773
1774 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * marshal.c (mono_marshal_get_wrapper_info): Rename from
1777         mono_marshal_wrapper_info_from_wrapper.
1778
1779         * marshal.c (mono_marshal_set_wrapper_info): Rename from
1780         mono_marshal_method_set_wrapper_data, and export.
1781
1782         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
1783         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
1784         by calling mono_marshal_get_wrapper_info ().
1785
1786         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
1787         small objects which does no size checks.
1788
1789 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
1790
1791         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
1792
1793 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1794
1795         * verify.c (mono_method_verify): Use the new basic block formation pass
1796         to avoid verifying dead basic blocks. This is the same behavior as the
1797         runtime MS verifier.
1798
1799 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1800
1801         * mono-basic-block.c:
1802         * mono-basic-block.h: New implementation of a basic block formation pass.
1803         The formation pass does static liveness analysis as well to detect dead
1804         basic blocks.
1805
1806 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1807
1808         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
1809         'this' argument in icalls.
1810
1811 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1812
1813         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
1814
1815 2010-02-01  Mark Probst  <mark.probst@gmail.com>
1816
1817         * object.c, domain.c: When using SGen, we must register
1818         vtable->type as a root if it's not a MonoType, because then it
1819         wasn't pin-alloced.
1820
1821 2010-02-01  Mark Probst  <mark.probst@gmail.com>
1822
1823         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
1824         at the start of nursery collections, because we might have had
1825         degraded allocations which changed next_data.
1826
1827 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1828
1829         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
1830         custom attr so this function works in cross-compiling mode.
1831
1832 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * class.c (make_generic_param_class): Initialize interface offsets since we
1835         set klass->inited. Fixes #574819.
1836
1837 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
1840         calling the JIT domain cleanup hook.
1841
1842 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
1843
1844         * pedump.c (main): Properly set the verifier mode when running the metadata
1845         verifier.
1846
1847 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
1848
1849         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
1850         overlapping fields now that we're called before has_references is set.
1851
1852         * pedump.c (dump_verify_info): Clear any loader error before verifying another
1853         method. Otherwise all sort of weird stuff happens.
1854
1855 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * object.c (mono_field_get_value_object): Handle nullable types correctly.
1858         Fixes #572874.
1859
1860 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
1863         Fixes #573322.
1864
1865 2010-01-23  Mark Probst  <mark.probst@gmail.com>
1866
1867         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
1868         pin_staging_area_index is greater than 0.
1869
1870 2010-01-22 Miguel de Icaza (miguel@novell.com)
1871
1872         * loader.c: Since we do nothing with the error returned, pass NULL
1873         to ignore the error.
1874
1875 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
1876
1877         * reflection.c (typebuilder_setup_fields): Pretend field setup already
1878         happened before starting to encode the actual fields. This avoid ciclic
1879         dependencies and eventual crashes.
1880
1881         Fixes #572660.
1882
1883 2010-01-21  Mark Probst  <mark.probst@gmail.com>
1884
1885         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
1886         atomic and remove the half-constructed hack in SGen.
1887
1888 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
1889
1890         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
1891         has a recursive reference to itself.
1892
1893         Fixes #571863.
1894
1895 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
1896
1897         * loader.c (mono_method_signature): Fix error message.
1898
1899 2010-01-21  Mark Probst  <mark.probst@gmail.com>
1900
1901         * sgen-gc.c: Reuse to-space sections between nursery collections.
1902
1903 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1904
1905         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
1906         from the current assembly or mscorlib. Fixes bug #322957.
1907
1908 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * marshal.c: Calculate the target class of the delegete invoke wrappers using
1911         get_wrapper_target_class.
1912
1913 2010-01-19  Mark Probst  <mark.probst@gmail.com>
1914
1915         * sgen-gc.c: Fix warnings.
1916
1917 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         * verify.c (store_local): Better error message.
1920
1921 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1922
1923         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
1924         arguments.
1925
1926 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1927
1928         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
1929         function is generics variance aware.
1930
1931 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
1932
1933         * security-core-clr.c (mono_security_core_clr_can_access_internals):
1934         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
1935
1936 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
1937
1938         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
1939           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
1940
1941         Code is contributed under MIT/X11 license.
1942
1943 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1944
1945         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
1946         on a GTD.
1947
1948 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1949
1950         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
1951         return a point to a wrapper specific info structure describing the wrapper.
1952         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
1953  
1954 2010-01-18  Mark Probst  <mark.probst@gmail.com>
1955  
1956         * sgen-gc.c: Make minor collection section allowance adaptive,
1957         depending on the amount of memory reclaimed in the last major
1958         collection.  If more memory was reclaimed (i.e. more garbage
1959         produced), do the next collection earlier.
1960
1961 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1962
1963         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
1964         to itself.
1965
1966         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
1967         the token as parameter.
1968
1969         * verify-internals.h: Ditto.
1970
1971         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
1972
1973         Fixes #571460.
1974
1975 2010-01-18  Mark Probst  <mark.probst@gmail.com>
1976
1977         * sgen-gc.c: Make store_remset_buffer_index long.
1978
1979 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1980
1981         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
1982
1983         Fixes #569579.
1984
1985 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
1988         off precise marking if it is available.
1989         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
1990
1991 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
1994
1995         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
1996         pinned objects.
1997
1998         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
1999         to the array allocator.
2000
2001 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2004         result of mono_compile_method (), it already includes an ftnptr.
2005
2006 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2007
2008         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2009
2010 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2011
2012         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2013         hash value which doesn't depend on glib/eglib versions.
2014         (mono_metadata_type_hash): Use it.
2015
2016         * object.c (mono_method_get_imt_slot): Ditto.
2017
2018 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2019
2020         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2021         independently of the GTD.
2022
2023         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2024
2025         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2026         to the upper limit since instance_size includes this amount.
2027
2028         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2029
2030         Fixes #569544.
2031
2032 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2035         with static methods.
2036
2037         * object.c (build_imt_slots): Avoid asserting when static methods are
2038         encountered in an interface.
2039
2040 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2041
2042         * sgen-gc.c (to_space_expand): Fix assertion.
2043
2044 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2045
2046         * string-icalls.c: missing declaration fixes.
2047         * sgen-gc.c: portability fixes.
2048
2049 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2050
2051         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2052
2053         * class.c:
2054         * cominterop.c:
2055         * icall.c:
2056         * object.c: 
2057         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2058
2059 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2060
2061         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2062         it can fail loading the type.
2063
2064         * class.c: Add mono_class_inflate_generic_class_checked.
2065
2066         * class.c:
2067         * verify.c:
2068         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2069
2070 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * loader.c (mono_method_signature_checked): New internal function taking an
2073         MonoError argument.
2074
2075         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2076         Fixes build on rh 7.3.
2077
2078 2010-01-10  Aaron Bockover  <abockover@novell.com>
2079
2080         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2081         at runtime in the same way as on Windows, which yields a relocatable
2082         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2083         of the running mono process.
2084
2085         On TARGET_ARM, fallback () will always be executed.
2086
2087 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2088
2089         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2090
2091 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2092
2093         * class.c (mono_class_is_assignable_from_slow): Support variant
2094         generic delegates.
2095
2096         * class.c (mono_class_implement_interface_slow): Support types with
2097         variant generic arguments.
2098
2099 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2100
2101         * verify.c: Remove some code duplication.
2102
2103 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2104
2105         * object.c: Update docs.
2106
2107 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2108
2109         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2110
2111         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2112         fallback trampoline as well.
2113
2114         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2115         out argument that is set to TRUE if the match was direct. 
2116
2117         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2118
2119         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2120
2121 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2122
2123         * class.c: Add mono_class_interface_offset_with_variance function that does same
2124         as mono_class_interface_offset but takes variance into account.
2125
2126         * class-internal.h: Export mono_class_interface_offset_with_variance.
2127
2128         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2129
2130 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2131
2132         * object.c:
2133         * icall.c:
2134         * class.c: Add some FIXME for due to variant generic arguments.
2135
2136         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2137         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2138         the bitfield check fails.
2139
2140 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2143         to be easier to read and fix bugs in the case a non generic type implements a variant
2144         interface.
2145
2146         * class.c (mono_class_has_variant_generic_params): Make non static.
2147
2148         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2149         the private API.
2150
2151 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2152
2153         * assembly.c: fix MONO_PATH debug output.
2154
2155 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2156
2157         * culture-info-table.h : regenerated.
2158
2159 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2160
2161         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2162         types that are meant to not have a parent.
2163
2164 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2165
2166         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2167         from the image mempool, so it is not leaked.
2168
2169 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2172
2173 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2174
2175         * verify.c (verify_valuetype_layout_with_target): Fix case
2176         that can lead to infinite recursion. Fix bug #567861
2177
2178 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2179
2180         * pedump.c: Run code verifier even if image verification fails
2181         due to a failed type we. This allows more errors to be shown.
2182
2183 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2184
2185         * class.c (count_virtual_methods): Remove the assert and now
2186         fail properly.
2187         
2188         * class.c (setup_interface_offsets): This can fail now.
2189
2190         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2191         errors. Check setup_interface_offsets errors.
2192
2193         * class.c (setup_interface_offsets): Simplify the return error logic
2194         and remove class_init_ok.
2195
2196         Fixes #560327.
2197
2198 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2199
2200         * class.c (mono_class_init): Do class verification at the beginning. Add
2201         some asserts to avoid tripping into invalid memory.
2202
2203         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2204         g_error and a decent message.
2205
2206         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2207
2208         Fixes #567548.
2209
2210 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2213         as inline functions instead of defining them in mempool.c.
2214
2215         * metadata-internals.h (MonoImageSet): New structure representing a set of
2216         MonoImages, which own a collection of generic instances.
2217
2218         * metadata.c: Get rid of the global generic caches, instead assign each generic
2219         instance to the image set which consists of all the images referenced by the
2220         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2221         the memory used by generic instances to be allocated from a per image-set mempool
2222         later.
2223
2224 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2227
2228 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * appdomain.c (zero_static_data): Fix a warning.
2231
2232         * locales.c (construct_culture_from_specific_name): Applied patch from
2233         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2234         not found. Fixes #567900.
2235
2236 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2237
2238         * loader.c (mono_method_get_signature_full): Remove two asserts.
2239         Return NULL instead so that the verifier can handle both cases 
2240         gracefully.
2241
2242 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2243
2244         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2245         so we can properly fail types instead of crashing.
2246
2247         Fixes #567676.
2248
2249 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2250
2251         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2252         generic method.
2253
2254 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2255
2256         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2257
2258 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2261         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2262         we can't remove it from it since we don't hold the lock.
2263         (mon_new): Free the orphaned events here when a mon structure is added to the
2264         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2265         this down.
2266
2267 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2268
2269         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2270         as max stack might be zero.
2271
2272         Fixes #562320.
2273
2274 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2275
2276         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2277
2278         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2279         instances if the GTD did.
2280
2281         * class.c (mono_class_setup_properties): Ditto.
2282
2283         * class.c (mono_class_setup_events): Ditto.
2284
2285         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2286
2287         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2288         error setting.
2289
2290         * class.c (mono_class_init): Fail if GTD did.
2291
2292         * cominterop.c:
2293         * generic-sharing.c:
2294         * icall.c:
2295         * loader.c:
2296         * object.c:
2297         * verify.c: Properly handle failure of mono_class_setup_methods.
2298
2299 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2300
2301         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2302         mono_class_inflate_generic_method_full internal.
2303
2304         * class.c (inflate_generic_context): Now takes a MonoError argument.
2305
2306         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2307         errors.
2308
2309 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2310
2311         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2312         they cannot be patched. Partly fixes #564408.
2313
2314 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2315
2316         * metadata-internals.h, reflection.c: Use the
2317         MonoDynamicImage.handleref hash table only with unmanaged keys,
2318         and add a managed hash table handleref_managed for managed keys.
2319
2320 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2321
2322         * sgen-gc.c: Unset to-space bumper between collections.  It might
2323         become invalid due to degraded allocations.
2324
2325 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2326
2327         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2328         with the one from the original method.
2329
2330         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2331         compatibility.
2332
2333         * verify-internals.h: Add new function to the internal API.
2334
2335 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2336
2337         * culture-info-tables.h: regenerated it to include the Georgian culture.
2338
2339 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * sgen-gc.c: Include mono/utils/memcheck.h.
2342
2343         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2344         instead of the current domain, since the two might not match if this is called
2345         from the debugger.
2346
2347         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2348         domain which created this assembly.
2349
2350 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2353
2354 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2355
2356         * sgen-gc.c: Managed implementation of the specialized generic
2357         store write barrier.
2358
2359 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
2360
2361         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
2362         A private virtual newslot method is used to implement an interface method without exposing
2363         it to users. When querying for public instance methods, such method would hide a public one
2364         on a parent type.
2365
2366         Fixes #564379.
2367
2368 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2369
2370         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
2371         conventions.
2372
2373 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2374
2375         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
2376
2377 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2378
2379         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
2380         as they are no longer used.
2381         
2382          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
2383
2384         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
2385
2386 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2387
2388         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
2389         if the owner class has not been finished before returning reflection_info.      
2390
2391         Fixes #565127.
2392
2393 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
2396         param doesn't have custom attributes. Fixes #565117.
2397
2398         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
2399         #565120.
2400
2401 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2402
2403         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
2404
2405 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
2406
2407         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
2408         same amount done by a core-clr enabled runtime.
2409
2410 2009-12-15  Marek Habersack  <mhabersack@novell.com>
2411
2412         * appdomain.c (mono_make_shadow_copy): make sure access mode of
2413         the target files is reset to writable by owner and readable by
2414         everyone else to prevent problems when updating shadow copies of
2415         files whose source is read-only. Fixes bug #556884
2416
2417 2009-12-15  Mark Probst  <mark.probst@gmail.com>
2418
2419         * class.c (mono_generic_class_get_class): Allocate the generic
2420         class via malloc again, so that it can be freed when any one of
2421         the images of its constituent types is closed.
2422
2423         * metadata.c: When closing an image, don't free generic insts and
2424         generic classes right away, but put them into a list for later
2425         freeing.
2426
2427         * image.c, metadata-internals.h: Store the free list and in the
2428         second pass of closing an image, free it.
2429
2430 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
2433
2434         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
2435         types in type_hash.
2436
2437         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
2438
2439 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2440
2441         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
2442         user type.
2443
2444         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
2445         is used.
2446
2447 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2448
2449         * verify.c (mono_method_verify): The Unused opcodes produce an
2450         InvalidProgramException on .NET
2451
2452 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
2453
2454         * loader.c (mono_method_get_header): Move assert after the verifier
2455         has been called on the method header.
2456
2457 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2458
2459         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
2460
2461         * appdomain.c: Bump corlib version.
2462
2463 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2464
2465         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
2466         types as well since otherwise generic instances would not return UT as arguments but
2467         their undelying system type.
2468
2469         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
2470         to reflect the fact that they can have now multiple different types.
2471
2472         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
2473
2474         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
2475
2476         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
2477
2478         * reflection.c (mono_reflection_register_with_runtime): Init super types
2479         if the image is not dynamic.
2480
2481         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
2482         check if the generic type definition is a TypeBuilder.
2483
2484         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
2485         doesn't belong to a dynamic image, skip initialization.
2486
2487         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
2488         base definition is not a dynamic type.
2489
2490 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2491
2492         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
2493         mono_profiler_string_allocation
2494
2495         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
2496         if string profiling is enabled, call
2497         mono_profiler_string_allocation
2498
2499         * profiler.h: added two MonoProfileFlags -
2500         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
2501         installation functions for the hooks below.
2502
2503         * profiler-private.h, profiler.c: added two hooks:
2504         mono_profiler_string_allocation called whenever a string is
2505         allocated by InternalAllocateStr and mono_profiler_iomap called
2506         whenever IOMAP code performs an adjustement on a file path.
2507
2508 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
2509
2510         * boehm-gc.c: fixed race condition while getting the target of a
2511         disappearing link (bug #522233).
2512
2513 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2514
2515         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
2516         the error.
2517
2518 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
2519
2520         * reflection.c: Add mono_reflection_register_with_runtime icall to
2521         allow a MonoGenericClass to register itself as the managed mirror of
2522         a given generic instance.
2523         This is a temporary workaround until all MGC instantiation happens in
2524         managed code.
2525
2526         * object-internals.h: Ditto.
2527
2528         * icall-def.h: Ditto.
2529
2530 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2531
2532         * sgen-gc.c (find_in_remsets): Also search the generic store
2533         remsets.
2534
2535 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2536
2537         * sgen-gc.c: Don't access class names in debugging code when
2538         unloading a domain, because they might not be valid anymore.
2539
2540 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2541
2542         * domain.c, domain-internals.h: New function mono_domain_unset().
2543
2544         * appdomain.c (unload_thread_main): Detach the thread again at the
2545         end.
2546
2547         * threads.c: When a thread exists or is detached, unset its domain
2548         so that it's NULL when, for example, a pthread destructor runs.
2549
2550         * sgen-gc.c: Assert that there is no domain set after a thread is
2551         done.
2552
2553 2009-12-10  Mark Probst  <mark.probst@gmail.com>
2554
2555         * class.c (mono_generic_class_get_class),
2556         metadata.c (free_generic_class): Allocate generic MonoClass's from
2557         the image mempool, not via malloc.  The problem with malloc is
2558         that when unloading a domain those classes are freed before
2559         clearing the heap and SGen needs the classes.  Rewriting the
2560         unloading code to do the free later would be more work and there's
2561         no point in using malloc anyway.
2562
2563 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
2564
2565         * loader.c (mono_method_signature): Always call mono_loader_unlock 
2566         before returning.
2567
2568 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2569
2570         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
2571         user string blobs.
2572
2573         * verify-internals.h: Add new function to the internal API.
2574
2575         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
2576         check if it's a valid string.
2577
2578         * object.c (mono_ldstr): Ditto.
2579
2580         Fixes #561943.
2581
2582 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2583
2584         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
2585         from a method before returning it. This is the expected behavior.
2586
2587 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2588
2589         * reflection.c (inflate_method): Handle the case of a regular system type.
2590
2591 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2592
2593         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
2594         gathering code.
2595
2596         * mempool.c, mempool-internals.h: New function
2597         mono_mempool_get_bytes_allocated().
2598
2599         * Makefile.am: sgen-pinning-stats.c added.
2600
2601 2009-12-08  Mark Probst  <mark.probst@gmail.com>
2602
2603         * sgen-gc.c (create_allocator): Only use the fast path if the
2604         object size is within the small object size limit.
2605
2606 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2607
2608         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
2609         possibly adding padding to sizeof (GCMemSection).
2610
2611 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2612
2613         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
2614         reference is not in the nursery.
2615
2616 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
2617
2618         * class.c (mono_class_from_typeref): Bounds check idx against the 
2619         assemblyref table.
2620
2621 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2622
2623         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
2624         through the potential roots, then sort the results and find the
2625         pinned objects from there.
2626
2627         * Makefile.am: sgen-pinning.c added.
2628
2629 2009-12-07  Mark Probst  <mark.probst@gmail.com>
2630
2631         * sgen-gc.c: Record generic stores in specialized remset buffers.
2632
2633 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2634
2635         * sgen-gc.c: Make pinned chunks the same size as major heap
2636         sections, and align them as well, so that we can check whether an
2637         object is in a pinned chunk or a major section in constant time.
2638
2639 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2640
2641         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
2642
2643 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2644
2645         * sgen-gc.c: Make all major heap sections the same size (currently
2646         128k) and allocate them on aligned addresses.  Small heap sections
2647         give us better granularity with pinned objects - we can free up
2648         much more memory.
2649
2650 2009-12-06  Mark Probst  <mark.probst@gmail.com>
2651
2652         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
2653         output removed.
2654
2655 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2656
2657         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
2658
2659         * mono/metadata/assembly.c: When opening an assembly image, pass the real
2660         names in addition to the runtime generated one.
2661
2662         * mono/metadata/image.h: Add a function to take the real name of the assembly
2663         image.
2664
2665         * mono/metadata/image.c: If a real name has been passed to load an assembly,
2666         use it instead of the runtime generated one.
2667
2668         Code is contributed under MIT/X11 license.
2669
2670 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
2673         before the other checks to prevent problems if the DateTime class is blittable.
2674         Hopefully fixes #559600.
2675
2676 2009-12-05  Mark Probst  <mark.probst@gmail.com>
2677
2678         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
2679         returns the largest string length that will not be put into the
2680         LOS.
2681
2682         * sgen-gc.c, gc-internal.h: New function that returns the largest
2683         object size that will not be put into the LOS.
2684
2685         * appdomain.c: Bump corlib version.
2686
2687 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2690
2691         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2692
2693 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * reflection.c (inflate_method): Fix signature.
2696
2697         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
2698         in managed code.
2699
2700 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
2703
2704 2009-12-03  Mark Probst  <mark.probst@gmail.com>
2705
2706         * sgen-gc.c: Abstract to-space handling.
2707
2708 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2709
2710         * loader.c (find_method_in_class): Ignore methods with broken signatures.
2711
2712         Fixes #559906.
2713
2714 2009-12-03  Mark Probst  <mark.probst@gmail.com>
2715
2716         * sgen-gc.c: Only add references from outside the nursery to
2717         within the nursery to the global remset list.
2718
2719 2009-12-03  Mark Probst  <mark.probst@gmail.com>
2720
2721         * appdomain.c (create_exceptions): Set the domain temporarily if
2722         necessary to avoid cross-domain references.
2723
2724 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2725
2726         * verify.c (get_stack_type): Return that the type is invalid instead of
2727         asserting.
2728
2729         * verify.c (mono_method_verify): Verify that all locals and arguments
2730         have valid stack types.
2731
2732         Fixes #559913.
2733
2734 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2735
2736         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
2737         bounds checking overflow aware.
2738
2739         Fixes #559910.
2740
2741 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2742
2743         * verify.c (do_invoke_method): Check for invalid method signatures.
2744
2745         Fixes #553450.
2746
2747 2009-12-02  Jb Evain  <jbevain@novell.com>
2748
2749         * appdomain.c (MONO_CORLIB_VERSION): bump.
2750         * icall-def.h (get_base_definition): renamed to get_base_method
2751         and add a boolean argument indicating we want the original
2752         method definition, or the immediate base method.
2753         * icall.c: apply the get_base_definition to get_base_method change.
2754
2755 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2756
2757         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
2758
2759         Fixes #558042.
2760
2761 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
2762
2763         * class.c: remove asserts for invalid type token in
2764         mono_class_name_from_token(), mono_assembly_name_from_token() and
2765         mono_class_create_from_typedef () (fixes bug #553318).
2766
2767 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
2768
2769         * metadata.c, class.c, loader.c: remove assert after bsearch() for
2770         incorrect assemblies (bug #553322).
2771
2772 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2773
2774         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
2775
2776         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
2777
2778         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
2779
2780         * class.c (inflate_generic_context): Ditto.
2781
2782         * loader.c (method_from_methodspec): Ditto.
2783
2784         Fixes #558230.
2785
2786 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2787
2788         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
2789
2790         * class.c (mono_class_create_from_typespec): Ditto.
2791
2792         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
2793
2794         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
2795
2796         Fixes #558184.
2797
2798 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
2799
2800         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
2801
2802         * verify.c (verify_delegate_compatibility): Ditto.
2803
2804         * verify.c (do_newobj): Ditto.
2805
2806         Fixes #558046.
2807
2808 2009-12-02  Mark Probst  <mark.probst@gmail.com>
2809
2810         * sgen-gc.c: Use a gray queue instead of requiring that gray
2811         objects are in a contiguous region.
2812
2813         * sgen-gray.c: The gray queue implementation.
2814
2815         * Makefile.am: sgen-gray.c added.
2816
2817 2009-12-02  Mark Probst  <mark.probst@gmail.com>
2818
2819         * appdomain.c: When unloading a domain, zero its static data and
2820         perform a minor collection when using SGen.  That will get rid of
2821         all the remsets pointing into that domain's static data.
2822
2823         * sgen-gc.c: Allow remsets into static data.  By doing this we
2824         need less checks so we're more efficient.
2825
2826 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
2827
2828         * verify.c (mono_method_verify): Check for catch clauses with broken
2829         types.
2830
2831         Fixes #558465.
2832
2833 2009-12-01  Jb Evain  <jbevain@novell.com>
2834
2835         * class.c (make_generic_param_class): set the namespace of
2836         the generic parameter class from its owner, if available.
2837
2838 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
2839
2840         * verify.c (code_bounds_check): Do proper overflow checking.
2841
2842         * verify.c (mono_method_verify): The number of switch entries is
2843         an unsigned int. Properly bounds check it.
2844
2845         Fixes #558594.
2846
2847 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
2848
2849         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
2850         mono_metadata_method_has_param_attrs which only checks if a given param
2851         list has a non zero flags entry.
2852
2853         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
2854         to inform how many params should we expect to decode.
2855
2856         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
2857         as it's faster than mono_metadata_get_param_attrs.
2858
2859         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
2860         add mono_metadata_method_has_param_attrs.
2861
2862 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
2863
2864         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
2865         failures.
2866
2867         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
2868         is -1 but its class is broken.
2869
2870         Fixes #558522.
2871
2872 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
2873
2874         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
2875         for parameter overflow.
2876
2877         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
2878         of mono_metadata_get_param_attrs.
2879
2880         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
2881         API.
2882
2883         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
2884
2885 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
2886
2887         * class.c (mono_class_setup_fields): Check for fields with broken types.
2888
2889         Fixes #558741.
2890
2891 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
2892
2893         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
2894         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
2895         its TypeBuilder::CreateType ().
2896
2897         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
2898         if not needed.
2899
2900         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
2901         to make setup_interface_offsets happy.
2902
2903         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
2904         compilation now works.
2905
2906 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * appdomain.c (create_exceptions): New helper function extracted from
2909         mono_runtime_init () to precreate objects used during exception handling.
2910         (mono_runtime_init): Call it.
2911         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
2912
2913 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2914
2915         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
2916         compilation until the proper one is found.
2917
2918 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * class.c (mono_class_setup_vtable_general): Cache the result of
2921         get_virtual_methods () since it can be slow because of the metadata
2922         optimization.
2923
2924         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
2925         from a MonoValueHashTable for now, since the later is based on an earlier
2926         version of hpj's internal probing code and seems to have serious collision
2927         issues.
2928
2929         * loader.c (mono_get_method_full): Update after the change above.
2930
2931 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
2934
2935 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
2936
2937         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
2938         the GTD instead of the DGC instead of crashing.
2939
2940         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
2941         required. Inflate fields if needed.
2942
2943         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
2944         finished. Renamed.
2945
2946 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
2947
2948         * class.c (check_interface_method_override): Check for NULL signatures and fail
2949         the type.
2950
2951         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
2952
2953         Fixes #553428.
2954
2955 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
2958         the MONO_METHOD_FLAGS column instead of decoding the whole row.
2959
2960 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
2961
2962         * loader.c (field_from_memberref): Resolve the class first then the field
2963         signature. Remove a lot of duplicated code and make sure we don't pass valid
2964         values to mono_loader_set_error_field_load.
2965
2966         Fixes #553306.
2967
2968 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
2969
2970         * class.c (inflate_generic_type): Change code to use new signature of
2971         mono_error_set_bad_image.
2972
2973         Fixes #558124.
2974
2975 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
2976
2977         * verify.c (mono_method_verify): Don't free ctx.params items if 
2978         we aborted while inflating the ctx.locals. Complete previous fix
2979
2980 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
2981
2982         * verify.c (mono_method_verify): Use the uninflated type name, 
2983         when the inflated is null, to report errors. Also take care when
2984         freeing, not to free everything since, in case of an error, some
2985         stuff would be copies (i.e. not allocated by the function itself)
2986         Fix bug #558145
2987
2988 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
2989
2990         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
2991         or overflow. The caller must have done this check explicitly. This guard us
2992         from accessing invalid memory.
2993
2994         * verify.c (do_push_static_field): Check for stack overflow.
2995
2996         Fixes #553333.
2997
2998 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
2999
3000         * loader.c (find_method_in_class): Don't crash if the signature cannot
3001         be resolved.
3002
3003         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3004         of asserting for the case of invalid params.
3005
3006         Fixes #553304.
3007
3008 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3009
3010         * image.c (mono_image_load_module): Fix crash when a bad assembly
3011         has no module at all (fix bug #553412) and also replace the 
3012         g_assert with a return NULL (documented return value for failure)
3013
3014 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3017
3018 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3019
3020         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3021         file attribute to managed code and avoid doing the mask/attribute
3022         checks here. 
3023
3024 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3025
3026         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3027         the managed world.
3028
3029         * icall-def.h: New entry points.
3030         
3031 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3032
3033         * process.c: Don't put references to managed objects into a
3034         g_ptr_array.
3035
3036 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3037
3038         * class.c (can_access_internals): Allow CoreCLR to participate in
3039         allowing (or not) [InternalsVisibleTo] between assemblies.
3040         * security-core-clr.c|h: Make sure that only trusted code (a 
3041         superset of platform code) can access the internals of platform
3042         code.
3043
3044 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3045
3046         * reflection.c: use the correct base class to get the virtual method
3047         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3048
3049 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3050
3051         * security-core-clr.c (get_caller_no_reflection_related): 
3052         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3053         it's still reflection and must be filtered correctly.
3054
3055 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3056
3057         * object.c (compute_class_bitmap): Fix for large bitmaps.
3058
3059 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3060
3061         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3062
3063         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3064         koush@koushikdutta.com). Disable GC_no_dls on android.
3065
3066 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3067
3068         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3069         tlab_next points outside the TLAB because the allocator was
3070         interrupted.
3071
3072 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3073
3074         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3075
3076 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3077
3078         * object-internals.h: Change signature for mono_string_to_utf8_image.
3079
3080         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3081         argument.
3082
3083         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3084         exceptions due to mono_string_to_utf8.
3085
3086 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3087
3088         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3089
3090         * object.c (mono_remote_class): Make sure all resources are released before
3091         raising an exception.
3092
3093         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3094
3095 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3096
3097         * mono-perfcounters.c (network_get_impl): Change variable initialization
3098         ordering to fix potential memory leak in case of exceptions.
3099
3100         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3101         encoded strings.
3102         
3103 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3104
3105         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3106         variable initialization ordering to fix potential memory leak in case
3107         of exceptions.
3108
3109 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3112         needed.
3113
3114 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3115
3116         * appdomain.c: Fix shadow path code to better deal with exceptions.
3117
3118 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3119
3120         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3121         exception in the middle of the runtime code.
3122
3123 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3124
3125         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3126         leak memory with broken envvar value.
3127
3128 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3129
3130         * reflection.c (mono_reflection_setup_internal_class): Because
3131         nested classes are not added to the name cache, we must put them
3132         in the reflection_info_unregister_classes list.
3133
3134 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3135
3136         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3137         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3138         platform (trusted) code. Instead we return a TypeLoadException to
3139         be thrown later. This is the exception thrown by Silverlight 2 if
3140         a type, inside application (user) code is marked with [ComImport]
3141
3142 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3145         mono_is_debugger_attached () too.
3146
3147         * mono-debug.c (mono_is_debugger_attached): New helper function.
3148         (mono_set_is_debugger_attached): Ditto.
3149
3150 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3151
3152         * object-internals.h: Add mono_string_to_utf8_checked.
3153
3154         * object.c: Implement mono_string_to_utf8_checked.
3155
3156 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3157
3158         * class.c: Add missing check for load errors after every
3159         call to mono_class_setup_fields
3160
3161         Fixes #552282.
3162
3163 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3164
3165         metadata-verify.c (verify_tables_schema): Fix the error message.
3166
3167 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3168
3169         * metadata.c: Change event table schema to use TDOR for event type
3170         as this is what it's meant to be.
3171
3172         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3173         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3174         entry.
3175
3176         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3177         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3178         rows in MONO_TABLE_GENERICPARAM.
3179
3180         Fixes #552289.
3181
3182 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3183
3184         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3185         insertion.
3186
3187         * reflection.c (mono_reflection_setup_internal_class): Avoid
3188         registering a gc root the same MonoClass multiple times.
3189         Don't register nested types on the global scope as they should
3190         not be available there.
3191
3192 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3193
3194         * culture-info-tables.h: regenerated.
3195
3196 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3197
3198         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3199
3200 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3201
3202         * string-icalls.c|h: Remove string internal calls that are not 
3203         used anymore by the class libraries.
3204         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3205         which is not used in the class librairies.
3206         * icall-def.h: Update tables.
3207
3208 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3209
3210         * class.h: Move mono_class_inflate_generic_type_checked...
3211
3212         * class-internals.h: to here and make it internal. We don't want to
3213         further expose MonoGenericContext. 
3214
3215 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3216
3217         * verify.c (mono_method_verify): Improve error message.
3218
3219 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3220
3221         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3222         the token is already properly encoded. Fixs 4.0 build.
3223
3224 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3225
3226         * locales.c (construct_number_format): Check if the number index is
3227         valid before trying to use it, if not, just return.
3228         
3229 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3232         since that loses the abort state. Fixes #539394.
3233
3234 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3235
3236         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3237         explicit this argument to the call signature.
3238         (mono_marshal_get_icall_wrapper): Ditto.
3239
3240 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3241
3242         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3243         to indicate which assembly to use when resolving a custom-mod.
3244
3245         Fixes handling of volatile fields used across assemblies as reported in #551513.
3246
3247 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3248
3249         * loader.c: Improve error messages.
3250
3251 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3252
3253         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3254         of interfaces. Fixes IKVM.
3255
3256         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3257
3258 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3259
3260         * verify.c (verifier_inflate_type): Return the inflated type on success.
3261
3262 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3265
3266         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3267
3268         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3269
3270         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3271         flag set.
3272
3273         * profiler.c: Add new profiler callbacks for runtime invoke.
3274
3275         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3276
3277 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3278
3279         * sgen-gc.c: Keep track of the reason for a major collection and
3280         write it to the heap-dump file.
3281
3282 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3283
3284         * threads.c: refactor the code that initializes the
3285         thread_start_args into a reusable function and use this in the two
3286         methods that start up threads.
3287
3288 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3291         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3292
3293 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3294
3295         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3296         Until now, we only had the per-cpu(core) counters.
3297
3298 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3299
3300         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3301         mono_gc_get_suspend_signal(), which returns the suspend signal
3302         number used by the GC.
3303
3304 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3305
3306         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3307
3308         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3309         signalling start_notify.
3310
3311 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3312
3313         * appdomain.c: do not test the st_mode field for shadow-copies.
3314         Fixes bug #545276.
3315
3316 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3317
3318         * threadpool.[ch]: added hooks for thread start/finish and item
3319         processing begin/end. For monotouch use only.
3320
3321 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * threads.c (mono_thread_get_name): New helper function.
3324
3325         * reflection.c (resolve_object): Set handle_class for strings too.
3326         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3327         a cattr blob into a set of arrays and structures without creating the custom
3328         attributes themselves.
3329         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3330
3331         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3332
3333         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3334         function.
3335
3336 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * verify.c: Replace calls to mono_class_inflate_generic_type with
3339         mono_class_inflate_generic_type_checked. Fixes #480005.
3340
3341 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3342
3343         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3344         object since not all paths lead to callees initing it.
3345
3346 2009-10-23  Alp Toker  <alp@nuanti.com>
3347
3348         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3349         header and should not be shipped:
3350
3351         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3352         which is specific to the mono build. Not going to work.
3353
3354 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3355
3356         * security-manager.c: Report if core-clr is active from
3357         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
3358         to allow Moonlight BCL to behave appropriately (both in browser
3359         and outside, e.g. smcs)
3360
3361 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3362
3363         * mono-config.c: ignore UTF-8 BOM and report parser errors.
3364         Fixes bug #549108.
3365
3366 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3367
3368         * class.c: fix typo.
3369
3370 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
3371
3372         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
3373         a MonoError parameter.
3374
3375         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
3376         version that can does proper error handling.
3377
3378         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
3379
3380         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
3381
3382         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
3383
3384 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3385
3386         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
3387         NO_UNALIGNED_ACCESS is defined.
3388
3389 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * marshal.c (mono_string_builder_to_utf16): Applied patch from
3392         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
3393         Fixes #549173.
3394
3395 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3396
3397         * sgen-gc.c: Shorten sections whenever possible.
3398
3399 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3400
3401         * sgen-gc.c: Use our portable semaphore #defines.
3402
3403 2009-10-22  Mark Probst  <mark.probst@gmail.com>
3404
3405         * sgen-gc.c: A debug option for dumping the heap layout to a file
3406         after each collection.
3407
3408 2009-10-21  Mark Probst  <mark.probst@gmail.com>
3409
3410         * sgen-gc.c: Make managed write barriers atomic via
3411         thread-restarts.
3412
3413 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3414
3415         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
3416         methods. Fixes #543021.
3417
3418 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3419
3420         * socket-io.[ch]: fix VS build.
3421
3422 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
3423
3424         * icall-def.h:
3425         * socket-io.[ch]: implemented SendFile.
3426
3427 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
3428
3429         * class.c (mono_class_create_from_typedef): Initialize class->element_class
3430         before the interfaces to avoid crashes later if class initialization fails.
3431         Fixes #548417.
3432
3433         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
3434         Fixes #548276.
3435
3436 2009-10-20  Marek Safar  <marek.safar@gmail.com>
3437
3438         * domain.c: Bump 4.0 version.
3439
3440 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3441
3442         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
3443         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
3444         check since 'pubkey' can't be NULL at this stage
3445         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
3446         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
3447         initialization of 'iter'
3448
3449 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
3450
3451         * cominterop.c : Search the interface parts of vtable to find 
3452           method matches.  Fixes 547030.
3453
3454         Code is contributed under MIT/X11 license.
3455
3456 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
3457
3458         * marshal.c: BeginInvoke cannot be called on multicast delegates with
3459         multiple targets. Fixes bug #574426.
3460
3461 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3462
3463         * profiler.h: Put here the definition of
3464         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
3465         (and fix the build...).
3466
3467 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3468
3469         * profiler.c, profiler.h, profiler-private.h:
3470         Added support for different ways of getting call chains in stat mode.
3471
3472 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3473
3474         * object.c, object-internals.h: New function for computing the
3475         size of an array, factored out of mono_array_new_full().  Use
3476         SGen's functions for allocating arrays and vectors.
3477
3478         * sgen-gc.c, gc-internal.h: Special functions for allocating
3479         arrays and vectors without race conditions.  A managed array
3480         allocator method.
3481
3482         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
3483
3484 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3485
3486         * object.c, object.h, icall.c: Write barriers do the copying now,
3487         as well, so no need for an additional memcpy.
3488
3489         * sgen-gc.c: Lock when storing remsets.  Do the memory
3490         copying/moving in the write barriers.
3491
3492         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
3493
3494         * reflection.c: Added an assert.
3495
3496 2009-10-12  Mark Probst  <mark.probst@gmail.com>
3497
3498         * threads.c, process.c: A few missing write barriers.
3499
3500 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
3501
3502         * mono-perfcounters.c, mono-perfcounters-def.h: Add
3503         network performance counters for bytes sent per second, bytes
3504         received per second, and bytes total per second.
3505
3506         Code is contributed under MIT/X11 license.
3507
3508 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3509
3510         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3511         Fix warning.
3512
3513 2009-10-09  Mark Probst  <mark.probst@gmail.com>
3514
3515         * threads.c, object-internals.h, object.c: Move code for
3516         transferring an object to a different domain (via
3517         serialization/remoting) to object.c.
3518
3519         * object.c (call_unhandled_exception_delegate): If the exception
3520         is in a different domain than the delegate, transfer the exception
3521         to that domain.
3522
3523 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
3524
3525         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
3526         Fixes #322934.
3527
3528 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3529
3530         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
3531
3532 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3533
3534         * object.c (mono_method_return_message_restore): Handle the case
3535         where the argument is an instance of a generic type.  Fixes
3536         #544446.
3537
3538 2009-10-06  Mark Probst  <mark.probst@gmail.com>
3539
3540         * object.c (set_value): Write barrier fix - we must pass the
3541         count, not the size.
3542
3543 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
3544
3545         * domain.c (mono_init_internal): Print a useful error message when encountering
3546         an old mscorlib, instead of crashing. Fixes #544307.
3547
3548 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * appdomain.c (copy_app_domain_setup): Fix a warning.
3551
3552         * debug-helpers.c (dis_one): Ditto.
3553
3554 2009-10-04  Mark Probst  <mark.probst@gmail.com>
3555
3556         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
3557         into the new domain, instead of referencing the original one.
3558
3559         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
3560         non-static.
3561
3562         * appdomain.c: Corlib version bump.
3563
3564 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3565
3566         * threadpool.c: one more...
3567
3568 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3569
3570         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
3571         threads to die because we're shutting down. delgate5.exe works again.
3572
3573 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
3574
3575         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
3576           ccw_interface_hash table when a ccw is finalized.
3577
3578         Code is contributed under MIT/X11 license.
3579
3580 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3581
3582         * assembly.c, domain.c, image.c, metadata-internals.h: Split
3583         domain and image unloading into two steps.  We must do this
3584         because clearing the domain in SGen requires the class metadata to
3585         be intact, but we need to free the mono_g_hash_tables in case a
3586         collection occurs during domain unloading and the roots would trip
3587         up the GC.
3588
3589 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3590
3591         * object-internals.h: Remove serialized culture fields from
3592         MonoInternalThread.
3593
3594         * icall-def.h, thread-types.h, threads.c: Remove serialized
3595         culture icalls.
3596
3597         * appdomain.c: Corlib version bump.
3598
3599 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3600
3601         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
3602         Fixes #543133.
3603
3604 2009-09-30  Mark Probst  <mark.probst@gmail.com>
3605
3606         * sgen-gc.c: Try to shorten the new section after a major
3607         allocation to avoid ever-growing sections.
3608
3609 2009-10-13  Martin Baulig  <martin@ximian.com>
3610
3611         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
3612         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
3613         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
3614         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3615
3616         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
3617
3618 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
3619
3620         * threadpool.c: fixed the order in which 'completed' and the wait
3621         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
3622         No need to use the wait_handle field of ASyncCall. Make sure the
3623         threadpool is active when adding a job or queueing an idle thread.
3624
3625 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
3628
3629         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
3630         when using --compile-all.
3631
3632 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3633
3634         * metadata.c (free_generic_class): Unregister the field_objects
3635         roots if we're using SGen.
3636
3637 2009-09-27  Mark Probst  <mark.probst@gmail.com>
3638
3639         * reflection.c (mono_dynamic_image_free): Deregister the GC root
3640         for GenericParamTableEntry.gparam.
3641
3642 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3643
3644         * marshal.c: don't create the handle when calling. It is created later
3645         if needed.
3646
3647 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3648
3649         * sgen-gc.c: Warning fixes.
3650
3651 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3652
3653         * sgen-gc.c: New debug option "xdomain-checks", which scans the
3654         whole heap for cross-domain references before each collection.
3655
3656         * sgen-scan-object.h: The scan action can now use SCAN to scan the
3657         object.
3658
3659         * threadpool-internals.h, threadpool.c: New function
3660         mono_thread_pool_is_queue_array() for checking whether a given
3661         array is used as a (cross-domain) queue by the thread pool code.
3662
3663 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3664
3665         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
3666         searches the whole heap for objects containing a specific
3667         reference.  Only for debugging.
3668
3669 2009-09-26  Mark Probst  <mark.probst@gmail.com>
3670
3671         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
3672
3673         * icall-def.h, threads.c, threads-types.h: New icalls for copying
3674         byte arrays between domains.
3675
3676 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3677
3678         * threadpool.c:
3679         * class-internals.h:
3680         * mono-perfcounters-def.h:
3681         * mono-perfcounters.c:
3682         -There is a list of idle threads
3683         -Each of those idle threads wait on their own WaitHandle instead
3684         of all of them using the same semaphore. When a new work item is
3685         added, the job is assigned directly to an idle thread or a newly
3686         created one if possible and then the handle for that thread is
3687         signaled. Compare that to the current approach where all the
3688         threads in the pool compete to dequeue a job from the same
3689         queue.
3690         -New struct ThreadPool that brings together the bunch of static
3691         variable for each threadpool (IO and regular).
3692         -New performance counters: # of items added and its rate per
3693         threadpool. The rate will be used later, perhaps together with
3694         other perf. counters, to decide when idle threads should exit.
3695
3696 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
3697
3698         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
3699         Fix typo on Windows build.      
3700         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
3701         
3702         Code is contributed under MIT/X11 license.
3703
3704 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3705
3706         * object-internals.h: The Thread class is split up into Thread and
3707         InternalThread now.  We have exactly one InternalThread per
3708         thread, and at most one Thread per appdomain per thread.  Most
3709         data is stored in InternalThread.  All InternalThread objects live
3710         in the root domain.
3711
3712         * class-internals.h: Add internal_thread_class to MonoDefaults.
3713
3714         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
3715         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
3716         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
3717         resulting from the split of the Thread class.
3718
3719         * gc-internal.h: Prototype for new function for checking whether a
3720         thread is the finalizer thread.
3721
3722         * appdomain.c: Corlib version bump.
3723
3724 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3725
3726         * appdomain.c|h: Add a mono_domain_try_unload method which is
3727         equivalent to mono_domain_unload, except that it returns an exception
3728         instead of throwing it. Make mono_domain_unload use the
3729         mono_domain_try_unload method to avoid code-duplication.
3730
3731 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
3734         a problem.
3735
3736 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
3739         aborting when a conversion is not implemented.
3740
3741 2009-09-23  Miguel de Icaza  <miguel@novell.com>
3742
3743         * verify.c: when comparing culture strings, use g_ascii_strcmp
3744
3745         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
3746         when comparing public key tokens to use memcmp on 16 bytes.   I do
3747         not believe this ever worked as advertised in the past.
3748
3749         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
3750         which would have always failed earlier.
3751
3752 2009-06-25  Miguel de Icaza  <miguel@novell.com>
3753
3754         * gc.c: Raise a NullArgumentException if the object passed is
3755         null.
3756
3757 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * image.c (mono_image_close): Atomically decrement the reference count and
3760         remove the image from the hash tables, to prevent another thread from seeing a
3761         dying MonoImage. Fixes #541194.
3762
3763 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3764
3765         * threadpool.c: actually use the minimum number of 'completion ports'
3766         (for us is just a potential worker thread).
3767
3768 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3769
3770         * threadpool.c: remove ares_htable. It does not make sense any more
3771         since the same objects are now stored in GC-tracked arrays while they are
3772         in the queue.
3773
3774 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3775
3776         * threadpool.c: increase the minimum length of the queues to 128.
3777         Remove warning.
3778
3779 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3780
3781         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
3782         return the modified signature used by string ctors.
3783
3784 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
3787         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
3788         method, to be used by full-aot.
3789
3790 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3791
3792         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
3793         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
3794         be known to be good.
3795
3796         * class.c (mono_class_init): Fail array types if their element type fails initialization
3797         as well.
3798
3799         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
3800         initialization, additionally we request the element_type vtable to be initialized as well.
3801
3802         This is fine and should not increase the working set in any meaningful way since it's reasonable
3803         to assume       that most code will create an array and eventually populate it, which will require the
3804         type's vtable to be initialized.
3805
3806         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
3807
3808 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
3809
3810         * normalization-tables.h : regenerated.
3811
3812 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3813
3814         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
3815         a leb128 encoding can take up to 5 bytes.
3816
3817 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
3818
3819         * class.c (verify_class_overrides): Remove useless argument.
3820
3821         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
3822         before interface enumeration as this is no longer required.
3823
3824 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
3825
3826         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
3827         used under mono_class_init context. This functions avoid any code path that
3828         calls mono_class_init, which leads it to be slow as some things like the interface
3829         bitmap are not available.
3830
3831         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
3832         of it's own broken version. Fixes the verifier part of #538588.
3833
3834         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
3835         API.
3836
3837 2009-09-15  Mark Probst  <mark.probst@gmail.com>
3838
3839         * class.c (mono_class_init): Always set an exception in a class if
3840         vtable setup fails.  Fixes #538577.
3841
3842         * generic-sharing.c: Raise an exception if mono_class_vtable()
3843         returns NULL.
3844
3845 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
3848         methods of vtypes, as they could be incorrectly shared with static methods
3849         taking an IntPtr argument.
3850
3851 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3852
3853         * domain.c:
3854         * object.c:
3855         * class-internals.h: renamed waithandle_class to
3856         manualresetevent_class.
3857         * marshal.c: propagate the exception if a remoting BeginInvoke call
3858         fails.
3859
3860 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3861
3862         * object.c: Properly handle vtable failures.
3863
3864 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3865
3866         * socket-io.c: Assert on vtable failure.
3867
3868         * mono-mlist.c: Assert on vtable failure.
3869
3870 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3871
3872         * marshal.c: Assert on vtable failure.
3873
3874 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3875
3876         * icall.c: Properly handle vtable failures.
3877
3878 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3879
3880         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
3881
3882 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3883
3884         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
3885
3886         * console-unix.c (do_console_cancel_event): Same.
3887
3888 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3889
3890         * class-internals.h: Add mono_class_vtable_full function that allows control
3891         if an exception should be raised or not.
3892
3893         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
3894         to do what its documentation say, that is to return NULL and set exception_type on
3895         failure.
3896
3897         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
3898         and change the code to honor it.
3899
3900 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * verify.c: Fix typo in error message.
3903
3904 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
3905
3906         * security-core-clr.c: Fix default_platform_check so it can run
3907         the runtime coreclr tests (without an infinite recursion when
3908         throwing an exception).
3909
3910 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3911
3912         object.c (mono_delegate_ctor_with_method): Guard against null method.
3913
3914 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3915
3916         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
3917         that should be replaced with error handling later.
3918
3919 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3920
3921         * marshal.c (mono_delegate_end_invoke): Fix warning.
3922
3923 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3924
3925         * loader.c (mono_field_from_token): Properly handle invalid
3926         dynamic tokens.
3927
3928 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3929
3930         * pedump.c (verify_image_file): Skip types that can't be
3931         decoded.
3932
3933 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3934
3935         * verify.c: Look for recursive valuetypes only against the
3936         type been initialized as this is a lot simpler and works.
3937
3938 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
3939
3940         * verify.c: Ensure that fields are properly loaded before
3941         checking them.
3942
3943 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3944
3945         * object.c (mono_object_get_virtual_method) : Call 
3946           mono_cominterop_get_invoke if the object is a COM object.
3947
3948         Code is contributed under MIT/X11 license.
3949
3950 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
3951
3952         * verify.c: Check for recursive valuetype definitions.
3953
3954 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3955
3956         Use inheritance-aware interface offsets. Inherited types use the same offsets
3957         of their parents. This reduce offset duplication in case more than one type in
3958         the inheritance tree explicitly implements the same interface.
3959
3960         This also removes a source of vtable bubbles found in #532409. An abstract type
3961         isn't required to provide abstract methods to all interfaces it implements, which
3962         resulted in a bubble with the previous scheme as the child would get a non-full
3963         vtable from its parent. We fail all concrete types with vtable bubbles, so this
3964         should be fixed.
3965
3966         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
3967         it's expected to not cause any significant increase beyond that.
3968
3969         * class.c (setup_interface_offsets): Compute super class iface offsets
3970         first to force sharing.
3971
3972         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
3973         dumping only the relevant ones.
3974
3975         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
3976         methods a new slot regardless if they belong to an interface or not. This allows
3977         an inherited type to override the iface method separately from the class one.
3978
3979 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3980
3981         * threadpool.c: make the Sleep() alertable to prevent delays exiting
3982         applications that take less than 2s to execute.
3983         Bug #524984 fixed.
3984
3985 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3986
3987         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
3988
3989         * object.c (mono_get_runtime_callbacks): New helper function to return
3990         the runtime callbacks.
3991
3992         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
3993         mono_get_runtime_build_info () as the display name.
3994         
3995 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3996
3997         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
3998         argument, since NEWARR expects a native int. Fixes #481559.
3999
4000 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4001
4002         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4003         against broken SRE methods.
4004
4005 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4006
4007         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4008         a NULL variable. Abort early on failure.
4009
4010 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4011
4012         * class.c (can_access_type): Fail visibility test for non nested
4013         types with nested visibility.
4014
4015 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4016
4017         * assembly.c (parse_public_key): Avoid allocating (and not 
4018         freeing) the public key array when it's not requested by the 
4019         caller.
4020         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4021         ves_icall_System_Threading_Thread_Thread_internal): Free 
4022         allocated memory on error.
4023
4024 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4025
4026         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4027
4028 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4029
4030         * class.c (mono_class_setup_fields): Remove duplicated local variable
4031         named gklass.
4032         Rename gklass to gtd to reflect the fact that it points to the generic
4033         type definition.
4034         Remove the duplicated call to mono_class_setup_fields on gtd and move
4035         the error check to the beginning.
4036
4037 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4038
4039         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4040         Remove cruft of the previous patch.
4041
4042 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * metadata-verify.c (verify_method_table): Check for abstract + final.
4045         Fixes #534175.
4046
4047 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4048
4049         * verify.c (verify_class_fields): Check for duplicate fields.
4050
4051 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4052
4053         * metadata-verify.c: Verify the typeref table for duplicates.
4054
4055 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4056
4057         This reverts r140936 and properly handles interfaces with static methods. The
4058         right fix is to ensure vtables without bubles which is an easier to verify
4059         constraint. We should avoid such special cases as of the reverted patch as those
4060         only make the runtime more brittle.
4061
4062         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4063         static methods on interfaces.
4064
4065         * class.c (setup_interface_offsets): Use the number of virtual methods when
4066         calculating interface offsets instead of the number of methods. This way we
4067         avoid bubles on the layout.
4068
4069 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4070
4071         * metadata-verify.c (verify_metadata_header): Some very smart
4072         obfuscators like to add extra stream headers. Ignore them.
4073
4074 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4077         methods correctly.
4078
4079 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4080
4081         * metadata-verify.c: Verify for duplicated types.
4082
4083 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4084
4085         * metadata-verify.c (verify_typedef_table): Verify for nested types
4086         without an entry on the nested class table.
4087
4088 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4091         <tom_hindle@sil.org>. Add locking around hash table accesses.
4092
4093 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4094
4095         * verify.c (mono_verifier_verify_class): Verify all interface if
4096         really are interfaces. Fixes #534184.
4097
4098 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4099
4100         * pedump.c: Initialize all types during metadata validation so we report
4101         errors only detected as part of class initialization.
4102
4103 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4104
4105         * metadata-verify.c (verify_method_table): PInvoke requires method to
4106         be static. Fixes #534189
4107
4108 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4111         being NULL.
4112
4113 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4114
4115         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4116         for holes or bad methods. Fixes #525314.
4117
4118 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4119
4120         * class.c (setup_interface_offsets): Don't allocate slot
4121         for the same interface multiple times. This creates bubbles
4122         that waster space and make vtable verification harder.
4123
4124         The same interface get a slot multiple times since we need
4125         to get the closure of all implemented interfaces, which means
4126         the same interface is reported multiple times.
4127
4128 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4129
4130         * verify.c (mono_verifier_verify_class): Don't check the fields
4131         of generic instances since the context on which they got expanded
4132         might lead to false positives.
4133
4134         Such thing happens when a generic type is inflated in the context
4135         of a generic method and the inflated type of a field turns into a
4136         generic method argument, which causes the checking code to think
4137         it's an invalid class when it's not.
4138
4139 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4140
4141         * verify.c (mono_type_is_valid_in_context): Verify if type
4142         is NULL and remove duplicate test.
4143
4144 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4145
4146         * verify.c (mono_verifier_verify_class): Check fields for
4147         invalid generic arguments.
4148
4149 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4150
4151         * class.c (verify_class_overrides): Verify if for static
4152         and non virtual methods.
4153
4154 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4155
4156         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4157         Check for errors after retrieving the vtable.
4158
4159 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4160
4161         * class.c (mono_class_setup_vtable_general): Verify
4162         if method overrides are valid before processing them.
4163
4164 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4165
4166         * marshal.c (mono_array_to_lparray): Fix minimal build with
4167         cominterop disabled.
4168
4169         * marshal.c (mono_free_lparray): Same.
4170
4171 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4172
4173         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4174         the hash function for the ares_htable.
4175
4176 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4177
4178         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4179         bit for assembly flags. MS is ok with it but there is no spec anywhere
4180         on its mean
4181
4182 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4183
4184         * class.c (mono_class_create_from_typedef): Emit profiler events
4185         in all cases.
4186
4187 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4188
4189         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4190         Release memory on failure.
4191
4192 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4193
4194         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4195         to the internal API.
4196
4197         * metadata.c (get_constraints): Use a single-linked table as we don't
4198         traverse it backward. Fail and return FALSE if only of the contraint types
4199         is not found.
4200
4201         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4202         to mono_metadata_load_generic_param_constraints except for having a return value.
4203         This has to be done since the later is part of the public API.
4204
4205         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4206         and fail the type.
4207
4208         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4209         and fail the method.
4210
4211 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4212
4213         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4214         with MS broken behavior of emmitting EH section sizes without the
4215         header size added.
4216
4217 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4218
4219         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4220         memory until we're sure that we'll need it. This avoids leaking for
4221         broken types or duplicated instantiation.
4222
4223 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4224
4225         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4226         mistake.
4227
4228 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4229
4230         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4231         and expected size calculation.
4232
4233 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4234
4235         * class.c (mono_class_get_field_idx): Add fixme for broken
4236         behavior for types with multiple fields with the same name.
4237         I would rather fix it, but have no idea on how to generate
4238         such artifact for testing.
4239
4240 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4241
4242         * verify.c (verifier_load_field): We should allow references to
4243         fields to be made using the generic type definition. It's up to
4244         the loader system to fail invalid ops.
4245
4246         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4247         are invalid.
4248
4249 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4250
4251         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4252
4253         * metadata-internals.h: Fix declaration of 
4254         mono_metadata_interfaces_from_typedef_full.
4255
4256         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4257         heap_alloc_result parameter that controls if the result should be
4258         g_malloc'd.
4259
4260         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4261         array be g_malloc'd and properly document this public API function.
4262
4263 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4264
4265         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4266         remove METHOD_HEADER_TINY_FORMAT1.
4267
4268         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4269
4270         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4271
4272         Both spec and MS uses only 2 bits to enumerate the kind of header.
4273         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4274         is superfluous, only used for tiny headers with odd code lengths.
4275
4276         This change also make sure that mono doesn't wronly interpret bit 2
4277         of fat header flags, which is currently reserved.
4278
4279 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4280
4281         * metadata.c (do_mono_metadata_parse_type): Do error
4282         checking for element types. Don't abort if presented
4283         with a broken type kind.
4284
4285 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4286
4287         * metadata.c (mono_metadata_parse_method_signature_full):
4288         Gracefully fail bad vararg signatures.
4289
4290 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4291
4292         * profiler.c:
4293         * class.c: Fix warnings for uninitialized variables.
4294
4295 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4296
4297         * icall.c: Fix _NSGetEnviron method declaration warning.
4298
4299 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4300
4301         * icall.c:
4302         * reflection.c: Make bitwise checks explicit.
4303
4304 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4305
4306         * debug-helpers.c:
4307         * marshal.c: Fix printf warnings.
4308
4309 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4310
4311         * reflection.c (encode_cattr_value): Fix a warning.
4312
4313 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4314
4315         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4316         of array bounds.
4317
4318 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4319
4320         * loader.c (mono_method_signature): Don't assert on broken
4321         signature. Print a more useful error message.
4322
4323 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4324
4325         * loader.c (mono_method_get_marshal_info): Assert if
4326         signature is invalid. Bounds check stores to the
4327         mspecs array;
4328
4329 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4330
4331         * loader.c (field_from_memberref): Fix warning.
4332
4333 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4334
4335         * loader.c (mono_method_get_param_names): Check if signature
4336         is null. Don't store beyond the size of the name array.
4337
4338 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4339
4340         * loader.c (mono_get_method_constrained): Check if signature
4341         is null.
4342
4343 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4344
4345         * loader.c (mono_loader_set_error_bad_image): Improve
4346         error messages.
4347
4348 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4349
4350         * loader.c (mono_get_method_full): Convert an assertion
4351         into a loader error.
4352
4353 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4354
4355         * class-internals.h, class.c: Better naming and documentation.
4356
4357 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
4358
4359         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
4360         obj is NULL.
4361
4362 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4363
4364         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
4365         parsing fails.
4366
4367 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4368
4369         * loader.c (mono_loader_error_prepare_exception): Handle missing field
4370         errors with no class set.
4371
4372         * loader.c (field_from_memberref): If the field signature is of the wrong
4373         type fail with a MissingFieldException instead of a BadImageException as
4374         this is the behavior observed on MS. 
4375
4376 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4377
4378         * loader.c (field_from_memberref): Don't crash if either the field
4379         signature or the typespec class are invalid.
4380
4381 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4382
4383         * verify.c (verifier_load_field): Don't allow field related
4384         ops to reference fields on generic type definition.
4385
4386 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4387
4388         * metadata-verify.c: Add new warning level for errors specified
4389         by ECMA 335 but that MS ignores.
4390
4391         * metadata-verify.c (verify_method_table): Make compiler controled
4392         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
4393         this check is safe because the end result will only be some visibility
4394         exceptions been thrown.
4395
4396 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
4397
4398         * verify.c (get_boxable_mono_type): Don't allow the
4399         use of the generic type definition on boxed type positions.
4400
4401         Fixes #531237.
4402
4403 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4404
4405         * threadpool.c: Make sure no cross-domain references remain in
4406         ares_htable or the arrays that are thrown away when resizing.
4407
4408 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4409
4410         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
4411         list of classes for which we have to unregister reflection_info
4412         with the GC and which are not in the namespace cache.
4413
4414         * reflection.c (mono_reflection_initialize_generic_parameter): Add
4415         the class to the list.
4416
4417 2009-08-14  Mark Probst  <mark.probst@gmail.com>
4418
4419         * domain.c (mono_domain_free): Unregister the GC roots in
4420         MonoDomain.
4421
4422 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4423
4424         * reflection.c (mono_reflection_type_get_handle): Fix typo.
4425
4426 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
4427
4428         * class.c: Add mono_class_get_field_from_name_full which does
4429         the same as mono_class_get_field_from_name but does check field
4430         signature as well.
4431
4432         * class-internals.h: Export mono_class_get_field_from_name_full as
4433         part of the internal API.
4434
4435         * loader.c (field_from_memberref): Search fields by name and signature
4436         as it's valid to have two fields with same name but different types.
4437
4438         Fixes #528055.
4439
4440 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
4443
4444         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
4445
4446         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
4447         System.Type.
4448
4449 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
4450
4451         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
4452
4453         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
4454
4455 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4456
4457         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
4458         to sgen-scan-object.h, which can be included and parameterized via
4459         macros.
4460
4461         * Makefile.am: sgen-scan-object.h added.
4462
4463 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4464
4465         * gc.c: #define GC_dont_gc if we're compiling with SGen.
4466
4467 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4468
4469         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
4470         before clearing a domain in the GC.
4471
4472 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4473
4474         * exception.c (mono_exception_from_name_domain): Actually create
4475         the exception in the specified domain.
4476
4477         * appdomain.c (mono_domain_create_appdomain_internal): Create the
4478         OutOfMemoryException a bit later so that the domain is inialized
4479         "enough" that it works.
4480
4481 2009-08-12  Mark Probst  <mark.probst@gmail.com>
4482
4483         * threads.c (thread_cleanup): Clean up the cached_culture_info
4484         array to prevent cross-domain references.
4485
4486 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4487
4488         * metadata.c: more documentation for MonoType accessors.
4489
4490 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
4491
4492         Fix incorrect size definitions where the tail array isn't a list
4493         of pointers
4494         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
4495         define size.
4496         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
4497         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
4498         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
4499
4500 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4501
4502         * reflection.h:
4503         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
4504
4505 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4506
4507         * metadata.c:
4508         * loader.c:
4509         * metadata-internals.h:
4510         * method-builder.c:
4511         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
4512
4513 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4514
4515         * cominterop.c:
4516         * metadata.c:
4517         * metadata.h:
4518         * loader.c:
4519         * marshal.c:
4520         * reflection.c: #define for sizeof in MonoType and
4521         MonoMethodSignature.
4522
4523 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4524
4525         * domain.c:
4526         * domain-internals.h: add and use #define's instead of sizeof()
4527         for MonoJitInfo and MonoJitInfoTable.
4528
4529 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4530
4531         * object.c:
4532         * class.h: use #define instead of sizeof() for MonoRemoteClass.
4533
4534 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4535
4536         * metadata.c:
4537         * metadata.h:
4538         * object.c:
4539         * class-internals.h:
4540         * generic-sharing.c:
4541         * marshal.c: use a #define instead of sizeof() for a few
4542         structures that use a zero-length array.
4543
4544 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4545
4546         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
4547         to handle inflated generic methods.
4548
4549         * appdomain.c: Bump corlib version.
4550
4551         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
4552         instances.
4553
4554         * reflection.c (fixup_method): Same
4555
4556         * reflection.c (resolve_object): Same.
4557
4558         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
4559         g_error and a decent message.
4560
4561 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
4562
4563         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
4564         from the object because it could not yet be available globally
4565         (it happens if the profiler tries to create a gchandle on the
4566         MonoThread object of a thread that is still registering itself
4567         with the runtime).
4568
4569 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
4570
4571         * reflection.c (mono_generic_class_get_object): Initialized the
4572         managed type arguments array.
4573
4574         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
4575
4576         * appdomain.c: Bump corlib version.
4577
4578 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
4581         #527902.
4582
4583 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4586         Avoid a crash if synch_cs is not set.
4587         
4588         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
4589         Handle the case when the handle is 0.
4590
4591         * appdomain.c: Bump corlib version.
4592
4593 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
4594
4595         * reflection.c (mono_type_get_object): Fix a warning.
4596
4597 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4598
4599         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
4600         descriptor here.  We assume it's already been computed.
4601
4602         * generic-sharing.c (instantiate_other_info): Compute the GC
4603         descriptor for info type MONO_RGCTX_INFO_KLASS.
4604
4605 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4606
4607         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
4608         type, so don't use MONO_OBJECT_SETREF to set a field.
4609
4610 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4611
4612         * gc.c: We were missing one case where invoking a finalizer would
4613         not reset the domain.  Also, in the finalizer thread loop, assert
4614         that we're in the root domain.
4615
4616 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4617
4618         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
4619         if the type is not an array.
4620
4621 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4622
4623         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
4624         method bound to the declaring type of the method. Raise an exception
4625         if the type is not a generic param.
4626
4627 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * class.c (print_unimplemented_interface_method_info): Print the
4630         full type name.
4631
4632         * class.c (mono_class_setup_vtable_general): When dealing with a
4633         generic instance first check if the generic type definition is
4634         not broken.
4635
4636 2009-02-11 Tom Hindke <tom_hindle@sil.org>
4637
4638         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
4639
4640         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
4641
4642         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
4643
4644         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
4645
4646         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
4647
4648         Code is contributed under MIT/X11 license
4649
4650 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4651
4652         * verify.c: Fix naming of stelem and ldelem.
4653
4654 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4655
4656         * generic-sharing.c: Replace the templates lock with the loader
4657         lock because of very hard to resolve deadlock issues.
4658
4659 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4660
4661         * icall.c (ves_icall_Type_GetMethodsByName): Use 
4662         mono_class_get_vtable_size () instead of accessing klass->vtable_size
4663         directly. Fixes #525338.
4664
4665         * class.c (mono_class_get_vtable_size): New helper function.
4666
4667         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
4668         the field belongs to the type. Fixes #525733.
4669
4670 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4671
4672         * sgen-gc.c: When we stop a thread and its stack top is not within
4673         its allocated stack (because it's in an altstack signal handler),
4674         restart it and stop it again, until it is.
4675
4676 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4677
4678         * sgen-gc.c: Take a thread's stack top and registers from the
4679         sigcontext in the suspend signal handler.
4680
4681         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
4682         stuff to sgen-archdep.h.
4683
4684         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
4685         caller, because have code in sgen-archdep.h to acquire that data.
4686
4687 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4688
4689         * profiler.c, profiler.h, profiler-private.h:
4690         Added support for keeping track of code chunks and buffers.
4691
4692 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
4693
4694         * metadata-verify.c: Fix endianness problems on decoding functions.
4695         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
4696
4697 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4698
4699         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
4700         schema for vectors and one dimension SZARRAY.
4701
4702 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4703
4704         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
4705         schema for vectors and one dimension SZARRAY.
4706
4707 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4708
4709         * icall-def.h, thread-types.h, threads.c: New separate icalls for
4710         Interlocked.(Compare)Exchange with object arguments, which invoke
4711         write barriers.
4712
4713 2009-07-26  Miguel de Icaza  <miguel@novell.com>
4714
4715         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
4716         passed invalid arguments.   Fixes another crasher in the
4717         Silverlight test suite.
4718
4719         * class.c (mono_class_array_element_size): Return 0 for the size
4720         of the class;  This fixes the crasher exposed by :
4721
4722         typeof (void).MakeArrayType ();
4723
4724         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
4725         if there is no method to dereference.    Put all the code that
4726         depends on this inside the if (method) block.
4727
4728         This fixes the crasher exposed by Microsoft's Silvelright CLR test
4729         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
4730
4731         With this change, we pass the test.
4732         
4733         * reflection.c (mono_reflection_sighelper_get_signature_local):
4734         Only dereference the assembly if it has been set.    Fixes a
4735         crasher exposed by #525328
4736
4737 2009-07-25  Mark Probst  <mark.probst@gmail.com>
4738
4739         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
4740         don't perform the store in mono_gc_wbarrier_generic_nostore().
4741         Remove the second argument (value), which is not needed.
4742
4743 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
4746         the build.
4747
4748         * boehm-gc.c: Ditto.
4749         
4750 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4751
4752         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
4753         not perform the store itself.  Introduce
4754         mono_gc_wbarrier_generic_nostore(), which is the same as
4755         mono_gc_wbarrier_generic_store(), except it doesn't perform the
4756         store.
4757
4758 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4759
4760         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
4761         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
4762         we still need the memcpy().
4763
4764 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4765
4766         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
4767         so that big arrays are handled correctly.  Always use
4768         safe_object_get_size() to calculate array object sizes, which
4769         takes bounds into account.
4770
4771 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4772
4773         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
4774         GC descriptor is computed before we use it.
4775
4776 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4777
4778         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
4779         write barrier if necessary.
4780
4781 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4782
4783         * icall-def.h, icall.c, thread-types.h: New separate icall for
4784         VolatileWrite(object&,object) that uses a write barrier.
4785
4786         * console-unix.c, file-io.c, icall.c, threads.c: Use write
4787         barriers in icalls which write to "ref" or "out" arguments.
4788
4789 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
4792         handler in a separate icall, to reduce the size of the wrappers.
4793
4794 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
4797
4798 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
4799
4800         * metadata-verify.c (parse_field): Allow byref field.
4801
4802         * metadata-verify.c (parse_locals_signature): Allow byref locals.
4803
4804         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
4805
4806 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
4807
4808         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
4809         Fixes #522784.
4810
4811 2009-07-20  Robert Jordan  <robertj@gmx.net>
4812
4813         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
4814         Fix invalid IL in valuetype handling (STOBJ must push the
4815         corresponding class). Fixes bug #523149.
4816
4817         Code is contributed under MIT/X11 license.
4818
4819 2009-07-20  Geoff Norton  <gnorton@novell.com>
4820
4821         * gc.c: Use proper semaphores where available on posix and darwin.
4822
4823 2009-07-19  Geoff Norton  <gnorton@novell.com>
4824
4825         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
4826
4827 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4828
4829         * refletion.c (is_sre_usertype): Change name to is_usertype and
4830         invert it's result so it returns true if the type is an user type
4831         and not the opposite.
4832
4833         * reflection.c (is_*_type): Change all of those to use new macro
4834         check_corlib_type_cached that cached the type lookup so we don't
4835         need to do string comparisons all the type. Changed the signature
4836         to take a MonoClass instead.
4837
4838         * reflection.c: Change mono_image_create_token and resolve_object
4839         to use is_sre_* functions.
4840
4841 2009-07-18  Mark Probst  <mark.probst@gmail.com>
4842
4843         * sgen-gc.c: Check for writes to the stack in the managed
4844         wbarrier as well.
4845
4846 2009-07-18  Mark Probst  <mark.probst@gmail.com>
4847
4848         * sgen-gc.c: When a thread is unregistered, don't free its remsets
4849         but put them on a list which is processed with the other thread's
4850         remsets.
4851
4852 2009-07-18  Mark Probst  <mark.probst@gmail.com>
4853
4854         * sgen-gc.c: Fix and enable the internal allocator instead of
4855         using malloc/free (which causes deadlocks).
4856
4857 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4858
4859         * refletion.c: Fix builds with SRE disabled by adding a minimal
4860         implementation of mono_reflection_type_get_handle.
4861
4862 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4863
4864         * refletion.c: Make mono_reflection_type_get_handle non static.
4865
4866         * object-internals.h: Export mono_reflection_type_get_handle.
4867
4868         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
4869         unmanaged handle using mono_reflection_type_get_handle.
4870
4871 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4872
4873         * refletion.c: Replace all reads of MonoReflectionType::type with
4874         calls to mono_reflection_type_get_handle. Only the functions that
4875         deal with constructing TypeBuilder::type have not been changed
4876         because they have to deal with NULL values.
4877
4878         This is a first step into supporting reflection types that don't
4879         map directly into their unmanaged counterpart.
4880
4881 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4882
4883         * metadata-verify.c (parse_locals_signature): Don't complain
4884         on signature with zero locals since MS generates it and doesn't
4885         bother with.
4886
4887 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * reflection.c (mono_image_get_array_token): Resolve return
4890         type using mono_reflection_type_get_handle.
4891
4892         * reflection.c (mono_image_get_array_token): Resolve array method
4893         parent type using mono_reflection_type_get_handle.
4894
4895 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * reflection.c (mono_image_basic_init): Applied patch from
4898         <Dax@daxxfiles.net>. Set the public key token from the assembly
4899         builder. Fixes #518909.
4900
4901         * appdomain.c: Bump corlib version.
4902
4903 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * class.c (mono_class_needs_cctor_run): Make this return false if
4906         the class has no cctor.
4907
4908 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4909
4910         * sgen-gc.c: When the minor GC needs to allocate a new section,
4911         invoke the major GC afterwards.
4912
4913 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
4914
4915         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
4916           Applying the window_style field to the SHELLEXECUTEINFO struct.
4917
4918         Code is contributed under MIT/X11 license.
4919
4920 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4921
4922         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
4923         locking earlier.  Fix it in the managed allocator by making sure
4924         that no thread is stopped there before the GC runs.  If we do stop
4925         a thread there, we restart it and let it run a but, until it stops
4926         somewhere else.
4927
4928         * gc-internal.h, gc.c: Function for getting the IP from a signal
4929         context via a function registered by mini.
4930
4931 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * object-internals.h (MonoIntPtr): New structure describing a boxed
4934         IntPtr.
4935
4936         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
4937         returns. Fixes #519953.
4938
4939         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
4940
4941 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4942
4943         * class-internals.h, generic-sharing.c: New RGCTX info type for
4944         getting a remoting invoke with check wrapper.
4945
4946 2009-07-07  Geoff Norton  <gnorton@novell.com>
4947
4948         * icall-def.h: Fix the enable-minimal build.
4949
4950 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
4951
4952         * object-internals.h: Add MonoReflectionDerivedType.
4953
4954         * reflection.c: Implement support for PointerType.
4955         Fixed tons of warnings.
4956
4957 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
4958
4959         * object-internals.h: Add MonoReflectionByRefType.
4960
4961         * reflection.c: Implement support for ByRefType.
4962
4963 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
4964
4965         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
4966
4967         * object-internals.h: Add MonoReflectionArrayType and
4968         mono_reflection_create_unmanaged_type.
4969
4970         * reflection.c: Implement support for ArrayType.
4971
4972 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
4973
4974         * metadata-verify.c (is_valid_method_header): Parse EH block
4975         flags correctly.
4976
4977 2009-07-03  Mark Probst  <mark.probst@gmail.com>
4978
4979         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
4980         processing the disappearing links, and process disappearing links
4981         in a loop until no new objects are copied.
4982
4983 2009-07-03  Mark Probst  <mark.probst@gmail.com>
4984
4985         * object.c (handle_enum): Invoke the write barrier when copying
4986         value type instances.
4987
4988         * sgen-gc.c: Register remsets for unmanaged write barriers only
4989         when the address written to is actually on the heap.  This makes
4990         set_value() in object.c work without requiring that the result be
4991         on the heap.
4992
4993 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
4994
4995         The runtime wrappers are all bound to a given type that must
4996         exist in the same image. For regular images we use the <Module>
4997         type, which is required to exist for all images.
4998
4999         The <Module> type can't be used for dynamic images because it
5000         might not exist at the time the wrapper is required, so we create
5001         a synthetic type to use instead.
5002
5003         The current code works because of the 2 stage setup of MonoClass,
5004         but once this is gone it will no longer work.
5005
5006         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5007
5008         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5009
5010         * object-internals.h: Export mono_image_set_wrappers_type icall
5011         as part of the internal API.
5012
5013         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5014         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5015
5016         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5017         image wrappers_type to the provided value.
5018
5019 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5020
5021         * appdomain.c (deregister_reflection_info_roots): No need
5022         to use the image lock here.
5023
5024 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5025
5026         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5027
5028 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * threads.c: Store the thread start argument in a hash table instead of
5031         registering it as a root, as libgc doesn't support unregistering roots
5032         under windows, leading to 'too many root sets' errors when many threads
5033         are created.
5034
5035         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5036         shutdown, they can still be referenced by the other dying objects.
5037         Fixes #514506.
5038
5039 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5040
5041         * socket-io.c: DontLinger does not allow LingerOptions.
5042
5043 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5044
5045         * metadata-verify.c: The spec doesn't mention that it's possible to add
5046         custom attribute to a generic parameter. Fixed.
5047
5048 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5049
5050         * class.c (inflate_generic_type): Don't crash while trying to output a message
5051         on why we're aborting.
5052
5053 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5054
5055         * socket-io.c: DontLinger can take an int or a boolean too.
5056
5057 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5058
5059         * gc.c: check for a null argument to SuppressFinalize () and
5060         ReRegisterForFinalize ().
5061
5062 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5063
5064         * loader.c (method_from_methodspec): Call into the verifier to check
5065         the signature.
5066
5067         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5068
5069         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5070         part of the internal API.
5071
5072 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5075         the signature.
5076
5077         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5078
5079         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5080         part of the internal API.
5081
5082 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5085         the signature.
5086
5087         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5088         blob verification.
5089
5090         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5091         part of the internal API.
5092
5093 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5094
5095         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5096         when doing basic verification. 
5097
5098         This check must be done since the runtime peeks into signatures in much
5099         more places than it does decoding so it makes sense to ensure that all
5100         pointers to blob objects are well formed.
5101
5102 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5103
5104         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5105         Use proper overflow dectection. Fix usage of it.
5106
5107 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5108
5109         * loader.c (field_from_memberref): Call into the verifier to check
5110         the signature.
5111
5112         * loader.c (mono_method_get_signature_full): Same.
5113
5114         * loader.c (method_from_memberref): Same.
5115
5116         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5117
5118         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5119         part of the internal API.
5120
5121 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5122
5123         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5124         or unloaded, still return an AsyncResult, but don't add it to the
5125         threadpool.
5126
5127 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5128
5129         * threads.c: fix missing colon when DEBUG is defined.
5130
5131 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5132
5133         * threadpool.c: Don't add new calls to a threadpool if the domain
5134         of the call is unloading or unloaded.  When dequeuing a job, null
5135         the reference in the queue.
5136
5137 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5138
5139         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5140         generation if an object was moved.
5141
5142 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5143
5144         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5145           parameters of type SAFEARRAY[VARIANT].
5146
5147         * reflection.c (encode_marshal_blob): Properly generate element type
5148           (SafeArraySubType marshal attribute option).
5149
5150         Code is contributed under MIT/X11 license.
5151
5152 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5153
5154         * reflection.c: in mono_method_clear_object () really ensure all the
5155         objects are removed.
5156
5157 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5158
5159         * loader.c (mono_method_signature): Call into the verifier to check
5160         the method signature.
5161
5162         * metadata-verify.c (verify_method_table): Move signature verification
5163         to verify_method_table_full.
5164
5165         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5166
5167         * verify-internals.h: Export mono_verifier_verify_method_signature as
5168         part of the internal API.
5169
5170 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5171
5172         * loader.c (mono_method_get_header): Call into the verifier to
5173         check the method header.
5174
5175         * metadata-verify.c: Add mono_verifier_verify_method_header.
5176
5177         * verify-internals.h: Export mono_verifier_verify_method_header as
5178         part of the internal API.
5179
5180 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5181
5182         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5183         check the field signature. Replace an assert with an explicit check.
5184
5185         * class.c (mono_class_setup_fields): Call into the verifier to check
5186         the field signature.
5187
5188         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5189
5190         * verify-internals.h: Export mono_verifier_verify_field_signature as
5191         part of the internal API.
5192
5193 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5194
5195         * class.c (mono_class_find_enum_basetype): Simplify this function
5196         by moving code outside of the loop and not decoding static fields.
5197
5198 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5199
5200         * metadata-verify.c (verify_typedef_table): Check the extends
5201         token here. Move to here a flags check from verify_typedef_table_full.
5202
5203 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5204
5205         * metadata-verify.c (is_valid_method_header): Fix a warning.
5206
5207         * metadata-internals.h (MonoImage): Remove the unused 
5208         static_rgctx_invoke_wrapper_cache.
5209
5210         * image.c marshal.c: Ditto.
5211
5212 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5213
5214         * image.c (do_mono_image_load): Enable table data verification.
5215
5216 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5217
5218         * metadata-verify.c (is_valid_constant): Fix nullref check.
5219
5220 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5221
5222         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5223
5224 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5225
5226         * sgen-gc.c: Managed allocation with pthreads TLS.
5227
5228         * threads.c, threads-types.h: Functions for the JIT to tell the
5229         runtime whether it supports the MONO_TLS opcode.
5230
5231 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5232
5233         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5234         without methods.
5235
5236 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * metadata-verify.c (is_valid_constant): Fix the string length check.
5239         Use safe overflow checking. Add decent error messages.
5240
5241 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5242
5243         * metadata-verify.c: Move remaininh blob checks to the offline
5244         verification path.
5245
5246 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5247
5248         * metadata-verify.c: Move more blob checks to the offline verification
5249         path.
5250
5251 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5252
5253         * object-internals.h : Adding interrupt_on_stop field.
5254
5255         * threads.c (mono_thread_request_interruption) : On Windows exit the
5256           thread if interrupt_on_stop is set.
5257
5258         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5259          Removing old interrupt logic and setting the interrupt_on_stop for the
5260          thread when calling accept.
5261
5262         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5263          setting the interrupt_on_stop for the thread when calling accept.
5264
5265         Contributed under MIT/X11 license.
5266
5267 2009-06-20  Martin Baulig  <martin@ximian.com>
5268
5269         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5270
5271 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5272
5273         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5274         running in no-exec mode.
5275
5276 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5277
5278         * metadata-verify.c (verify_method_table): Move header
5279         checking to verify_method_table_full.
5280
5281         * metata-verify.c (mono_verifier_verify_full_table_data):
5282         Call verify_method_table_full.
5283
5284 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5285
5286         * metadata-verify.c (verify_field_table): Move signature
5287         checking to verify_field_table_full.
5288
5289         * metata-verify.c (mono_verifier_verify_full_table_data):
5290         Call verify_field_table_full.
5291
5292 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5293
5294         * metadata-verify.c (verify_typedef_table): Move remaining
5295         stuff to verify_typedef_table_full.
5296
5297 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5298
5299         * metadata-verify.c: Kill is_corlib from VerifyContext.
5300         It is only used by the offline mode.
5301         So we better remove it from the runtime path.
5302
5303 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5304
5305         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5306         function that perform the offline metadata verification steps.
5307
5308         * metadata-verify.c (verify_typedef_table): Move some checks to
5309         verify_typedef_table_full and make it been called by new function
5310         mono_verifier_verify_full_table_data.
5311
5312         * pedump.c: Call mono_verifier_verify_full_table_data.
5313
5314         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5315         part of the internal API.
5316
5317 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5318
5319         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5320         check.
5321
5322         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5323         flags bits. SupportLastError was confused as bit 7 instead of 6.
5324
5325         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5326         to check against the module ref table instead of module.
5327
5328         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5329
5330         * pedump.c: Call mono_image_load_names.
5331
5332 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5333
5334         * image.c: Extract mono_image_load_names from do_mono_image_load.
5335
5336         * metadata-internals.h: Export mono_image_load_names as part of
5337         the internal API.
5338         
5339 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5340
5341         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5342         first, as it could reference data in the other caches.
5343
5344 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5345
5346         * metadata-verify.c: Finished with method header verification.
5347
5348 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5349
5350         * metadata-verify.c: Added more header verification code.
5351         Now only EH clauses are missing.
5352
5353 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5356         for return values.
5357
5358 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5359
5360         * metadata-verify.c: Initial method header verification.
5361
5362 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
5363
5364         * metadata-verify.c (verify_import_table): The IAT contents
5365         might end been patched by the windows DL when running with
5366         coree enabled.
5367
5368 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
5369
5370         * class.c (mono_class_from_typeref): If the enclosing type is not
5371         found return null instead of crashing. Fixes #508487.
5372
5373 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
5374
5375         * normalization-tables.h : updated to the latest unicode charcter
5376           data.
5377         * appdomain.c : bump corlib version.
5378
5379 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * class.c (mono_class_from_name): Fix support for assembly references
5382         in the EXPORTEDTYPE table. Fixes #511704.
5383
5384 2009-06-13  Geoff Norton  <gnorton@novell.com>
5385
5386         * domain.c: Ensure that mono_domain_assembly_open actually opens the
5387         assembly in the target domain.
5388
5389 2009-06-12  Robert Jordan  <robertj@gmx.net>
5390
5391         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
5392         because "this" of the managed signature has become an
5393         ordinary parameter in the unmanaged signature.
5394
5395 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
5398         field for owner-less generic containers.
5399
5400         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
5401         image field of the owner-less generic containers created here.
5402
5403         * metadata.c (mono_metadata_load_generic_params): Ditto, the
5404         contain is ownerless until the caller sets its owner.
5405
5406         * metadata.c (type_in_image): Handle owner-less generic containers
5407         correctly.
5408         
5409 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5410
5411         * image.c (mono_image_close): Support debug_assembly_unload for
5412         dynamic images too.
5413
5414 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
5415
5416         * class.c: Fix some typos in comments.
5417
5418 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
5421
5422         * threads.c (mono_thread_execute_interruption): Avoid creating the
5423         abort exception object while holding the synch_cs lock.
5424
5425 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5426
5427         * metadata-verify.c: Verify basic cattr content.
5428
5429 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
5430
5431         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
5432         nested types.
5433         
5434         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
5435         support for nested types. Fixes #511704.
5436
5437 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5438
5439         * metadata-verify.c: Verify methodspec signatures.
5440
5441 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * metadata-verify.c: Verify typespec signatures.
5444
5445 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * metadata.c (free_inflated_method): Call 
5448         mono_marshal_free_inflated_wrappers (), which was missed earlier.
5449
5450 2009-06-08  Miguel de Icaza  <miguel@novell.com>
5451
5452         * mono-config.c: Small change to report the PPC64/ILP32 model.
5453
5454 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5455
5456         * metadata-verify.c (parse_type): Check szarray.
5457
5458 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * metadata-verify.c (parse_type): Check fnptr.
5461
5462 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5463
5464         * metadata-verify.c (parse_type): Check generic instances.
5465
5466 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5467
5468         * metadata-verify.c (parse_type): Check array shape.
5469
5470 2009-06-05  Robert Jordan  <robertj@gmx.net>
5471
5472         * class.c (mono_class_create_from_typedef): Check only for
5473         mscorlib's System.Array.
5474
5475 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5476
5477         * metadata-verify.c (parse_type): Check pointer, class/valuetype
5478         and generic params. 
5479
5480         * metadata-verify.c (parse_field): Check the signature.
5481
5482 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5483
5484         * metadata-verify.c: Implement locals signature check.
5485
5486 2009-06-04  Marek Safar  <marek.safar@gmail.com>
5487
5488         * domain.c: Add .NET 4.0 Beta 1 version.
5489
5490 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
5491
5492         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
5493           For QueryInterface on CCWs consider the base class
5494           interfaces as well.
5495
5496         Code is contributed under MIT/X11 license.
5497
5498 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
5501
5502         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
5503         used.
5504
5505         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5506         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
5507
5508         * generic-sharing.c (inflate_other_data): Ditto.
5509         
5510 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5511
5512         * metadata-verify.c: Implement property signature check.
5513
5514 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5515
5516         * sgen-gc.h: Register saving support for PPC.
5517
5518 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5519
5520         * sgen-gc.c: Fixed a pthread TLS screwup.
5521
5522 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5523
5524         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
5525         supported.
5526
5527 2009-06-04  Mark Probst  <mark.probst@gmail.com>
5528
5529         * sgen-gc.c: Disable TLA and managed allocation if the __thread
5530         keyword is not supported.
5531
5532 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
5533
5534         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
5535         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
5536         the inflated method is freed. Fixes #508389.
5537
5538         The code is contributed under the MIT/X11 license.
5539         
5540 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
5541
5542         * marshal.c (get_wrapper_target_class): New helper function.
5543         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
5544         the <Module> class of the image. Fixes #509049.
5545
5546 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
5549         Check if the thread was interrupted and proccess it straight away.
5550         Makes abortion much more responsive.
5551
5552 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5553
5554         * threads.c (mono_thread_execute_interruption): Use atomic cas with
5555         MonoThread::interruption_requested to match it's counterpart.
5556
5557         Fixes a hang in abort-stress-1 on a 2 core x86.
5558
5559         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
5560         Fix warning.
5561
5562 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5563
5564         Change MonoImage::name_cache to be protected by the image lock
5565         instead of the loader lock.
5566
5567         * appdomain.c (deregister_reflection_info_roots): Protect access
5568         to name_cache.
5569
5570         * class.c (mono_image_init_name_cache): Change from the loader lock
5571         to the image lock. Check if the cache wasn't already created.
5572
5573         * class.c: Change from the loader to the image lock.
5574
5575         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
5576         the code to hold the image lock while iterating over name_cache and
5577         not go into mono_array_new holding it.
5578
5579         * metadata-internals.h: Add a comment about this change.
5580
5581 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5582
5583         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
5584         Under the 2.0 profile raise the loader error.
5585
5586         Fixes #508532.
5587
5588 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5589
5590         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
5591         of ldind opcode for generic instances so we don't fail for direct wrappers.
5592         This only affect direct calls.
5593
5594 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * reflection.c (create_dynamic_mono_image): Fix warnings.
5597
5598         * generic-sharing.c (other_info_equal): Ditto.
5599         
5600 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5601
5602         * metadata-verify.c: Implement field signature check.
5603
5604 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5605
5606         * metadata-verify.c: Implement standalone signature check.
5607
5608 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5609
5610         * metadata-verify.c: Implement methodref signature check.
5611
5612 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
5613
5614         * object-internals.h (MonoRuntimeCallbacks): New structure containing
5615         callbacks supplied by the runtime.
5616
5617         * object.c (mono_install_callbacks): New internal function to install
5618         the callbacks.
5619
5620         * object.c (mono_create_ftnptr): Move the implementation of this to
5621         mini/.
5622
5623         * object.c (mono_get_addr_from_ftnptr): Ditto.  
5624
5625 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5626
5627         * metadata-verify.c (parse_return_type): Proper byref check.
5628         * metadata-verify.c (is_valid_method_signature): Check for zero arity
5629         generic signatures and method params.
5630
5631 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5632
5633         * metadata-verify.c (decode_signature_header): Fix bounds check.
5634
5635         * metadata-verify.c (parse_custom_mods): Check custom mods.
5636
5637         * metadata-verify.c (parse_type): Do initial basic verification
5638         of valid values.
5639         
5640         * metadata-verify.c (is_valid_method_signature): Parse the generic
5641         param count.
5642
5643 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
5644
5645         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
5646         discarded based on their most specific definition so we set the method_slots
5647         array before checking if the method is acceptable or not.
5648
5649         Fixes #506757.
5650
5651 2009-05-26  Mark Probst  <mark.probst@gmail.com>
5652
5653         * icall.c: Free the old array when resizing a mono_ptr_array.
5654
5655 2009-05-26  Mark Probst  <mark.probst@gmail.com>
5656
5657         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
5658         for the hashes whose keys are managed objects.
5659
5660 2009-05-26  Mark Probst  <mark.probst@gmail.com>
5661
5662         * object-internals.h, threads.c: Set the execution context on
5663         thread start here, not in corlib.
5664
5665         * appdomain.c: Bump corlib version.
5666
5667 2009-05-27  Martin Baulig  <martin@ximian.com>
5668
5669         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
5670         if `_mono_debug_using_mono_debugger' is set to make things work
5671         properly when embedding Mono.
5672
5673 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5674
5675         * class.c (mono_class_setup_fields): Don't mark simd types as having
5676         16 bytes alignment as the whole runtime doesn't support.
5677
5678 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
5679
5680         * metadata-verify.c (safe_read): Use endian safe read macros.
5681
5682 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
5685         it is read-only when using full aot.
5686
5687 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
5688
5689         * metadata-verify.c (is_valid_method_signature): Verify parts
5690         of the return type. Provide an error message in case of failure.
5691
5692 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
5693
5694         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
5695
5696 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
5697
5698         * metadata-verify.c: Include the size prefix in the bounds check.
5699
5700 2009-05-22  Miguel de Icaza  <miguel@novell.com>
5701
5702         * icall.c: Remove warnings.
5703
5704         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
5705         prevent auto-detection based on GCC defines.
5706
5707         Add PS3
5708
5709         * metadata-verify.c: Do not include signal.h
5710
5711         * generic-sharing.c, marshal.c: Add returns to avoid some warning
5712         messages.  Not sure why the g_assert_not_reached is not enough to
5713         quiet the compiler.
5714         
5715
5716         * appdomain.c: Remove code that is not used when
5717         DISABLE_SHADOW_COPY is set.
5718
5719         * image.c: use g_getenv
5720
5721 2009-05-21  Miguel de Icaza  <miguel@novell.com>
5722
5723         * reflection.c: Remove code that it not used with
5724         DISABLE_REFLECTION_EMIT is defined.
5725
5726 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
5729         invoke wrappers.
5730
5731 2009-05-20  Miguel de Icaza  <miguel@novell.com>
5732
5733         * socket-io.c
5734         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
5735         the ifdef here and instead put that on io-layer
5736
5737 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5738
5739         * metadata-verify.c: Verify the generic param constraint table.
5740
5741 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         * metadata-verify.c (verify_generic_param_table): Fix
5744         thinko on the valid flags bits for generic params.
5745
5746 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5747
5748         * metadata-verify.c: Verify the methodspec table.
5749
5750 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5751
5752         * metadata-verify.c: Verify the generic param table.
5753
5754 2009-05-19  Mark Probst  <mark.probst@gmail.com>
5755
5756         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
5757
5758 2009-05-19  Mark Probst  <mark.probst@gmail.com>
5759
5760         * sgen-gc.c: Use generation enum more consistently and use the
5761         correct generation in mono_gc_register_for_finalization().
5762
5763 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * metadata-verify.c: Verify the nested class table.
5766
5767 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         * metadata-verify.c: Verify the manifest resource table.
5770
5771 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
5774
5775 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
5778         wrappers, this is now done in the JIT.
5779         
5780         * class.c (mono_set_generic_sharing_supported): New internal function.
5781         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
5782
5783 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * metadata-verify.c: Verify the exported type table.
5786
5787 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
5788
5789         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
5790
5791 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
5792
5793         * metadata-verify.c: Verify the file table.
5794
5795 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * metadata-verify.c (verify_assembly_table): Fix an error message.
5798
5799         * metadata-verify.c: Verify the assemblyref table.
5800
5801 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * metadata-verify.c (verify_assembly_table): Fix the valid
5804         bits mask for flags.
5805
5806 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5807
5808         * debug-helpers.c (mono_method_full_name): Print generic parameters of
5809         generic methods as well.
5810
5811 2009-05-15  Geoff Norton  <gnorton@novell.com>
5812
5813         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
5814         use-case and is significantly more performant than the wapi layer.
5815
5816 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5817
5818         * metadata-verify.c: Verify the assembly table.
5819
5820 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5821
5822         * metadata-verify.c: Fix rows limit check.
5823
5824 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5825
5826         * metadata-verify.c: Verify the fieldrva table.
5827
5828 2009-05-13  Mark Probst  <mark.probst@gmail.com>
5829
5830         * sgen.c: Speed up weak links and finalizers by grouping them by
5831         generation.
5832
5833 2009-05-13  Mark Probst  <mark.probst@gmail.com>
5834
5835         * marshal.c (delegate_hash_table_add): When overwriting an entry,
5836         free the old GCHandle (only applies to SGen).
5837
5838 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5839
5840         * loader.c (mono_get_method_from_token): Avoid the expensive call to
5841         mono_metadata_load_generic_params () for non-generic methods.
5842
5843 2009-05-12  Mark Probst  <mark.probst@gmail.com>
5844
5845         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
5846         New function for returning a monitor's weak link if it has one.
5847
5848         * sgen-gc.c: Remove an object's monitor's weak link (if it has
5849         one) when clearing a domain.  These can still be around because
5850         the object might not have been collected.
5851
5852 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5853
5854         * gc.c: Fix a warning.
5855
5856 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
5857
5858         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
5859         prevous wait that resulted in a deadlock on Windows when initializing
5860         the runtime form DllMain. Also results in improved startup time.
5861         (finalizer_thread): Get rid of thread_started_event.
5862         * threads.c, threads-types.h (mono_thread_create_internal): Return the
5863         resulting MonoThread.
5864
5865         Contributed under MIT/X11 license.
5866
5867 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
5868
5869         * metadata-verify.c: Verify the implmap table.
5870         Don't require that #US and #Strings be present.
5871
5872 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
5873
5874         * security-core-clr.c: Delegate checks are done at creation time,
5875         not a invocation time. Fix exception for Telerik Silverlight demo
5876
5877 2009-05-11  Mark Probst  <mark.probst@gmail.com>
5878
5879         * sgen-gc.c (need_remove_object_for_domain): Remove the special
5880         case for the Thread class.
5881
5882         * threads.c: Do clean-up of abort exception/state in
5883         thread_cleanup() instead of Thread.free_internal().  Also clean up
5884         current_appcontext.  The reason we have to do that is because
5885         those references might point into another domain and if that
5886         domain is unloaded before the thread is finalized, they point to
5887         invalid data.
5888
5889 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
5890
5891         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
5892         stub signatures.
5893         
5894         Contributed unter MIT/X11 license.
5895
5896 2009-05-09  Miguel de Icaza  <miguel@novell.com>
5897
5898         * verify.c, metadata-verifier.c: Add support for disabling the
5899         verifier in some builds.
5900
5901         [ Sorry, my previous commit accidentally commited some work in
5902         progress ]
5903
5904 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5905
5906         * class.c (mono_class_setup_fields): Set class->field.first for
5907         generic instances.
5908
5909 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * metadata-verify.c: Verify the typespec table.
5912
5913 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
5914
5915         * metadata-verify.c: Verify the module table.
5916
5917 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5918
5919         * metadata-verify.c: Verify the methodimpl table.
5920
5921 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5922
5923         * metadata-verify.c: Verify the property table.
5924
5925 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5926
5927         * debug-helpers.c (mono_method_desc_match): Add support for generic
5928         glob patterns.
5929
5930 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
5931
5932         * metadata-verify.c: Verify the propertymap table.
5933
5934 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
5935
5936         * metadata-verify.c: Verify the event table.
5937
5938         * metadata-verify.c (search_sorted_table): Fix offset
5939         calculation.
5940
5941 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5942
5943         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
5944
5945 2009-05-01  Mark Probst  <mark.probst@gmail.com>
5946
5947         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
5948         because mono_delegate_free_ftnptr() needs it.
5949
5950 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5951
5952         * metadata-verify.c: Verify the eventmap table.
5953
5954 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5955
5956         * metadata-verify.c: Verify the standalonesig table.
5957
5958 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5959
5960         * metadata-verify.c: Verify the field layout table.
5961
5962 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5963
5964         * class.c (mono_type_get_name_recurse): Don't crash
5965         for ownerless generic params.
5966
5967         * debug-helpers.c (mono_type_get_desc): Correct the format
5968         for ownerless generic params.
5969
5970 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5971
5972         * metadata-verify.c: Verify the class layout table.
5973
5974 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
5975
5976         * metadata-verify.c: Verify the decl security table.
5977
5978 2009-04-30  Mark Probst  <mark.probst@gmail.com>
5979
5980         * domain.c (mono_domain_set_internal_with_options): Don't do
5981         anything if the old domain is the same as the old one.  Fixes
5982         #499326.
5983
5984 2009-04-30  Mark Probst  <mark.probst@gmail.com>
5985
5986         * appdomain.c: Deregister the reflection_info roots when unloading
5987         a domain.
5988
5989         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
5990         memory allocated by a domain and frees its disappearing links.
5991
5992         * boehm-gc.c, null-gc.c: Empty implementation of
5993         mono_gc_clear_domain().
5994
5995 2009-04-30  Mark Probst  <mark.probst@gmail.com>
5996
5997         * appdomain.c (clear_cached_vtable): Free the static fields memory
5998         block.
5999
6000 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6001
6002         * gc.c: Set the correct domain when invoking finalizers.
6003
6004         * appdomain.c: Set the correct domain when creating threads.
6005
6006 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6007
6008         * sgen-gc.c: Fix skip size for vectors.
6009
6010 2009-05-03  Martin Baulig  <martin@ximian.com>
6011
6012         * mono-debug-debugger.c
6013         (mono_debugger_check_breakpoints): Check class init handlers even
6014         if we don't have any method load handers.
6015
6016 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6019         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6020
6021 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6022
6023         * metadata-verify.c: Verify the field marshal table.
6024
6025 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * metadata-verify.c: Verify the custom attribute table.
6028
6029 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6030
6031         * metadata-verify.c: Verify the constant table.
6032
6033 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6034
6035         * metadata-verify.c: Verify the memberef table.
6036
6037 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6038
6039         * metadata-verify.c (get_coded_index_token): Remove
6040         dead argument.
6041
6042 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6043
6044         * metadata-verify.c: Verify the interfaceimpl table.
6045
6046 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * verify.c: Improve error message.
6049
6050         * debug-helpers.c (mono_type_get_desc): Harden the code that
6051         deals with VAR and MVAR.
6052
6053 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6054
6055         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6056         part of #498692.
6057
6058 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6059
6060         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6061         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6062
6063 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6064
6065         * security-core-clr.c: Avoid redundant checks for platform code, 
6066         e.g. check for method and for class (very common) and check
6067         for class and outer class (less common)...
6068
6069 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6070
6071         * reflection.c: Avoid returning random cattrs for synthetic methods.
6072         Fixes #498545.
6073
6074 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6075
6076         * assembly.c: assemblies in the GAC should never be shadow-copied.
6077
6078 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6079
6080         * domain.c, domain-internals.h: Disable
6081         track_resurrection_{objects,handles}_hash in MonoDomain if using
6082         SGen.
6083
6084 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6085
6086         * metadata-verify.c: Verify the param table.
6087
6088 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6089
6090         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6091         MethodList.
6092
6093         * metadata-verify.c (verify_method_table): Proper check the ParamList
6094         field.
6095
6096 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6097
6098         * metadata-verify.c (verify_method_table): Check for runtime
6099         implemented functions such as delegate .ctors. Remove spurious
6100         printf.
6101         
6102 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6103
6104         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6105
6106 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6107
6108         Don't allocate MonoGenericInfo for ownerless generic params.
6109         * class-internals.h (MonoGenericParam::info): Move field to ...
6110         (MonoGenericParamFull): ... this.  New struct.
6111         (MonoGenericContainer::type_params): Change type to
6112         MonoGenericParamFull.
6113         (MonoGenericParam, MonoGenericContainer): Update accessors.
6114         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6115         'info' field for ownerless generic param.
6116         (mono_metadata_load_generic_params): Update to changes.
6117         * reflection.c (mono_reflection_create_generic_class): Likewise.
6118         (reflection_methodbuilder_to_mono_method): Likewise.
6119         (mono_reflection_initialize_generic_parameter): Likewise.
6120
6121 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6122
6123         Don't use MonoGenericParamInfo for ownerless generic params.
6124         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6125         use ParamInfo class at all.
6126         (mono_class_from_generic_parameter): Use them.
6127         (make_generic_param_class): Fix a couple of instances where 'pinfo
6128         == NULL' wasn't handle.
6129
6130 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6131
6132         * class.c (make_generic_param_class): Carve out of ...
6133         (mono_class_from_generic_parameter): ... here.
6134
6135 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6136
6137         Simplify mono_class_from_generic_parameter
6138         * class-internals.h (MonoGenericParamInfo::token): New field.
6139         * metadata.c (mono_metadata_load_generic_params): Initialize it
6140         from metadata.
6141         * class.c (mono_class_from_generic_parameter): Use it instead of
6142         searching through metadata.
6143
6144 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6145
6146         * metadata-verify.c: Add verification of the method table.
6147
6148 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6149
6150         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6151         Delegate::Invoke optimization.
6152
6153 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6154
6155         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6156         string returned by get_shadow_assembly_location_base.
6157
6158         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6159         about caller's ownership.
6160
6161 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6162
6163         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6164         reflection memory on domain unload.
6165
6166         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6167         reflection cleanup code do it.
6168
6169         * domain-internals.h: Add mono_reflection_cleanup_domain.
6170
6171         This fixes a memory leak for managed mirrors of reflection objects
6172         on domain unload. 
6173
6174 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6175
6176         * metadata-verify.c: Implement more verification of the field table.
6177
6178 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6179
6180         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6181         doesn't try to parse the input assembly, which can be broken.
6182
6183 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6184
6185         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6186         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6187         by using the lowest bit in the link to store whether the link is
6188         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6189
6190 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6191
6192         * Makefile.am: Split the console support in platform specific code
6193         and put together a framework for making this easy in the future so
6194         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6195
6196 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6197
6198         * pedump.c: Fix a warning.
6199
6200 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6201
6202         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6203         mono_class_from_mono_type to avoid bad interactions with the dual representation
6204         of the generic type definition.
6205
6206 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6207
6208         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6209         get the MonoClass for the call context type as it might be a generic
6210         instance.
6211
6212         Fixes #491483.
6213
6214 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6215
6216         * object-internals.h: The Thread object has no execution_context
6217         member anymore.
6218
6219         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6220         the execution context.
6221
6222         * appdomain.c: Bump corlib version.
6223
6224 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6225
6226         * verify.c (do_newobj): Improve error message.
6227
6228 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6229
6230         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6231         is nested in the filter block.
6232
6233         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6234         block is not fully nested.
6235
6236         Fixes #495656.
6237
6238 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6239
6240         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6241         not MonoType to check for equality of valuetypes as the generic type
6242         definition allows for two different encodings: the generic type definition
6243         class or a generic instance over the GTD arguments.
6244
6245         Fixes #496175.
6246
6247 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6248
6249         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6250
6251         * verify.c (do_initobj): Improve error message.
6252
6253 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6254
6255         * metadata-verify.c: Enable pe verification as the issue with #496453
6256         is that the authenticode data directory have a different unspecified
6257         format. Ignore it for now.
6258
6259         * pedump.c: Run the metadata verifier together with the IL verifier.
6260
6261         Fixes ##496453.
6262
6263 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6264
6265         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6266
6267 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6268
6269         * class.c (can_access_type): Check visibility against
6270         the element type for pointers and arrays.
6271
6272         Fixes #496150.
6273
6274 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6275
6276         * metadata-verify.c: Fix cli and table verification to use information
6277         from the MonoImage. A lot of duplicated code got killed.
6278
6279 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6280
6281
6282         This patch starts to integrate the metadata verifier with the runtime code.
6283
6284         This patch causes major regression in functionality for the metadata verifier
6285         as cli and table verification are disabled since they require to be ported to
6286         use MonoImage information.
6287
6288         * image.c (do_mono_image_load): Split the code in this function
6289         into mono_image_load_pe_data and mono_image_load_cli_data.
6290         Add     care_about_pecoff parameter to not load pecoff data.
6291         Call into the metadata verifier for pecoff and cli verification.
6292
6293         * image.c (mono_image_open_raw): New function that doesn't perform
6294         any parsing of the image contents.
6295         
6296         The reason for the 3 new functions is to give pedump better control
6297         into the interaction with the verifier.
6298
6299         * metadata-internals.h: Add new functions from image.c as part of the
6300         internal mono API.
6301
6302         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6303         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6304         to make those functions work together with the runtime.
6305
6306         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6307         true if the image needs to be verified.
6308
6309         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6310
6311         * pedump.c: Use new metadata verifier API.
6312
6313 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6314
6315         * object.c (mono_install_vtable_trampoline): Make this receive a
6316         trampoline creation function instead of trampoline, allowing the JIT
6317         to use a different trampoline for each vtable.
6318
6319 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6320
6321         * object.c (mono_raise_exception): Don't reset the thread abort
6322         exception state here.
6323
6324 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6325
6326         * icall-def.h: New icall for getting the thread abort exception
6327         state for a thread.
6328
6329         * object.c, thread.c, object-internals.h: A thread's abort
6330         exception state is now a GC handle.  To get the object it stands
6331         for, we must move it into the current app domain, if it's
6332         different than the one where it originated from.
6333
6334         * appdomain.c: Bump corlib version.
6335
6336         * domain.c, domain-internals.h: New function for setting the
6337         domain and migrate the thread abort exception or not.
6338
6339 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6340
6341         * metadata-verify.c: Add initial verification of the
6342         field table.
6343
6344 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6345
6346         * metadata-verify.c: Add a macro to conditionally enable
6347         dumping of verification information. Add  make_coded_token
6348         and search_sorted_table to enable search sorted tables
6349         by a given coded token.
6350
6351 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6352
6353         * metadata-verify.c: Add array mapping from table index
6354         to description offset. Add get_col_offset and get_col_size
6355         functions.
6356
6357 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6358
6359         * metadata-verify.c: Add remaining table descriptions offsets.
6360         Add remaining coded index descriptions.
6361
6362 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6363
6364         * metadata-verify.c: Fixed constant table description.
6365         Fixed calculation of HasCustomAttribute coded index size.
6366         Fixed calculation of size for many table indexes. 
6367
6368 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6369
6370         * pedump.c (dump_metadata): Dump table offset instead
6371         of useless pointer in memory.
6372
6373 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6374
6375         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
6376
6377 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6378
6379         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
6380         a missing of for interface types.
6381
6382 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6383
6384         * metadata-verify.c (verify_pe_optional_header): Add comment of why
6385         the code is commented.
6386
6387         * metadata-verify.c (verify_resources_table): Remove spurious printf
6388         and don't fail if there are unmanaged resources. Gmcs generates a useless
6389         one     for all assemblies - I bet it's some MS compatibility junk.
6390
6391 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6392
6393         * metadata-verify.c (verify_typedef_table): Verify the extends field.
6394
6395         * metadata-verify.c (mono_image_verify): Add a is_corlib.
6396
6397         * verify-internals.h: Same.
6398
6399         * pedump.c: Fix for mono_image_verify new signature.
6400
6401 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * metadata-verify.c (verify_typedef_table): Verify for some invalid
6404         flags combinations.
6405
6406 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6407
6408         * metadata-verify.c (verify_module_table): Ignore the generation field.
6409
6410 2009-04-15  Martin Baulig  <martin@ximian.com>
6411
6412         * debug-mono-symfile.c
6413         (mono_debug_symfile_lookup_location): Don't print a warning for
6414         unknown extended opcodes if they're within 0x40 and 0x7f.
6415
6416 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
6417
6418         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
6419         invoke signatures returning an enum. Fixes #494847.
6420
6421 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * metadata-verify.c: Initial code to verify the typedef table.
6424
6425 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6426
6427         * verify.c (mono_method_verify): Don't fail if an unconditional branch
6428         with non empty stack happens before the beginning of a try block.
6429
6430         Fixes #494812.
6431
6432 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6433
6434         * metadata-verify.c: Verify typename and typenamespace fields of
6435         the typeref table.
6436
6437 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         * metadata-verify.c: Initial code to verify the typeref table.
6440
6441 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
6442
6443         * verify.c (verify_delegate_compatibility): Fix error message.
6444
6445 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
6446
6447         * security-core-clr.c: Fix typo
6448
6449 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
6452         a MonoGHashTable to keep its values alive.
6453         (emit_marshal_boolean): Fix a warning.
6454
6455 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6456
6457         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
6458         not have any interface configured for IPv4/IPv6.
6459
6460 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6461
6462         * assembly.c: fix typo in error message.
6463
6464 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
6465
6466         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
6467         allocating the location holding the this argument to prevent
6468         'too many root sets' errors.
6469
6470         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
6471         to mark fields as special static.
6472         (mono_field_static_get_value): Handle special static fields.
6473         (mono_field_static_set_value): Ditto.
6474
6475         * class-internals.h (struct _MonoClassField): Document this.
6476
6477 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6478
6479         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
6480           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
6481           case.  This will handle when managed code returns null to native code.
6482
6483         Code is contributed under MIT/X11 license.
6484
6485 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6486
6487         * object.c (build_imt_slots): Changing a free to a g_free to match
6488           the g_malloc0 in add_imt_builder_entry that allocated this memory.
6489
6490         Code is contributed under MIT/X11 license.
6491
6492 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
6493
6494         * marshal.c (emit_marshal_boolean): Adding code to ensure that
6495           the correct TRUE value is passed through the marshaling layer.
6496
6497         Code is contributed under MIT/X11 license.
6498
6499 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
6502         correctly. Fixes #492330.
6503         
6504         * marshal.c: Fix the embedding of object pointers into JITted code in
6505         the native-to-managed wrappers by allocating some GC tracked memory, and
6506         embedding the address of that.
6507
6508 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
6509
6510         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
6511         pointers into the vtable.
6512
6513 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6514
6515         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
6516
6517         * verify.c (verify_ldftn_delegate): Improve error message.
6518
6519 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6520
6521         * reflection.c (my_mono_class_from_mono_type): Remove.
6522
6523 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
6524
6525         Prepare to reduce memory usage of owner-less generic parameters (1/n)
6526         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
6527         and constraints fields into ...
6528         (MonoGenericParamInfo): ... this.
6529         (mono_generic_param_info, mono_generic_container_get_param_info):
6530         New accessors.
6531         * class.c, debug-helpers.c, icall.c: Update to changes.
6532         * metadata.c, reflection.c, verify.c: Likewise.
6533
6534 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
6537
6538         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
6539         
6540         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
6541         booleans with sbytes.
6542
6543 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6544
6545         * class.c (can_access_instantiation): Verify accesibility of element types
6546         for arrays and pointers.
6547
6548         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
6549
6550         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
6551
6552         Fixes #493068.
6553
6554 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6555
6556         * verify.c (do_invoke_method): Improve error messages.
6557
6558 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
6559
6560         * verify.c:  Fixing the MSVC build.
6561
6562         Code is contributed under MIT/X11 license.
6563
6564 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
6565
6566         * security-core-clr.c: Simplify get_reflection_caller not to call
6567         mono_method_get_last_managed (another stack walk) and adjust the
6568         callers to handle a (should not happen) NULL return value.
6569
6570 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6571
6572         Add accessors to some MonoGenericParam fields
6573         * class-internals.h (mono_generic_param_owner): New accessor.
6574         (mono_generic_param_num): Likewise.
6575         (mono_type_get_generic_param_owner): New helper.
6576         (mono_type_get_generic_param_num): New helper.
6577         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
6578
6579 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6580
6581         * class-internals.h (mono_generic_container_get_param): New wrapper.
6582         * class.c, icall.c, metadata.c, verify.c: Use it.
6583
6584 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
6585
6586         Fix gtest-252.cs
6587         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
6588         the standard case/loop.  In particular, don't complain about
6589         references to generic type definitions.
6590
6591 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
6592
6593         * debug-helpers.c (dis_one): Decode string arguments.
6594
6595 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         * pedump.c (dump_verify_info): Dump type name correctly.
6598
6599 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6600
6601         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
6602         are larger than code size.
6603
6604         This can happen in valid code if the try/catch block is not followed by any instruction
6605         and do a backward branch on the leave instruction.
6606
6607         Fixes #492494.
6608
6609 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
6610
6611         * security-core-clr.c: Fix typo while comparing second method names
6612         in can_avoid_corlib_reflection_delegate_optimization
6613
6614 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6615
6616         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
6617
6618         Fixes #487738.
6619
6620 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
6621
6622         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
6623         a MVAR using a class context.
6624
6625         Fixes #490335.
6626
6627 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
6630
6631         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
6632
6633         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
6634         functions supplied by the JIT for the SGEN GC.
6635
6636         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
6637         
6638 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
6639
6640         monitor.c (mono_monitor_try_enter_internal):
6641         Added calls to profile monitor contentions.
6642         Also duplicated a small piece of code (the "get the monitor" logic)
6643         from the fast path to the slow path, and changed the relevant goto
6644         statements, so that monitor acquisition events can be emitted from the
6645         slow path (this is by Paolo Molaro).
6646
6647 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
6648
6649         * profiler.c, profiler.h, profiler-private.h:
6650         Added support for profiling monitor contentions.
6651
6652 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * metadata-verify.c: Verify the modules table.
6655
6656 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
6657
6658         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
6659         using the context of the method been verifier and not of the method been called.
6660
6661         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
6662         safely inflate generic types. 
6663
6664 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
6665
6666         * security-core-clr.c: Change the strategy for checking the 
6667         "reflection using delegates optimization" to avoid unneeded 
6668         attributes in multiple class libraries.
6669
6670 2009-04-02  Mark Probst  <mark.probst@gmail.com>
6671
6672         * sgen-gc.c: Remove object element in the disappearing link struct
6673         by storing the object pointer in the link.
6674
6675 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
6676
6677         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
6678
6679 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
6680
6681         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
6682
6683         * verify.c (mono_method_verify): Do proper bounds checking of exception
6684         clause ranges.
6685
6686 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
6687
6688         * loader.c (mono_field_from_token): Don't crash if the field parent could
6689         not be decoded.
6690
6691 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6692
6693         * sgen-gc.c: Execute critical finalizers after ordinary
6694         finalizers.
6695
6696         * class-internals.h, domain.c: Add CriticalFinalizerObject to
6697         mono_defaults.
6698
6699 2009-03-31 Jb Evain <jbevain@novell.com>
6700
6701         * verify.c (do_ldstr): don't check if a string is in the user strings
6702         heap if the current image is dynamic.
6703
6704 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6705
6706         * sgen-gc.c: Wait until the last finalizer has executed when
6707         returning from WaitForPendingFinalizers.
6708
6709 2009-03-31  Martin Baulig  <martin@ximian.com>
6710
6711         * mono-debug-debugger.h (MonoDebuggerEvent): Add
6712         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
6713         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
6714         (mono_debugger_event_create_appdomain): New function.
6715         (mono_debugger_event_unload_appdomain): New function.
6716
6717         * appdomain.c (mono_domain_create_appdomain_internal): Call
6718         mono_debugger_event_create_appdomain().
6719
6720 2009-03-31  Martin Baulig  <martin@ximian.com>
6721
6722         * mono-debug-debugger.c
6723         (mono_debugger_register_class_init_callback): Also register the
6724         class init callback if the class is already initialized to make
6725         things work with shadow copied assemblies.
6726
6727 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
6728
6729         * security-core-clr.c
6730         (mono_security_core_clr_ensure_reflection_access_field): Let 
6731         critical code access the field (just like we do for methods). Use
6732         check_field_access helper.
6733         (mono_security_core_clr_ensure_reflection_access_method): Use 
6734         check_field_access helper.
6735
6736 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6737
6738         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
6739         call the run-finalize function directly.
6740
6741         * gc.c, gc-internal.h: Make run_finalize() non-static.
6742
6743 2009-03-31  Mark Probst  <mark.probst@gmail.com>
6744
6745         * sgen-gc.c: Use a separate struct for disappearing links.
6746
6747 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
6748
6749         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
6750         * MaxIOVectorLength enabled, just ignore them.
6751         Fixes bug #349688.
6752
6753 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
6754
6755         * metadata-verify.c: Fix eglib build.
6756
6757 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
6758
6759         * threads-types.h: Fix the win32 build.
6760
6761 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
6762
6763         * class.c: move coreclr inheritance/override checks to 
6764         security-core.clr.c
6765         * security-core.clr.c|h: add code from class.c with additional
6766         documentation. Fix override check when the method is not critical.
6767
6768 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
6771         (match_class): Ditto.
6772
6773 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
6774
6775         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
6776
6777         * metadata-verify.c: Implement table layout row size calculation. Verify
6778         the total size of the tables.
6779
6780 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
6781
6782         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
6783
6784 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6785
6786         * appdomain.c:
6787         * console-io.[ch]: added new mono_console_init() to make sure that
6788         file descriptors 0, 1 and 2 are opened.
6789         Bug #489019 fixed.
6790
6791 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
6792
6793         * appdomain.h: Export a new callback type and a new function to
6794         set this callback. This allow a mono host to provide it's own
6795         definition for "platform code".
6796         * metadata-internals.h: Add a core_clr_platform_code flag on 
6797         _MonoImage to (cache and) know if it is representing platform 
6798         code.
6799         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
6800         on platform code images.
6801         * security-core-clr.c|h 
6802         (mono_security_set_core_clr_platform_callback): Allow the host
6803         to provide it's own platform check definition.
6804         (mono_security_core_clr_determine_platform_image): Detect if an 
6805         image is platform code (using the specified callback).
6806         (mono_security_core_clr_is_platform_image): Return cached value 
6807         for platform code.
6808
6809 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
6810
6811         * threads.c (mono_create_thread): New helper function to wrap CreateThread
6812         which has different parameter types for the 'tid' argument in windows and
6813         the io-layer.
6814
6815         * appdomain.c attach.c threads.c: Use the new helper.
6816
6817 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
6818
6819         * metadata-verify.c: Verify valid table bits.
6820
6821 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
6822
6823         * metadata-verify.c (verify_metadata_header): Store size in the size field.
6824
6825         * metadata-verify.c: Add initial table schema verification.
6826
6827 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
6830         obtain the refclass argument needed by mono_param_get_objects (). Fixes
6831         #488383.
6832
6833         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
6834
6835         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
6836
6837 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
6838
6839         * security-core-clr.c: Add/update documentation
6840
6841 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * marshal.c (emit_marshal_object): Generate code to throw an exception
6844         instead of throwing it. Fixes #488670.
6845
6846 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
6847
6848         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
6849         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
6850         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
6851         and add a call to mono_security_core_clr_ensure_delegate_creation
6852         to do the extra checks required by CoreCLR.
6853         * security-core-clr.c|h: Add function to check delegate creation,
6854         both in the binding and accessibility, under CoreCLR.
6855
6856 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
6857
6858         * reflection.c (mono_reflection_create_dynamic_method): when 
6859         coreclr is enabled make sure that every resolved object are
6860         checked (e.g. field and method access).
6861         * security-core-clr.c|h: Add function to check objects resolved
6862         when a dynamic method is created.
6863
6864 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6865
6866         * metadata-verify.c: Cache directory rva translations.
6867
6868         * metadata-verify.c: Add cli-header and streams verification.
6869
6870 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6871
6872         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
6873         the wrong offset (8 instead of 6).
6874
6875 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
6876
6877         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
6878         methods, return the native function address itself. Fixes
6879         #487758.
6880
6881 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
6882
6883         * console-io.c: some of the values for control characters might not be
6884         present.
6885
6886 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
6887
6888         * exception.c|h: Add helpers to create [Field|Method]AccessException
6889         * icall.c: Add required coreclr check calls for field reflection.
6890         Move the existing (method) check logic into security-core-clr.c
6891         * security-core-clr.c: Add functions to check if the access of a
6892         field or method is allowed when reflecting under coreclr. This is
6893         mostly done using a stack walk to find the "real" caller: i.e. the
6894         code that is calling the reflection
6895
6896 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
6897
6898         * gc-internal.h: Change location of gc_wrapper.h
6899
6900 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
6901
6902         * class.c: Simplification to coreclr checks for overrides that
6903         makes it easier to set breakpoints.
6904
6905 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
6906
6907         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
6908         mono_security_core_clr_method_level): Avoid potential 
6909         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
6910         user/application code) and make it easier to set breakpoints
6911
6912 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * metadata-verify.c: Reject cli header tables that mono don't handle.
6915
6916 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6917
6918         * pedump.c: Fix CLI header dumping.
6919
6920 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6921
6922         * metadata-verify.c: More CLI header verification.
6923
6924 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
6927
6928 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * metadata-verify.c: Initial verification of the CLI header.
6931
6932 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
6933
6934         * metadata-verify.c (verify_resources_table): Fix verification of zero
6935         sized resource section and id entries count.
6936
6937 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * icall.c: Handle user types in many Type icalls. Fixes #486303.
6940
6941 2009-03-17  Jb Evain  <jbevain@novell.com>
6942
6943         * profiler.c: call mono_gc_base_init from mono_profiler_load.
6944
6945 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
6948         (mono_gc_make_descr_for_array): Ditto.
6949
6950 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6951
6952         * verify.c (mono_verifier_is_class_full_trust): Add support for
6953         CoreCLR security mode where trusted assemblies are defined as
6954         "platform code".
6955
6956 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6957
6958         * metadata-verify.c: Add minimal PECOFF resource verification.
6959
6960 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6961
6962         * metadata-verify.c: Be less restrictive with some coff fields.
6963
6964 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6965
6966         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
6967         params as boxed values on stack. Fixes #485706.
6968
6969 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
6970
6971         * console-io.c: the termios values may vary in different flavors of unix.
6972
6973 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
6974
6975         * console-io.[ch]: return the entire set of control characters when
6976         initializing the terminal.
6977         * appdomain.c: bump corlib version.
6978
6979 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
6980
6981         * mono-perfcounters.c: added support for in-process custom
6982         performance counters.
6983
6984 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
6985
6986         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
6987
6988 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
6989
6990         * metadata-verify.c: Verify the data pointed by the import table. 
6991
6992 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
6993
6994         * metadata-verify.c (load_data_directories): Store data
6995         directory contents.
6996
6997         * metadata-verify.c: Verify the import table. 
6998
6999 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         * metadata-verify.c: Verify data directories.
7002
7003 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7004
7005         * metadata-verify.c: Check section header flags.
7006
7007 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7008
7009         * appdomain.c: if the assembly name is a shadow-copied file, return
7010         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7011         in mono_make_shadow_copy.
7012         * icall.c: if the assembly name is a shadow-copied file, replace it
7013         with the original assembly path.
7014
7015         Bug #484244 fixed. NUnit tests for corlib can be run without
7016         --noshadow now.
7017
7018 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7019
7020         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7021         entries when the table is reallocated.
7022
7023         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7024         mono_gc_alloc_fixed () since it contains GC refs.
7025
7026 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7027
7028         * reflection.c (ensure_complete_type): New helper function to call
7029         type resolve handlers for unfinished dynamic types.
7030         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7031
7032 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7035         #483247.
7036
7037 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7038
7039         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7040
7041 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7042
7043         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7044         between GCHandles of type WeakTrackResurrection and the objects they
7045         point to.
7046
7047         * gc.c: Partly implement the sematics of GCHandles of type 
7048         WeakTrackResurrection: these handles should only be cleared after the
7049         finalizer of the object they are pointing to has ran.
7050
7051 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7052
7053         * icall.c: Partially revert r126631 because using the jump
7054         trampolines for generic shared methods makes it superfluous.
7055
7056 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * threads.c (handle_store): Create the 'threads' hash table with the proper
7059         MONO_HASH_VALUE_GC type.
7060
7061 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7062
7063         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7064         FIRST_GC_TRACKED.
7065
7066         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7067         and LAST_GC_TRACKED as a GC root.
7068
7069         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7070
7071         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7072         the static data even if it consists of 1 reference.
7073
7074         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7075         if there is a GC descriptor.
7076
7077         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7078         instead of through the GC since they contain no object references.
7079
7080 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7081
7082         * generic-sharing.c (instantiate_other_info): Always return a jump
7083         trampoline for method code.
7084
7085 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7086
7087         * culture-info-tables.h: generated to include the en-tt culture.
7088
7089 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7090
7091         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7092         capture the thread context.
7093
7094         * object.c (mono_async_result_new): Cache the invoke wrappers to
7095         ExecutionContext::Capture.
7096
7097 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7098
7099         * marshal.h: Add a prototype for what mono_compile_method returns
7100         for invoke wrappers.
7101
7102         * gc.c: Use the new prototype declaration.
7103
7104 2009-03-04  Geoff Norton  <gnorton@novell.com>
7105
7106         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7107         * gc-internal.h:
7108         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7109
7110 2009-03-04  Martin Baulig  <martin@ximian.com>
7111
7112         * mono-debug.h
7113         (mono_debugger_runtime_invoke): Removed.
7114
7115         * mono-debug-debugger.c
7116         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7117
7118 2009-03-02  Martin Baulig  <martin@ximian.com>
7119
7120         * mono-debug.h
7121         (mono_debugger_unhandled_exception): Removed.
7122         (mono_debugger_handle_exception): Removed.
7123         (mono_debugger_throw_exception): Removed.
7124
7125         * mono-debug.c
7126         (mono_debug_debugger_version): Bump to 5.
7127
7128         * mono-debug-debugger.c: Moved the exception handling code to
7129         ../mini/debug-mini.c
7130
7131 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7134         finalize_objects_hash.
7135
7136         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7137         
7138         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7139         field.
7140
7141         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7142         cache.
7143
7144         * image.c (mono_image_close): Free it.
7145         
7146         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7147         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7148         on the this argument.
7149
7150         * gc.c (run_finalize): Optimize the calling of the finalizers.
7151
7152 2009-03-03  Martin Baulig  <martin@ximian.com>
7153
7154         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7155         of the `MonoGenericInst' changes.
7156
7157 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7158
7159         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7160         mono_array_class_get_cached to reduce locking contention. Extract
7161         a domain var.
7162
7163         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7164         intermediary managed arrays. Use caching version of mono_array_new
7165         to allocate the result array.
7166
7167         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7168
7169         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7170
7171         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7172         to reduce locking contention.
7173
7174 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7175                 
7176         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7177         thunk builder code for the non-interface case.
7178
7179 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * object.c (get_generic_virtual_entries): New helper function to collect
7182         the virtual generic method instances which need to be added to an IMT
7183         thunk.
7184         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7185         Instead of creating a new IMT thunk, reset the vtable slot to the
7186         trampoline, the thunk will be created the next time the trampoline is called.
7187         (build_imt_slots): Add support for virtual generic methods in interfaces by
7188         adding to the IMT thunk all the methods registered using 
7189         mono_method_add_generic_virtual_invocation ().
7190
7191         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7192         (struct _MonoIMTCheckItem): Ditto.
7193
7194         * object.c (mono_method_add_generic_virtual_invocation): Take a
7195         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7196         the IMT thunk to include all items.
7197         
7198         * object.c (mono_class_create_runtime_vtable): Add a missing
7199         mono_loader_unlock ().
7200
7201 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7202
7203         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7204
7205         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7206
7207 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7208
7209         * object-internals.h: Rename _MonoReflectionEvent to
7210         MonoReflectionMonoEvent so it reflects the right managed type.
7211         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7212
7213         * icall.c:
7214         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7215         type.
7216
7217 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7218
7219         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7220         intermediary managed arrays. Use caching version of mono_array_new
7221         to allocate the result array.
7222
7223 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7224
7225         * reflection.c: Use cached version of mono_array_new alongside
7226         the mono_reflection_get_custom_attrs_by_type call path.
7227
7228 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7229
7230         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7231         intermediary managed arrays. Use caching version of mono_array_new
7232         to allocate the result array.
7233
7234         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7235
7236 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * icall.c: Add small implementation of a growable stack bound array.
7239
7240         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7241
7242         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7243         intermediary managed arrays. Use caching version of mono_array_new
7244         to allocate the result array.
7245
7246 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7247
7248         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7249         helps Enum::CompareTo to be implemented without reboxing all enums
7250         to their underlying type.
7251 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7252
7253         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7254         since it acquires a global lock leading to scalability problems.
7255
7256         * profiler.c: Make the stat profiler work with multiple appdomains, this
7257         currently only works when no appdomains are unloaded.
7258
7259 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7260
7261         * appdomain.c: make the check to avoid copying when the assembly is
7262         already shadow copied actually work.
7263
7264 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7265
7266         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7267
7268         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7269         changes to the managed side.
7270
7271 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7272
7273         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7274         classes + a separate lock for it, as it is used frequently at runtime, not
7275         just during metadata loading/JIT compilation.
7276
7277         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7278         for szarrays.
7279         
7280         * object-internals.h (mono_class_from_name_cached): New macro to cache
7281         the results of the lookup locally without having to declare a static
7282         variable to hold it.
7283         (mono_class_get_field_from_name_cached): Ditto.
7284         (mono_array_class_get_cached): Ditto.
7285
7286         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7287         the new macros.
7288         
7289         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7290         slower search in metadata.
7291
7292         * pedump.c: Fix a warning.
7293
7294 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7295
7296         * reflection.c (encode_locals): Add checks for user types.
7297         (method_encode_clauses): Ditto.
7298         (method_encode_code): Ditto.
7299         (mono_image_create_token): Ditto.
7300
7301         * object-internals.h: Change the type of more fields from MonoReflectionType*
7302         to MonoObject*.
7303
7304 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7305
7306         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7307         the a thread does not suspend within 100ms.
7308
7309         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7310         in addition to StopRequested as well.
7311
7312         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7313
7314         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7315         search the method_hash before inserting a new entry, to avoid crashes when
7316         the same method is inserted multiple times, causing the old 
7317         MonoDebugMethodInfo structure to be freed by the value dtor function.
7318
7319 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7320
7321         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7322         SO_EXLUSIVEADDRUSE where available.
7323
7324 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7327         runtime invoke wrappers, this time it is string ctor wrappers, which
7328         pass a dummy string as 'this' instead of their obj argument. Fixes
7329         #478473.
7330
7331 2009-02-21  Jb Evain  <jbevain@novell.com>
7332
7333         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7334         only get create_culture once.
7335
7336 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7339         check before the locking.
7340         
7341         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7342         (mono_reflection_create_runtime_class): Ditto.
7343         (mono_reflection_sighelper_get_signature_local): Ditto.
7344         (mono_reflection_sighelper_get_signature_field): Ditto.
7345
7346         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7347         is a System.MonoType object or similar.
7348         (monotype_cast): New helper function to cast a MonoObject to a 
7349         MonoReflectionType object.
7350
7351         * object-internals.h: Change MonoReflectionType* members in structures to
7352         MonoObject* members to force the usage of the monotype_cast () function.
7353
7354         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7355         structures/arrays. This causes us to assert instead of crashing when 
7356         instances of user defined subclasses of System.Type are encountered.
7357
7358 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7359
7360         * cil-coff.h:
7361         * icall-def.h:
7362         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
7363         win32 resource loaded from a PE file.
7364
7365         * image.c: fix mono_image_lookup_resource.
7366
7367 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7368
7369         * icall-def.h:
7370         * threads-types.h:
7371         * threads.c: added internal call for WaitHandle.SignalAndWait.
7372
7373 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
7374
7375         * cominterop.c : Adding cominterop_type_from_handle and 
7376           registering it as an icall.  Replacing all references
7377           to type_from_handle.
7378
7379         Code is contributed under MIT/X11 license.
7380
7381 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7382
7383         * Makefile.am: Add lock-tracer.h and lock-trace.c.
7384
7385         * appdomain.c: Call the tracer init function.
7386
7387         * domain-internals.h: Enable the tracer for the domain locks.
7388
7389         * image.c: Enable the tracer for image locks.
7390
7391         * loader.c: Enable the trace for the loader lock.
7392
7393         * lock-tracer.h:
7394         * lock-tracer.c: Initial implementation of the lock trace utility.
7395         The tracer requires a compile time define to be enabled and a env var
7396         to be enabled at runtime.
7397
7398 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * domain.c (mono_domain_code_foreach): Improve documentation.
7401
7402 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
7403
7404         * appdomain.c:
7405         * generic-sharing.c:
7406         * object.c:
7407         * reflection.c:  Adjust locking order to the new semantics where the loader lock
7408         comes first.
7409
7410 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7411
7412         * domain.c: Add mono_domain_code_* functions that perform locking
7413         around the domain codeman.
7414
7415         * domain-internals.h: Export those functions.
7416
7417         * object.c: Use new functions instead of acquiring the domain lock.
7418
7419 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
7420
7421         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
7422         delegate. Fixes #477396.
7423
7424 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * reflection.c (create_custom_attr): Get rid of alloca.
7427
7428 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
7429
7430         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
7431           Adding exception handling for all CCW calls.
7432
7433         Code is contributed under MIT/X11 license.
7434
7435 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7436
7437         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
7438
7439         * marshal.c (emit_marshal_boolean): Add null checks to the new 
7440         native->managed marshalling code. Fixes #476247.
7441
7442 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7443
7444         * class.c (mono_class_get_vtable_entry): Move the addition of
7445         static rgctx invoke wrappers for vtable methods here, this simplifies
7446         a lot of code and causes fewer rgctx wrappers to be created.
7447
7448         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
7449         name of the statistics to begin with an uppercase.
7450
7451 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7452
7453         * reflection.c: Revert previous change as it breaks the build.
7454         
7455 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7456
7457         * verify.c: Properly handle SZARRAY element type.
7458
7459         Fixes #474271.
7460
7461 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
7462
7463         * reflection.c (mono_image_create_method_token): Correctly encode
7464         MethodDef MemberRefParent token.
7465
7466         Fixes #472845.
7467
7468 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
7469
7470         * image.c (mono_image_close): Delete the critical section before
7471         freeing the memory holding it.
7472
7473 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7474
7475         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
7476         Fixes #476257.
7477
7478 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7479
7480         * pedump.c (main): Call mono_marshal_init so pedump
7481         doesn't crash.
7482
7483 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7484
7485         * loader.c (method_from_memberref): Properly fix #474271 and
7486         don't break the runtime bad.
7487
7488 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7489
7490         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
7491         (mono_domain_alloc0): Ditto.
7492
7493 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7494
7495         * loader.c (method_from_memberref): Don't abort if the array
7496         method is not found. A regular loader failure is more informative
7497         and correct.
7498
7499         Fixes #474271.
7500
7501 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
7502
7503         *loader.c: Guard MonoImage::method_cache/methodref_cache
7504         using the image lock instead of the loader lock.
7505
7506         * metadata.h: Add comments about which fields are protected by
7507         the image lock.
7508
7509 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
7510
7511         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
7512
7513         * generic-sharing.c (mono_method_construct_object_context): Remove the
7514         wrapper_type == NONE assert, it is not needed.
7515
7516 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * reflection.c (clear_cached_object): New helper function.
7519         (mono_method_clear_object): New function to clear the cached reflection
7520         objects for a dynamic method.
7521
7522         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
7523         Partly fixes # 463323.
7524         
7525 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7526
7527         * class.c:
7528         * loader.c:
7529         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
7530
7531 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
7532
7533         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
7534         take the image lock instead of the loader lock.
7535
7536         * metadata-internals.h: Export new functions.
7537
7538 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7539
7540         * domain.c (app_config_parse): Remove another use of stat that is
7541         not necessary as g_file_get_contents already does the presence
7542         check. 
7543
7544 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
7547
7548         * marshal.c: Move the bstr handling code to cominterop.c.
7549
7550         * marshal.c: Remove some COM interop code missed previously.
7551
7552 2009-02-12  Miguel de Icaza  <miguel@novell.com>
7553
7554         More Paolo patches from the Wii port:
7555         
7556         * security.c: Remove ves_icall_System_Environment_get_UserName
7557         from here.
7558
7559         * icall.c: And put ves_icall_System_Environment_get_UserName
7560         here. 
7561
7562         * appdomain.c (mono_set_private_bin_path_from_config): Remove
7563         redundant call to stat that was only used to test for the file
7564         existence.   Patch from Paolo.
7565
7566         * gc.c (run_finalize): If COM is disabled, do not link in
7567         mono_marshal_free_ccw.
7568
7569         * generic-sharing.c: Use alloca.h here as well.
7570
7571 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
7572
7573         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
7574
7575 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
7576
7577         * cominterop.c cominterop.h: New files.
7578
7579         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
7580         function/typedefs which are needed by cominterop.c global.
7581
7582 2009-02-12  Mark Probst  <mark.probst@gmail.com>
7583
7584         * generic-sharing.c: Don't take the loader lock to guard image
7585         mempool allocs.
7586
7587 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7588
7589         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
7590         called without the loader lock which is required to guard MonoImage:tokens.
7591
7592 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7593
7594         * class.c:
7595         * metadata.c:
7596         * method-builder.c:
7597         * marshal.c:
7598         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
7599
7600 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7601
7602         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7603         Rework the code to use regular mono_image_alloc/0.
7604
7605         * loader.c: Rework the code to use regular mono_image_alloc/0.
7606
7607         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
7608
7609 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
7610
7611         * object-internals.h : Fixing a typo in the 
7612           MonoReflectionComVisibleAttribute struct.
7613
7614         * marshal.c (cominterop_com_visible): Check the implemented 
7615           interfaces for ComImport.
7616
7617         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
7618           assume that bools should be treated as VARIANTBOOLs.
7619
7620         * marshal.c (emit_marshal_boolean): Adding cases for 
7621           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
7622
7623         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
7624           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
7625
7626         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
7627           should be treated as VARIANTBOOLs.    
7628
7629         Code is contributed under MIT/X11 license.
7630
7631 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7632
7633         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
7634         allocation with the image lock.
7635
7636 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7637
7638         This patch is the last of a series to remove explicit reference of MonoImage::mempool
7639         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
7640
7641         * object.c: Add mono_string_to_utf8_image.
7642
7643         * object-internals.h: Export mono_string_to_utf8_image.
7644
7645         * reflection.c: Rework all explicit references to the the image mempool to go thought
7646         the mono_image_alloc set of functions.
7647
7648 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7649
7650         This patch is the third of a series to remove explicit reference of MonoImage::mempool
7651         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
7652         and generics-sharing.c.
7653
7654         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
7655         as first argument. Note that this function remains broken as it doesn't perform locking around the
7656         mempool allocation.
7657
7658         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
7659
7660         * image.c: Add g_slist_append_image.
7661
7662         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
7663         the supplied image for allocation. Move code into mono_metadata_field_info_full.
7664
7665         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
7666         Fix all related code to do the same.
7667
7668         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
7669
7670         * metadata-internals.h: Fix the signatures.
7671
7672 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
7673
7674         This patch is the second of a series to remove explicit reference of MonoImage::mempool
7675         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
7676         and similar to work using MonoImage.
7677
7678         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
7679         MonoMemPool.
7680
7681         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
7682
7683         * class.c (mono_metadata_signature_deep_dup): Same.
7684
7685         * class.c (inflate_generic_type): Same.
7686
7687         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
7688
7689         * metadata.c (mono_metadata_signature_dup_full): Same.
7690
7691         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
7692         mono_metadata_signature_dup_full.
7693
7694         * metadata.c (mono_metadata_type_dup): Same.
7695
7696         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
7697
7698         * reflection.c: Same.
7699
7700         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
7701
7702         * metadata-internals.h: Fix the signatures.
7703
7704         * class-internals.h: Same.
7705
7706 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
7707
7708         This patch is the first of a series to remove explicit reference of MonoImage::mempool
7709         and use mono_image_alloc set of functions instead. 
7710
7711         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
7712         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
7713         of a MonoMemPool.
7714
7715         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
7716
7717         * class.c (g_list_prepend_mempool): Removed.
7718
7719         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
7720
7721         * image.c: Add g_list_prepend_image.
7722
7723         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
7724
7725         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
7726
7727
7728 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
7731         mono_image_unlock.
7732
7733         * image.c (mono_image_init): Init the lock field.
7734  
7735         * image.c (mono_image_init): Cleanup the lock field.
7736
7737         * image.c: Add mono_image_(un)lock functions.
7738
7739 2009-02-11  Mark Probst  <mark.probst@gmail.com>
7740
7741         * class.c, class-internals.h: mono_method_get_context_general()
7742         combines the functionality of mono_method_get_context() and
7743         mini_method_get_context().
7744
7745         * generic-sharing.c, domain-internals.h:
7746         mono_method_construct_object_context() and
7747         mono_domain_lookup_shared_generic() moved from mini.
7748
7749         * icall.c (ves_icall_InternalInvoke): Handle the case where the
7750         method doesn't have the correct instantiation because it's shared
7751         generic code.  Fixes #473999.
7752
7753 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
7756
7757         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
7758         
7759 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
7760
7761         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
7762
7763         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
7764
7765         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
7766         and recheck the cache for dups after it.
7767
7768         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
7769
7770         Fixes one of the deadlocks found in #473150.
7771
7772 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
7773
7774         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
7775           For Win32, add additional break conditions for accept.
7776
7777         Code is contributed under MIT/X11 license.
7778
7779 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
7780
7781         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
7782         lazily initialize the native wrapper cache.
7783         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
7784         cache, since they are different from the normal wrappers.
7785
7786         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
7787
7788         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
7789         AOT compiled native wrappers.
7790
7791 2009-02-09  Geoff Norton  <gnorton@novell.com>
7792
7793         * appdomain.h:
7794         * security-core-clr.c: Allow enabling core-clr from the embedding
7795         API.
7796
7797 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
7798
7799         * socket-io.c: when requesting all the local ips, if there are no
7800         interfaces up and running, MS returns 127.0.0.1.
7801
7802 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
7803
7804         * mono-perfcounters-def.h: processor time is an inverse time.
7805         Fixes bug #468625.
7806
7807 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
7808
7809         * socket-io.c: an empty host name returns the list of local IPs.
7810         Fixes bug #386637 part 1/2.
7811
7812 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
7813
7814         * verify.c (mono_class_interface_implements_interface): Call
7815         mono_class_setup_interfaces ().
7816         (merge_stacks): Ditto.
7817
7818 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7819
7820         * class.c (mono_class_setup_interfaces): New function to lazily initalize
7821         klass->interfaces.
7822         (mono_generic_class_get_class): Don't initalize klass->interfaces.
7823         (mono_generic_class_get_class): Ditto.
7824
7825 2009-02-06  U-QUACK\miguel  <miguel@quack>
7826
7827         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
7828         they live in security.c
7829
7830         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
7831         another bit from Paolo's code.
7832
7833 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * object.c (build_imt_slots): Add a small optimization to avoid inflating
7836         methods which will be discarded by add_imt_builder_entry ().
7837
7838         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
7839         need to be boxed.
7840
7841         * loader.c: Add a statistics for the size of the memberref signature cache.
7842         
7843         * loader.c (find_cached_memberref_sig): New helper function.
7844         (cache_memberref_sig): Ditto.
7845
7846         * loader.c: Cache the result of parsing memberref signatures, since otherwise
7847         they will be parsed again for every generic instantiation, leading to unbounded
7848         memory growth.
7849
7850 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7851
7852         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
7853         parameters of generic methods.
7854
7855         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
7856         after the original method is copied to the inflated method.
7857         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
7858
7859         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
7860         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
7861
7862         * class.c metadata.c: Update after the changes above.
7863
7864 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
7865
7866         * metadata-verify.c: Simplified error handling and added
7867         section table validation.
7868
7869 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7870
7871         * class-internals.h (MonoClassExt): New structure containing rarely used
7872         fields of MonoClass.
7873         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
7874         through a new 'ext' field.
7875
7876         * class.c (mono_class_alloc_ext): New helper function to allocate 
7877         class->ext.
7878
7879         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
7880
7881 2009-02-05  Mark Probst  <mark.probst@gmail.com>
7882
7883         * object.c (mono_object_get_virtual_method): Properly inflate
7884         generic methods.  Fixes #472692.
7885
7886 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
7887
7888         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
7889         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
7890         for the parent type, the created type must be ready to be used on a generic
7891         instantiation.
7892         We fill this_arg/byval_arg if the parent is a generic instance to make sure
7893         we won't have duplicated entries in generic_inst_cache.
7894
7895         Fixes #469553.
7896
7897 2009-02-05  Miguel De Icaza  <miguel@novell.com>
7898
7899         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
7900         replace with plain BSD per the comments on the bug MONO77637.
7901
7902 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
7903
7904         * class.c (mono_class_get_generic_class): New accessor function.
7905         (mono_class_get_generic_container): Ditto.
7906
7907         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
7908         fields, similar to the ones in MonoMethod.
7909
7910         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
7911         (mono_class_create_from_typedef): Set klass->is_generic if needed.
7912
7913         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
7914         
7915         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
7916         the same information as element_class->byval_arg.
7917
7918         * class.c reflection.c: Remove references to class->byval_arg.
7919
7920         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
7921         klass->enum_basetype directly.
7922
7923         * verify.c metadata.c object.c icall.c reflection.c: Use 
7924         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
7925         directly.
7926
7927 2009-02-04  Miguel de Icaza  <miguel@novell.com>
7928
7929         * icall-def.h: Remove internal calls for sockets when
7930         DISABLE_SOCKET is defined, file system writing features when the
7931         OS only support reading and not writing data and Policy support if
7932         the Policy is disabled.
7933         
7934         * image.c (do_mono_image_open): Apply Paolo's patches for using
7935         mono_file_map_ APIs here.
7936
7937         * assembly.c: Add support for platforms to avoid prefix
7938         auto-detection. 
7939
7940 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
7943         warning.
7944
7945         * class.c (mono_class_inflate_generic_class): New helper function.
7946
7947         * class.c: Use mono_class_inflate_generic_class in a few places. Add
7948         statistics for inflated methods/classes.
7949
7950         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
7951
7952         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
7953         the call is made from Delegate.CreateDelegate () for the invoke method of
7954         a delegate.
7955
7956         * loader.c: Add a statistics for the memory occupied by inflated signatures.
7957
7958         * metadata.c (mono_metadata_signature_size): New helper function.
7959
7960         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
7961         generic instances.
7962
7963         * metadata.c (inflated_method_in_image): Avoid calling 
7964         mono_method_signature () if the method does not already have a signature.
7965
7966 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
7967
7968         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
7969         valuetype is compatible with target type, check by inheritance as a
7970         VT is not really compatible with System.ValueType, for example.
7971
7972         * verify.c (do_invoke_method): Improve error message.
7973
7974         * verify.c (do_box_value): If boxing a nullable, use the type argument
7975         on stack instead.
7976
7977         * verify.c (do_newobj): Improve error message.  
7978
7979         Fixes #469549.
7980
7981 2009-02-03  Miguel de Icaza  <miguel@novell.com>
7982
7983         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
7984
7985 2009-02-03  Mark Probst  <mark.probst@gmail.com>
7986
7987         * generic-sharing.c: Don't hold domain lock when calling
7988         instantiate_other_info().  Fixes #471958.
7989
7990         * domain-internals.h, loader.c: Describe locking policy of domain
7991         lock vs loader lock.
7992
7993 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
7994
7995         * verify.c (mono_delegate_signature_equal): Make it possible to check
7996         first-arg-bound delegates to static method.
7997
7998         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
7999         static methods with the first arg bound.
8000
8001         Fixes #469529.
8002
8003 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8004
8005         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8006         errors.
8007
8008         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8009         under strict mode. Any type, when boxed can be seen as a reference type.
8010
8011         Fixes #469528.
8012
8013 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8014
8015         * object.h: The lower bound of an array is a signed integer value.
8016         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8017         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8018
8019         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8020         calculate the upper bound.
8021         
8022         Fixes #471252.
8023
8024 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8025
8026         From Paolo's work, refactored, cleared up:
8027         
8028         * threadpool.c, icall.c: ifdef code that requires a working socket
8029         stack.
8030
8031         * metadata.c (mono_metadata_field_info): Do not attempt to return
8032         a value from a function declared as void.
8033
8034         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8035         from the console stack.
8036
8037         * assembly.c: use strrchr instead of rindex.
8038
8039         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8040         alloca.h on systems that have it.
8041
8042         * environment.c: Avoid code that uses stuff from
8043         HAVE_SYS_UTSNAME_H
8044         
8045         * appdomain.c: Include sys/time.h.
8046
8047         * console-io.c: include sys/ioctl.h if it is available.
8048
8049 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8050
8051         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8052
8053         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8054         the method builder.
8055
8056         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8057         after it was created and cached, as the later is not thread safe.
8058         
8059 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8060
8061         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8062         called while the debugging module is not initialized. Fixes #471669.
8063
8064 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8065
8066         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8067
8068         Fixes #471255.
8069
8070 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8071
8072         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8073         loader lock is not taken while the templates lock is held.  Fixes
8074         #471089.
8075
8076 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8077
8078         * metadata.c (type_in_image): Added a check to fix a monodis
8079         crash.
8080
8081 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8082
8083         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8084         nullable arguments.
8085
8086         * object.c (mono_runtime_invoke_array): Ditto.
8087         
8088         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8089         freeing wrappers of dynamic methods.
8090
8091         * loader.c (mono_free_method): Call it. Fixes #463323.
8092         
8093         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8094         methods taking vtype/byref arguments, to fix yet another bug caused by
8095         the sharing of runtime invoke wrappers. Partly fixes #471259.
8096
8097 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8100         <first file in file table>:1 when the IL offset does not have an associated
8101         line number.
8102
8103 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8104
8105         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8106         variable info for a method.
8107
8108         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8109         
8110 2009-01-30  Jb Evain  <jbevain@novell.com>
8111
8112         * pedump.c: reuse code from monodis to make sure pedump honors
8113         MONO_PATH, which is needed to verify net_2_1 assemblies.
8114
8115 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8118         there is no line number info.
8119
8120 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8121
8122         Avoid some MonoType allocations
8123         * reflection.c (mono_reflection_initialize_generic_parameter):
8124         Reuse MonoType from param->pklass rather than allocating one.
8125         (mono_dynamic_image_free): Update to changes.
8126
8127 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8128
8129         Rearrange some code to improve consistency
8130         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8131         (mono_reflection_initialize_generic_parameter): ... here.
8132
8133 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8134
8135         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8136         with type constraints as an experiment.
8137
8138         * boehm-gc.c (on_gc_notification): Update mono_stats.
8139
8140 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8141
8142         Avoid some allocations
8143         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8144         pointer to tail array to avoid extra allocation.
8145         * metadata.c (free_generic_inst): Update to changes.
8146         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8147         on-stack struct.
8148
8149 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8150
8151         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8152         return TRUE if the two type objects are the same.
8153
8154 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8155
8156         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8157         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8158         klass->min_align, since klass->min_align contains the managed alignment,
8159         while the native alignment can be different, like for longs on x86.
8160         Fixes #469135.
8161
8162         * class-internals.h (MonoMarshalType): Add a min_align field.
8163
8164 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8165
8166         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8167         the 1.0 format.
8168
8169 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8170
8171         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8172         some comments about the usage of the used_regs field.
8173
8174         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8175         Fixes #469217.
8176
8177 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8178
8179         * appdomain.c: return NULL instead of throwing FileNotFoundException
8180         when LoadAssembly() fails.
8181
8182 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8183
8184         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8185         image if the owner is NULL.  Fixes the AOT failures.
8186
8187 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8190         MonoGenericParam structure using memset so the image field is initialized
8191         as well.
8192
8193 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8194
8195         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8196         a plain store.
8197
8198 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8199
8200         * class.c (mono_class_setup_vtable_general): In the generic instance
8201         optimization, set method->slot for abstract virtual methods. Fixes part of
8202         #467834.
8203
8204 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8205
8206         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8207         which signals that the unloading has started but all appdomain services must
8208         remain operational.
8209
8210         * appdomain.c (mono_domain_unload): The initial state for unloading now
8211         is unloading_start and we switch to unloading after the managed call to
8212         AppDomain::DomainUnload has finished.
8213
8214         The new unloading state has to be created because managed code in the
8215         DomainUnload event can depend on things like the threadpool still working.
8216         The domain must remain fully functional while the event executes.
8217
8218         This shown as an issue due to Process::WaitForExit, which waits for
8219         async reads of stdout and stderr to complete. Since those are processed
8220         in the threadpool the code deadlocks because the DomainUnload callback 
8221         waits for the async read finished event, which should have been set by a
8222         threadpool job but has been discarded due to the domain been in unload
8223         state.
8224
8225 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8226
8227         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8228         image must match.
8229
8230 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8231
8232         * reflection.c (resolve_object): For fields, inflate the class and
8233         then get the field in the inflated class.
8234
8235 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8236
8237         * object-internals.h (struct _MonoException): Added a comment
8238         explaining the new use of trace_ips.
8239
8240 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8241
8242         * generic-sharing.c (inflate_other_data): Inflate array methods
8243         correctly.
8244
8245         * loader.c, class-internals.h: Rename search_in_array_class() to
8246         mono_method_search_in_array_class() and make it non-static.
8247
8248 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8249
8250         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8251         Hopefully fixes #458168.
8252
8253 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8254
8255         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8256         as it is performed elsewhere.
8257
8258         Code is contributed under MIT/X11 license
8259
8260 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8261
8262         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8263         requests queued.
8264         * object.c (mono_raise_exception): Increment the exceptions total
8265         counter when an exception is thrown.
8266         * class-internals.h: Add a location for storing the total number of
8267         asp.net requests served.
8268         * mono-perfcounters.c: Implement update support for asp.net counters
8269         from the class libraries. Implement read support for asp.net counters
8270         and exceptions total counter.
8271
8272 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8273
8274         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8275         accessing klass->methods. Fixes #467385.
8276
8277 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8278
8279         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8280         for byval arguments without an [Out] attribute. Fixes #467212.
8281
8282         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8283         Fix compilation under android.
8284         
8285         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8286         processed, scan them directly after they are copied, to achieve better locality
8287         and cache usage.
8288
8289         * socket-io.c: Applied patch from Koushik Dutta
8290         (koush@koushikdutta.com). Disable IPV6 when running under android.
8291
8292 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * icall.c (ves_icall_InternalExecute): Add write barriers.
8295
8296         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8297         the GC code.
8298
8299         * sgen-gc.c: Implement write barriers in IL code.
8300
8301 2009-01-17  Geoff Norton  <gnorton@novell.com>
8302
8303         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8304
8305 2009-01-17  Geoff Norton  <gnorton@novell.com>
8306
8307         * image.c: When unloading the image->references table, there can be gaps
8308         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8309         when unloading an appdomain.
8310
8311 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8312
8313         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8314         speed up ptr-in-nursery checks.
8315
8316         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8317         threads_lock () to prevent deadlocks.
8318
8319         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8320         does not need to be scanned during minor collections, since writes to it
8321         must use write barriers.
8322
8323 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8324
8325         * metadata-verify.c: Add pe nt header verification.
8326         
8327 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8328
8329         * gc.c: Fix a few warnings when using SGEN.
8330
8331 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8332
8333         * metadata-verify.c: Add pe optional header verification.
8334
8335 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8336
8337         * sgen-gc.c: Add support for user defined marker functions, used by
8338         MonoGHashTable to avoid registering a GC root for every hash node.
8339
8340 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8343         non-pinned roots into separate hashes to avoid having to traverse them
8344         in functions which are only interested in one kind.
8345
8346 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8347
8348         * metadata-verify.c: Add pe header machine field verification.
8349         
8350 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8351
8352         * metadata-verify.c: Add pe header size verification.
8353
8354 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8355
8356         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
8357         using the GC, they don't contain references.
8358
8359         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
8360
8361 2009-01-13  Geoff Norton  <gnorton@novell.com>
8362
8363         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
8364         AppDomains created on the native side can be cleaned up on the native side.
8365
8366 2009-01-13  Geoff Norton  <gnorton@novell.com>
8367
8368         * appdomain.c: Ensure that we call mono_context_init for the embedding api
8369         as well as the managed api.
8370
8371 2009-01-13  Geoff Norton  <gnorton@novell.com>
8372
8373         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
8374         with a MonoAppDomain initialized against it.
8375
8376 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8377
8378         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
8379         
8380         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
8381
8382         * marshal.c: Avoid setting the exception clauses after a method has been entered 
8383         into the wrapper caches. Fixes #465700.
8384
8385         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
8386         method builder.
8387         (mono_mb_create_method): Set the clauses from the method builder.
8388
8389 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
8390
8391         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
8392         Patch from Makoto Kishimoto.
8393
8394 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
8395
8396         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
8397         encoding them as ROOT_DESC_COMPLEX.
8398         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
8399
8400 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
8401
8402         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
8403         no longer point to the nursery.
8404
8405         * sgen-gc.c: Add a few comments/FIXMEs.
8406         
8407         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
8408
8409         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
8410         initialization of the various _method variables thread safe. Fixes
8411         #465377.
8412
8413 2009-01-12  Mark Probst  <mark.probst@gmail.com>
8414
8415         * domain.c, domain-internals.h: Remove the shared_generics_hash
8416         and its lookup functions.
8417
8418 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
8419
8420         * socket-io.c:  Fixing the MSVC build. 
8421
8422         Code is contributed under MIT/X11 license.
8423
8424 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
8425
8426         * metadata-verify.c: Add pe header watermark verification.
8427
8428 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8429
8430         * metadata-verify.c: Add lfanew verification.
8431
8432 2009-01-12  Jb Evain  <jbevain@novell.com>
8433
8434         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
8435         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
8436
8437 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * socket-io.c: Fix the build.
8440
8441         * environment.c: Fix an #ifdef.
8442
8443 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8444
8445         * threadpool.c (async_invoke_thread): Handle the wait function returning
8446         WAIT_IO_COMPLETION as well.
8447         (async_invoke_io_thread): Ditto.
8448
8449 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
8450
8451         * threads.c: Fixing the Windows build.
8452
8453         Code is contributed under MIT/X11 license.
8454
8455 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8456  
8457         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
8458         interrupt a wait.
8459         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
8460         the thread to wait again.
8461
8462 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8463
8464         * metadata-verify.c: Initial skeleton of the metadata verifier.
8465
8466         * pedump.c: Add support for the metadata verifier.
8467
8468         * verify-internal.h: Export the whole assembly metadata verifier function.
8469
8470 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
8471
8472         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
8473
8474 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * Makefile.am: Upgrade dtrace-prelink.sh location.
8477
8478 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8479
8480         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
8481         well. Otherwise the shutdown deadlock that happens on unix will can happen
8482         as well.
8483         If the main thread code finishes too fast it's possible that the finalizer
8484         thread won't have executed yet, won't record itself as the finalizer thread
8485         and the shutdown sequence will wait on it forever.
8486
8487 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
8488
8489         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
8490         with MSVC.
8491
8492 2009-01-08  Miguel de Icaza  <miguel@novell.com>
8493
8494         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
8495         Robert Jordan for pointing this out.
8496
8497 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
8498
8499         * icall.c
8500         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
8501         ves_icall_System_IO_DriveInfo_GetDriveType.
8502
8503 2009-01-07  Miguel de Icaza  <miguel@novell.com>
8504
8505         * icall.c: Wrap calls to mono_strtod in CriticalSection
8506         invocations when using eglib, to work around #464316.
8507
8508 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8509
8510         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
8511         return value of GetCurrentDirectory to never access unitialized memory.
8512
8513 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
8514
8515         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
8516         return value of GetCurrentDirectory and expand the buffer if needed.
8517
8518         Fixes #459094.
8519
8520 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
8521
8522         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
8523           Adding a call to mono_init_com_types.
8524
8525         Code is contributed under MIT/X11 license.
8526
8527 2009-01-07  Geoff Norton  <gnorton@novell.com>
8528
8529         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
8530         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
8531         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
8532         be the value of the ip buffer.
8533
8534 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8535
8536         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
8537         interfaces_packed here.
8538
8539         Fixes part of #463294.
8540
8541 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8542
8543         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
8544
8545         Fixes part of #463294.
8546
8547 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8548
8549         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
8550         is a boxed complex as well.
8551
8552         Fixes part of #463294.
8553
8554 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
8555
8556         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
8557         control if a methodspec should be created for the generic method definition from external assemblies.
8558         Caching of methodspec is done using the handleref hash table.
8559
8560         Fixes #462592.
8561
8562 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
8563
8564         * loader.c (find_method): When searching the interfaces of a class
8565         check the transitive closure of implemented interfaces.
8566
8567         Fixes #463303.
8568
8569 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8570
8571         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
8572         
8573 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
8574
8575         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
8576         interfaces calculation to fill_valuetype_array_derived_types.
8577
8578         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
8579         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
8580         for example.
8581
8582         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
8583         interfaces for valuetypes if needed.    
8584
8585         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
8586         for their basetype as well. Types are array expanded if rank is > 0.
8587
8588         Fixes #400716.
8589
8590 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
8591
8592         * socket-io.h : Changing the signature of
8593           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
8594           the blocking state.
8595
8596         * icall-def.h :  Changing the signature of
8597           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
8598
8599         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
8600           For Windows only.  Avoid blocking when calling accept by
8601           querying for a connection via select.  The loop also queries
8602           the thread state every 1000 micro seconds for the thread
8603           stop state.  This will avoid the process hanging on shutdown
8604           when using a TcpChannel that is never connected to.
8605
8606         Code is contributed under MIT/X11 license.
8607
8608 2008-12-30  Marek Safar  <marek.safar@gmail.com>
8609
8610         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
8611
8612 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8613
8614         * class.c (get_implicit_generic_array_interfaces): Extract common
8615         code to a helper function making it a lot easier on the eyes.
8616
8617 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
8618
8619         * class.c (get_implicit_generic_array_interfaces): If the internal
8620         enumerator is an interface inflate System.Object instead of itself.
8621
8622         Fixes #461261.
8623
8624 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
8625
8626         * object.c (mono_runtime_invoke_array): Don't assert with
8627         byref nullable types.
8628
8629         * marshal.c (mono_marshal_get_runtime_invoke): To handle
8630         byref nullables we unbox the object and store it on the
8631         stack. 
8632         We can't use the boxed object since it is the T of Nullable<T>
8633         and the boxed representation of a nullable it's underlying type
8634         or null.
8635         We could cheat and create a boxed nullable and use the same
8636         machinery of other byref VTs but this feels like a hack and
8637         using the stack has the bonus of reducing heap pressure.
8638
8639         Fixes #461941.
8640
8641 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
8642
8643         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
8644         return value.
8645
8646         Fixes #461867.
8647
8648 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
8649
8650         * icall-def.h : Adding an internal call definition for 
8651           System.Environment.internalBroadcastSettingChange.
8652
8653         * icall.c : Adding a Windows only implementation to broadcast a 
8654           WM_SETTINGCHANGE when an environment variable has changed.
8655
8656         Code is contributed under MIT/X11 license.
8657
8658 2008-12-19  Mark Probst  <mark.probst@gmail.com>
8659
8660         * class.c, class-internals.h: Made
8661         mono_class_has_parent_and_ignore_generics() non-static.
8662
8663 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
8664
8665         * image.c: deal with the mmap failing when loading an image.
8666
8667 2008-12-17  Geoff Norton  <gnorton@novell.com>
8668
8669         * threadpool.c: Ensure that the io_queue_lock is initialized
8670         in all circumstances, as we always attempt to cleanup against it.
8671
8672 2008-12-17  Miguel de Icaza  <miguel@novell.com>
8673
8674         * icall.c (ves_icall_System_Environment_get_Platform): For
8675         compatibility reasons for existing client code we will keep
8676         returning 4 for a while.   
8677
8678         For how long will depend on the documentation being updated, and
8679         for us to give client code a chance to be updated.
8680
8681         This reverts the original decison on #433108 since we did not
8682         catch roughly 33 instances of the broken code in our own source
8683         code base, we did not catch failures on the buildbots, and QA did
8684         not bring this as a problem.
8685
8686         Only today I found some customer's code breaking due to our own
8687         class libraries not being fully updated and tracked it down to
8688         this change.  I am reverting it because if we could not even get
8689         our story straight in our own code base, how can we hope that our
8690         end user code be fixed?
8691
8692         As of this morning, our Wiki page that documents how to detect
8693         Unix had not been fixed.    
8694
8695 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
8696
8697         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
8698
8699         * class.c (mono_class_get_fields): Handle loading errors.
8700
8701 2008-12-12 Mark Mason <mmason@upwardaccess.com>
8702
8703         * 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.
8704         
8705 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
8706
8707         * mono-perfcounters.c: avoid warning.
8708
8709 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
8710
8711         * reflection.c (ensure_runtime_vtable): Work on generic instances and
8712         make sure all interfaces have MonoClass::interface_id set.
8713
8714         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
8715         method table is property set.
8716
8717 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
8718
8719         * class.c: New function mono_class_setup_interface_id that setup
8720         MonoClass::interface_id if needed.
8721
8722         * class-internals.h: Export new function.
8723
8724 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
8725
8726         * class.c: Add code to sanity check the vtable after setup_vtable_general
8727         has done it's work.
8728
8729 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
8730
8731         * icall.c: make Assembly.GetExecutingAssembly work properly when
8732         reflection is used to invoke the method.
8733         Bug #321781 fixed.
8734
8735 2008-12-11  Mark Probst  <mark.probst@gmail.com>
8736
8737         * metadata/generic-sharing.c: Look for constraints in all type
8738         arguments, not just the first one.
8739
8740 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
8741
8742         * appdomain.c: return the correct CodeBase for an Assembly instance
8743         that was loaded from the shadow-copy directories.
8744         Bug #458190 fixed.
8745
8746 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
8749
8750         * sgen-gc.c (check_object): New debugging helper function.
8751
8752         * object.c: Fix calls to mono_value_copy_array ().
8753
8754 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
8755
8756         * class.c (mono_class_setup_fields): If working on an inflated class
8757         first check if the generic definition did init with success.
8758
8759         Fixes #445361.
8760
8761 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
8762
8763         pedump.c (main): Fix a warning.
8764
8765 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
8766
8767         * object-internals.h : Adding a definition for 
8768           MonoReflectionComVisibleAttribute.
8769
8770         * marshal.c (cominterop_com_visible) :  Method added to check the 
8771           ComVisible attribute of a class.
8772
8773         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
8774           cominterop_raise_hr_exception added to consolidate common code 
8775           to raise hr exceptions.
8776
8777         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
8778           if a managed class should support IDispatch.
8779
8780         * marshal.c 
8781           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
8782           Added additional checks for managed object when getting 
8783           an IDispatch interface.
8784
8785         Code is contributed under MIT/X11 license.
8786
8787 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
8788
8789         pedump.c (main): Handle mono_get_method () returning NULL. 
8790
8791 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * marshal.h: Fix a warning.
8794
8795 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
8796
8797         * marshal.c : Adding cominterop_release_all_rcws to release all
8798           runtime callable wrappers held by the runtime.
8799
8800         * marshal.h : Adding declaration for cominterop_release_all_rcws.
8801           
8802         Code is contributed under MIT/X11 license.
8803
8804 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
8805
8806         * metadata.c (mono_image_alloc_lock): New helper function.
8807         (mono_image_alloc0_lock): Ditto.
8808
8809         * metadata.c: Use the alloc_lock () helper functions for allocating
8810         memory from the image mempool.
8811
8812 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
8813
8814         * class.c (mono_class_from_generic_parameter): Document it's
8815         locking behavior. Fix double checked locking here, we stored in
8816         param->pklass a partially initialized MonoClass and no membar was used.
8817
8818 2008-12-05  Marek Habersack  <mhabersack@novell.com>
8819
8820         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
8821         (3) functions are present in the C library use them to do the
8822         job. If they are absent, make sure that the sum of int_part and
8823         dec_part is rounded before returning. This is necessary due to the
8824         division of dec_part by the power of 10 before the final addition
8825         is performed - if the result is not rounded in some cases it will
8826         yield invalid results.
8827
8828 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
8831         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
8832         instruction instead of a pointer constant.
8833
8834 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
8835
8836         * loader.c (mono_method_get_header): Do most of the work outside the
8837         loader lock, to avoid assembly load hook deadlocks.
8838
8839         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
8840         (mono_metadata_parse_type_full): Ditto.
8841
8842 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
8843
8844         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
8845         Make the stack depth fixed. Ensure proper argument passing to the backtrace
8846         funtions. Finally, use a lock to produce well ordered output.
8847
8848         The lock looks silly, as all calls to the corlib mempool should be guarded
8849         with the loader lock, but for some reason this fact doesn't help. 
8850
8851         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
8852
8853 2008-12-02  Mark Probst  <mark.probst@gmail.com>
8854
8855         * socket-io.c: 64 bit big-endian fixes.
8856
8857 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
8858
8859         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
8860         targets that require strict compatibility between the types.
8861
8862         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
8863         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
8864         Kill the strict argument and create a new one valuetype_must_be_boxed.
8865
8866         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
8867         state that all valuetypes must be boxed.
8868
8869         Fixes #448560.
8870
8871 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
8872
8873         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
8874         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
8875
8876         Contributed under MIT/X11 license.
8877
8878 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
8879
8880         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
8881         the inflate_generic_type machinery should handle it.
8882
8883         This avoids a crash when the field's flags is zero and it's type is
8884         a primitive.
8885         What happens is that mono_metadata_parse_type_full will see that opt_attrs
8886         is zero and will return one of the cached built-in primitive types. Since
8887         those types live in read-only memory, the code that copies it crashes.  
8888
8889 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8890
8891         * object.c: Don't put function descriptors into generalized IMT
8892         thunks.
8893
8894 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8895
8896         * class.c: Enable generic code sharing on PPC64.
8897
8898 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8899
8900         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
8901         from mini/mini.c.
8902
8903         * generic-sharing.c: Allocate the method template slists from the
8904         image mempool so it doesn't leak.
8905
8906 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
8907
8908         * class.c (generic_array_methods): Release the linked list.
8909
8910 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8911
8912         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
8913         invocation to g_utf16_to_utf8().
8914
8915 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8916
8917         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
8918         arguments on big endian archs.
8919
8920 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
8921
8922         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
8923         the type name (test added in corlib).
8924
8925 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
8926
8927         * pedump.c: initialize perf. counters. Fixes a segv.
8928
8929 2008-11-25  Martin Baulig  <martin@ximian.com>
8930
8931         * mono-debug-debugger.c
8932         (mono_debugger_runtime_invoke): Return the exception object if an
8933         exception was thrown.  Visual Studio displays the exception object
8934         in the locals window.
8935
8936 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8937
8938         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
8939         ftnptr.
8940
8941 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8942
8943         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
8944         MONO_TYPE_U are sizeof (gpointer), too.
8945
8946 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8947
8948         * marshal.c (mono_type_native_stack_size): Fixed size and
8949         alignment for reference types.
8950
8951 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8952
8953         * class.c (mono_class_generic_sharing_enabled): Disable generic
8954         code sharing for PPC64.
8955
8956 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         * icall.c (mono_method_get_equivalent_method): Make sure
8959         method->klass->methods is inited before looping over it.
8960
8961 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8962
8963         * object.c: when calling ExecuteAssembly in a newly created domain,
8964         the configuration file and application base are already set up.
8965         Bug #446353 take 2 fixed.
8966
8967 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
8970         Fixes #444715. Fix a warning.
8971
8972 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
8973
8974         * appdomain.c: write the full path of the assembly to the .ini file
8975         created when "shadow-copying"
8976         Bug #446353 fixed.
8977
8978 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
8981         if signature==FALSE.
8982
8983 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8984
8985         * marshal.h : Fix the cygwin build.
8986            marshal.c:12442: undefined reference to `_IID_IMarshal'
8987           
8988         Code is contributed under MIT/X11 license.
8989
8990 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8991
8992         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
8993           free threaded marshaler when QueryInterface is called on a COM callable
8994           wrapper requesting the IMarshal interface.
8995           
8996         Code is contributed under MIT/X11 license.
8997
8998 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9001
9002         * reflection.c (mono_type_get_object): Special case the very common
9003         void type.
9004
9005         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9006         hold typeof(void).
9007
9008 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9009
9010         * process.h : Adding method declaration for
9011           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9012           
9013         * process.c : Adding implementation for
9014           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9015           
9016         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9017           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9018
9019         Code is contributed under MIT/X11 license.
9020
9021 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9022
9023         * appdomain.c (unload_thread_main): Clean up threadpool by
9024         calling mono_thread_pool_remove_domain_jobs.
9025
9026         * domain-internals.h (struct _MonoDomain): Add new fields to
9027         help coordinate the cleanup of the threadpool.
9028
9029         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9030         that cleans up the threadpool of all jobs associated with an appdomain.
9031         It does that by cleaning up the queues and making sure all active
9032         threads are accounted.
9033
9034         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9035         unloaded or in the process of. Take this is such way that there is
9036         no race condition between another thread starting the unload and the
9037         current thread acknowledging it.
9038
9039         * threadpool.c (async_invoke_thread): Same.
9040
9041         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9042         firing the new thread.
9043
9044         * threadpool.c (start_tpthread): Same.
9045
9046         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9047
9048         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9049
9050 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9051
9052         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9053         Add support for DuplicateHandle.
9054         
9055         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9056         Add support for DuplicateHandle.
9057         
9058         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9059         Add support for DuplicateHandle.
9060
9061         Code is contributed under MIT/X11 license.
9062
9063 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9064
9065         * class-internals.h: Make min_align into a whole byte.
9066
9067         * class.c: Set min_align for SIMD types to 16.
9068
9069 2008-11-05  Geoff Norton  <gnorton@novell.com>
9070
9071         * attach.c: Default the attacher to enabled for all cases including
9072         embedded.
9073
9074 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9075
9076         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9077         change r117650.
9078
9079 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9080
9081         * monitor.c, monitor.h: New function for querying offsets of
9082         members of MonoThreadsSync.
9083
9084 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9085
9086         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9087         to speed up this function and to avoid the boundless memory growth caused by
9088         the signature_dup () calls.
9089
9090 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9093         wrapper.
9094
9095         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9096         by 1 bit.
9097
9098         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9099
9100 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9101
9102         * appdomain.c:
9103         * domain-internals.h: made mono_set_private_bin_path_from_config()
9104         "internal".
9105         * object.c: call the above function after setting the configuration
9106         file path for the root domain.
9107         Fixes bug #314478.
9108
9109 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9110
9111         * assembly.c: when the assembly is loaded from an absolute path, end
9112         basedir with a directory separator.
9113         Bug #440781 fixed.
9114
9115 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9116
9117         * monitor.c (mono_monitor_get_fast_enter_method): If
9118         CompareExchange is not available, don't create the fastpath
9119         instead of asserting.  (The method is missing in the 1.1 profile.)
9120
9121 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9122
9123         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9124
9125         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9126         Monitor.Exit IL fastpaths.
9127
9128 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9129
9130         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9131
9132 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9133
9134         * class.c (mono_class_create_from_typedef): Added Vector2l.
9135
9136 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * class.c (mono_class_create_from_typedef): Added Vector2d.
9139
9140 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9141
9142         * appdomain.c: translate \ into / for cache_path.
9143         * domain-internals.h: new mono_is_shadow_copy_enabled().
9144         * icall.c: (fill_reflection_assembly_name) do the same path
9145         manipulations that get_code_base does.
9146         (get_code_base) use mono_is_shadow_copy_enabled.
9147
9148 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9149
9150         * appdomain.c: shadow-copied assemblies go to CachePath +
9151         ApplicationName when both are set. DynamicBase has nothing to do with
9152         shadow copies.
9153         Bug #406877 fixed.
9154
9155 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9156
9157         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9158         STANDALONESIG table.
9159
9160         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9161         standalone signatures.
9162
9163         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9164         comparison code: instead of comparing the signatures using a custom
9165         equals function, transform them to a common signature and compare that. This
9166         works better with AOT.
9167
9168 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9171
9172         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9173         call for generic instances.
9174         (mono_class_setup_properties): Call setup_properties () before accessing
9175         gklass->properties.
9176
9177         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9178         over the virtual methods of a class using metadata if possible, avoiding the
9179         creation of MonoMethod's for non-virtual methods.
9180         
9181         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9182         get_virtual_methods () to iterate over the virtual methods of classes.
9183
9184 2008-10-25  Martin Baulig  <martin@ximian.com>
9185
9186         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9187
9188 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9189
9190         * class.c (mono_class_create_from_typedef): Added Vector4i.
9191
9192 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9193
9194         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9195         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9196         special-casing applies to eliminate the call completely.
9197
9198 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         * class.c (mono_class_create_from_typedef): Added Vector8s.
9201
9202 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9203
9204         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9205
9206 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9207
9208         * icall.c: get rid of annoying warning.
9209
9210 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9211
9212         * threadpool.c: in 1.x, if you change the background status of the
9213         threadpool thread, it's not reset.
9214         Remove unnecessary calls to SetState.
9215
9216 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9217
9218         * threadpool.c: asynchronously create a set of idle threads upon first
9219         use of the threadpool. SetMinThreads will now start the appropriate
9220         number of idle threads if they are not already running. The default is
9221         1 threadpool thread per CPU. Increased the maximum number of threads
9222         per CPU to 10.
9223
9224 2008-10-22  Martin Baulig  <martin@ximian.com>
9225
9226         Revert r116521 from Zoltan, it breaks the debugger:
9227
9228         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9229         over the virtual methods of a class using metadata if possible, avoiding the
9230         creation of MonoMethod's for non-virtual methods.
9231         
9232         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9233         get_virtual_methods () to iterate over the virtual methods of classes.
9234
9235 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9236
9237         * threads.c: when creating a threadpool thread, set its state to
9238         'background'.
9239         * threadpool.c: reset the background state of a threadpool thread
9240         after finishing each work item
9241         Bug #437888 fixed.
9242
9243 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9246         
9247         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9248         generic instances which works by inflating the methods in the container
9249         class's vtable.
9250
9251         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9252         variant which doesn't make a copy if no inflation was done.
9253         (mono_class_setup_fields): Use it.
9254
9255         * metadata.c (mono_metadata_get_shared_type): New helper function to
9256         return a shared instance of a given MonoType.
9257
9258         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9259         a copy of most non-generic types.
9260
9261 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9262
9263         * threadpool.c: remove one more GetSystemInfo () call.
9264
9265 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9266
9267         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9268         use the code in mono-proclib.h to get processor information.
9269
9270 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9271
9272         * appdomain.c: fixed the logic that determines whether assemblies in a
9273         directory are "shadow-copied" or not. Bug #433483 fixed.
9274
9275 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9276
9277         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9278         warning.
9279
9280 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9281
9282         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9283         returning a vtype.
9284
9285         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9286         reflection.c: Use mono_field_get_name () for accessing a field's name.
9287
9288         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9289         class.c
9290
9291         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9292         field.
9293
9294         * loader.c (find_method_in_class): Reenable the metadata optimization by
9295         not using it for generic instances.
9296
9297         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9298         data/def_type fields from MonoClassField into a separate structure.
9299         (struct MonoClassField): Remove data/def_type fields.
9300         (struct _MonoClass): Add a 'field_def_values' array to store the default
9301         values/RVA for fields.
9302
9303         * class.c reflection.c: Update after the changes.
9304         
9305         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9306         for accessing field->data.
9307
9308         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9309
9310         * loader.c (find_method_in_class): Revert the last change for now as
9311         it breaks Mono.C5 unit tests.
9312
9313         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9314         'field_generic_types' and 'field_objects' which contain the information
9315         previously stored in MonoInflatedField.
9316         (MonoInflatedField): Delete.
9317         (struct _MonoClassField): Delete 'generic_info' field.
9318
9319         * reflection.c: Store the information which was previously in 
9320         field->generic_info in MonoDynamicGenericClass instead.
9321
9322         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9323         MonoClassField changes.
9324
9325 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9326
9327         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9328         store the value inside the data array of the MonoMethodWrapper.
9329         This saves memory, is faster and fixes the lifetime issues (methods
9330         were never removed from the hash previously). May also fix bug#436996.
9331
9332 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9335         generic instances, compute the type from the generic definition instead of
9336         looking in field->generic_info.
9337
9338         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9339         for inflated fields, the only user was get_fieldref_token () which no
9340         longer needs it.
9341
9342         * class.c (mono_class_init): Revert the last change as it seems to cause
9343         crashes.
9344
9345         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9346         bytes on 64 bit platforms.
9347
9348         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9349         
9350         * object.c (mono_class_create_runtime_vtable): Don't initalize
9351         field->data/field->def_type here, it is done lazily by 
9352         mono_class_get_field_default_value ().
9353
9354         * icall.c (ves_icall_get_enum_info): Call 
9355         mono_class_get_field_default_value () instead of directly accessing
9356         field->data and field->def_type.
9357
9358         * object.c (get_default_field_value): Ditto.
9359
9360         * class.c (mono_field_get_data): Ditto.
9361         
9362         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
9363         call for generic instances.
9364
9365         * loader.c (find_method_in_class): If klass != from_class, then inflate
9366         the method with the context of from_class, since the caller assumes this.
9367
9368 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
9371         for accessing method->slot.
9372
9373 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
9374
9375         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
9376
9377 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9378
9379         * class.c (mono_method_get_vtable_index): Use
9380         mono_method_get_vtable_slot () for accessing method->slot.
9381
9382         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
9383         accessing klass->methods.
9384
9385         * class.c (mono_method_get_vtable_slot): New helper function.
9386         (mono_class_get_vtable_entry): Ditto.
9387         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
9388         accessing method->slot.
9389
9390         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
9391         method to get_inflated_method ().
9392
9393         * class.c (mono_class_get_inflated_method): New helper method to obtain
9394         a method of an inflated class without calling setup_methods ().
9395         (mono_class_get_cctor): Use get_inflated_method.
9396
9397         * generic-sharing.c (mono_class_get_method_generic): Ditto.
9398         
9399         * marshal.c image.c: Lazily create all the marshal caches.
9400
9401         * image.c (mono_image_init): Move initialization of runtime_invoke
9402         caches to marshal.c.
9403
9404         * marshal.c (get_cache): New helper function to lazily initialize a 
9405         wrapper cache.
9406         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
9407
9408         * debug-helpers.c (mono_method_full_name): Include generic arguments.
9409
9410 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
9411
9412         * loader.c: fixed check for interface type.
9413
9414 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9415
9416         * appdomain.c: check for NULL setup before it's referenced.
9417
9418 p
9419 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9420
9421         * class.c: remove the unused old vtable setup code.
9422
9423 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9424
9425         * class.c: don't depend on interface order in
9426         setup_interface_offsets (bug #435777).
9427         * reflection.c: sort the InterfaceImpl table (patch from
9428         Jb Evain  <jbevain@novell.com>).
9429
9430 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9431
9432         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
9433         the low level assemblies lock.
9434
9435 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
9436
9437         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
9438         object.c, reflection.c, socket-io.c, threads.c: introduced
9439         mono_framework_version () to return the major framewrok version,
9440         changed the code that was using more complex patterns to use it.
9441         Return the correct value for PlatformID for OSX.
9442
9443 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
9444
9445         * icall-def.h, process.h, process.c: added an icall to get info about
9446         processes using mono-proclib.
9447
9448 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
9449
9450         * mono-perfcounters.c: use the mono-proclib functions to
9451         access process information.
9452
9453 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9454
9455         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
9456         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
9457         reflection.c: remove rawbuffer usage: mmap support is more sanely
9458         provided by utils/mono-mmap.
9459
9460 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
9461
9462         * gc.c: use posix semaphores when possible so that
9463         mono_gc_finalize_notify() is signal safe.
9464
9465 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
9466
9467         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
9468         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
9469         be #ifdef-ed out, the linker will remove the rest.
9470
9471         * marshal.c: Implement DISABLE_COM.
9472
9473         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
9474
9475 2008-10-11  Miguel de Icaza  <miguel@novell.com>
9476
9477         * locales.c (string_invariant_compare_char): Optimization: do not
9478         call g_unichar_type unless we actually need the information.
9479
9480 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9481
9482         * object.c, class-internals.h: Also create remoting trampolines
9483         for generic methods.  Pass the domain to the remoting trampoline
9484         creation function, too.
9485
9486 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9487
9488         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
9489
9490 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9491
9492         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
9493         Vector4ui.
9494
9495 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9496
9497         * assembly.c:
9498         * locales.c: remove the use of g_strdown. Fixes bug #322313.
9499
9500 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9501
9502         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
9503         for the least possible amount of time (extending the fix in r113458).
9504
9505 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9506
9507         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
9508
9509 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9510
9511         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
9512         as possible simd intrinsic types.
9513         Optimized the test to check for the common prefix first.
9514
9515 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
9516
9517         * class.c: back out part of a broken optimization committed on
9518         May 23th (bug #433908).
9519
9520 2008-10-09  Mark Probst  <mark.probst@gmail.com>
9521
9522         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
9523         Win32.  Should fix #432388 for most cases until we have the new
9524         profiler on Win32.
9525
9526 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9527
9528         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
9529         instead of using inst->id so the hash is stable for AOT.
9530
9531 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
9532
9533         * appdomain.c:
9534         * icall.c: create a .ini file for shadow-copied assemblies that
9535         contains the location of the original assembly. Use this to return the
9536         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
9537         Also fix the number of '/' for windows when returning the CodeBase.
9538         Fixes bug #430920.
9539
9540 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9541
9542         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
9543
9544         Code is contributed under MIT/X11 license.
9545
9546 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9547
9548         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
9549           if if the class vtable needs initialized.
9550
9551         Code is contributed under MIT/X11 license.
9552
9553 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9554
9555         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
9556           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
9557           STRING->BSTR, and CLASS->INTERFACE.
9558
9559         Code is contributed under MIT/X11 license.
9560
9561 2008-10-07  Marek Habersack  <mhabersack@novell.com>
9562
9563         * sysmath.h: changed the declaration of the
9564         ves_icall_System_Math_Round2 icall by adding an extra
9565         away_from_zero parameter.
9566
9567         * sysmath.c (ves_icall_System_Math_Round2): added support for
9568         away from zero rounding. The icall now takes an extra boolean
9569         parameter to signal that away from zero operation is requested.
9570
9571 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
9574         the delegate klass so it can work with full-aot.
9575         (mono_marshal_get_delegate_end_invoke): Ditto.
9576         (mono_marshal_get_delegate_invoke): Ditto.
9577
9578 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
9579
9580         * gc.c, attach.h, attach.c: remove a bad pattern:
9581         add_finalizer_callback () is not implemented correctly, it can't
9582         without adding more overhead to the finalizer loop and it's not
9583         even needed, since we know exactly what we need to call, so there is
9584         no need to do so through an expensive function pointer.
9585
9586 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
9587
9588         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
9589         for the no-gc case.
9590         * attach.c (mono_attach_init): Remove the #ifdef.
9591
9592 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
9593
9594         * attach.c (mono_attach_init): Don't use
9595         mono_gc_add_finalizer_thread_callback when compiling without GC.
9596         Fixes #432306.
9597         
9598         Code is contributed under MIT/X11 license.
9599
9600 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9601
9602         * class.c (mono_class_create_from_typedef): Remove the 
9603         #ifndef DISABLE_SIMD stuff.
9604
9605 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9606
9607         * class-internals.h (MonoClass): Added simd_type bit field.
9608
9609         * class.c (mono_class_create_from_typedef): Check if type is a simd
9610         intrinsic.
9611
9612 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9613
9614         * object.c (mono_method_add_generic_virtual_invocation): Only add
9615         instantiations to the thunk whose count is at least as large as
9616         the threshold.
9617
9618 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
9619
9620         * icall.c: changed the Type of the exception thrown when trying to
9621         invoke a constructor on an abstract class. Part of the fix for bug
9622         #324185.
9623
9624 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9625
9626         * class.c, class-internals.h (mono_method_get_vtable_index): New
9627         function which returns the index into the vtable and properly
9628         handles inflated virtual generic methods.
9629
9630 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9631
9632         * object.c, domain.c, object-internals.h, domain-internals.h:
9633         Generalize IMT thunk machinery to also handle thunks for virtual
9634         generic method invokes.  When a virtual generic method is invoked
9635         more than a number of times we insert it into the thunk so that it
9636         can be called without lookup in unmanaged code.
9637
9638         * generic-sharing.c, class-internals.h: Fetching a
9639         MonoGenericInst* for a method from an (M)RGCTX.
9640
9641 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9642
9643         * marshal.c (emit_marshal_string): Applied a variant of a patch by
9644         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
9645         marshalling. Fixes #431304.
9646
9647 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
9648
9649         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
9650           handle when ref is specified without In or Out.
9651
9652         Code is contributed under MIT/X11 license.
9653
9654 2008-09-30  Mark Probst  <mark.probst@gmail.com>
9655
9656         * loader.c (mono_get_method_constrained): Don't expand method with
9657         the class's context, because it's already a method of that class.
9658
9659 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
9660
9661         * attach.c : should be correct build fix.
9662
9663 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9664
9665         * attach.c: Fix the previous change.
9666
9667 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
9668
9669         * attach.c : quick w32 build fix.
9670
9671 2008-09-27  Miguel de Icaza  <miguel@novell.com>
9672
9673         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
9674         crashes MonoDevelop: #430455.
9675
9676 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * domain-internals.h (struct _MonoDomain): Move most fields used only by
9679         the JIT do MonoJitDomainInfo in ../mini/mini.h.
9680
9681         * domain.c: Remove initialization/cleanup of the removed fields.
9682
9683 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9684
9685         * class.c (mono_class_generic_sharing_enabled): Enable generic
9686         code sharing for PPC.
9687
9688 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
9689
9690         * attach.c : Fixing the Windows builds.
9691
9692         Code is contributed under MIT/X11 license.
9693
9694 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9695
9696         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
9697         the default generic sharing mode to 'all'.
9698
9699 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9700
9701         * generic-sharing.c, class-internals.h: New function for checking
9702         whether a method needs a static RGCTX invoke wrapper.  A few
9703         funtions moved from mini/generic-sharing.c.
9704
9705         * icall.c: New function used.
9706
9707 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9708
9709         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
9710         Static RGCTX invoke wrapping applies to value type methods, too.
9711
9712         * class.c (mono_class_setup_vtable_general): In generic-shared
9713         value types, wrap methods with a static RGCTX invoke wrapper.
9714
9715 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9716
9717         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
9718         osx build.
9719
9720 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
9723         register a callback which is called when the finalizer thread is woken
9724         up.
9725         (finalizer_thread): Call the callback if it exists.
9726
9727         * attach.h attach.c: New files, implementing the attach mechanism.
9728
9729         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
9730         
9731         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
9732         by the previous change.
9733
9734 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9735
9736         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
9737         loader.c, marshal.c, metadata-internals.h, metadata.c,
9738         method-builder.c, object.c, reflection.c: introduced specific functions
9739         to allocate from the domain and image mempools and cleaned up most of
9740         the code to use them (still missing a few in reflection.c).
9741         Keep the loader bytes counter updated.
9742
9743 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
9744
9745         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
9746         loader-related counters.
9747
9748 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
9749
9750         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
9751         added more MS-compatible counters.
9752
9753 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9754
9755         * class.c (mono_class_setup_fields): Call setup_fields before accessing
9756         class->blittable. Fixes #428217.
9757
9758 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * reflection.c (mono_image_get_field_on_inst_token): Call 
9761         field_encode_signature () since that handles custom modifiers too.
9762         Fixes #424663.
9763
9764 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
9765
9766         * reflection.c (add_custom_modifiers): New helper function to merge custom
9767         modifiers stored in objects to a MonoType.
9768         (fieldref_encode_signature): Encode custom modifiers.
9769         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
9770         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
9771
9772 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
9773
9774         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
9775         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
9776         64-bit IL only images because imports are not resolved for IL only images.
9777         Special thanks to Bill Holmes for finding this bug and testing the patch.
9778         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
9779
9780         Contributed under MIT/X11 license.
9781
9782 2008-09-19  Miguel de Icaza  <miguel@novell.com>
9783
9784         * mono-config.c (dllmap_start): Add support for the bits keyword
9785         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
9786
9787 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9788
9789         * reflection.c (inflate_mono_method): When the class the method is
9790         to be inflated for is itself not inflated, just return the method.
9791
9792 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
9793
9794         * mono-perfcounters.c: use more user friendly process instance names.
9795
9796 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
9797
9798         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
9799           handle "[in] ref" and "[in][out] ref" cases.
9800
9801         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
9802           to mono_mb_create_method.  This was causing problems calling native to
9803           managed passing Variants by value.
9804
9805         Code is contributed under MIT/X11 license.
9806
9807 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
9808
9809         * class.c (can_access_internals): Call mono_assembly_load_friends ()
9810         before accessing the friend_assembly_names field.
9811
9812         * assembly.c (mono_assembly_load_friends): Make this callable multiple
9813         times.
9814         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
9815         called lazily when it is needed.
9816
9817         * metadata-internals.h (struct _MonoAssembly): Add 
9818         'friend_assembly_names_inited' flag.
9819
9820 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
9821
9822         * mono-perfcounters-def.h: fix the types of a few counters.
9823         * mono-perfcounters.c: implemented the instance names getter
9824         and a few bugfixes.
9825
9826 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
9827
9828         * culture-info-table.h : regenerated.
9829
9830 2008-09-17  Robert Jordan  <robertj@gmx.net>
9831
9832         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
9833         context bound objects. Fixes #415577.
9834
9835         Code is contributed under MIT/X11 license.
9836
9837 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
9838
9839         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
9840         implementation (bug #423582).
9841
9842 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
9843
9844         * object.c (mono_object_get_virtual_method): Handle the case method->slot
9845         is not set. Fixes #426309.
9846
9847 2008-09-16  Jb Evain  <jbevain@novell.com>
9848
9849         * class.c (mono_class_from_name): fix the exported type look up
9850         when the type is defined in a referenced assembly.
9851
9852 2008-09-16  Jb Evain  <jbevain@novell.com>
9853
9854         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
9855         increment the next index counter on each iteration to make that work
9856         for more than one type forwarder. Unmanaged part to fix #422929.
9857
9858 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9859
9860         * object-internals.h: enum ComInterfaceType in
9861         MonoInterfaceTypeAttribute is guint32, not guint16.
9862
9863 2008-09-12  Mark Probst  <mark.probst@gmail.com>
9864
9865         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
9866         writing code.
9867
9868 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9869
9870         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
9871         not gboolean.
9872
9873 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9874
9875         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
9876         Endianness fixes for MonoSymbolFileOffsetTable.
9877
9878 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
9879
9880         * process.c (complete_path) : Removing quotes from the 
9881           input path.  The glib file routines do not handle file paths
9882           that have quotes around them.
9883
9884         Code is contributed under MIT/X11 license.
9885
9886 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
9887
9888         * socket-io.h : Adding a comment to provide locations where 
9889           changes to MonoSocketAsyncResult need to be synced.
9890
9891         Code is contributed under MIT/X11 license.
9892
9893 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
9896         parameters as well. Fixes #425001.
9897
9898 2008-09-08  Miguel de Icaza  <miguel@novell.com>
9899
9900         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
9901         windows build.
9902
9903 2008-09-07  Miguel de Icaza  <miguel@novell.com>
9904
9905         * console-io.c: Add support for tracking the window size if it
9906         changes.
9907
9908         The setup is very simple: the TtySetup function will now return a
9909         pointer to a location in memory that tracks the current console
9910         size.  The managed code checks its current value every time its
9911         queried against the last value set, and updates accordingly.
9912
9913         With this setup we can work with multiple consoles, and we do not
9914         require to poke into managed code from a signal handler.
9915
9916         Additionally, the environment for COLUMNS and LINES is now handled
9917         in unmanaged code.
9918
9919         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
9920
9921 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9922
9923         * marshal.c (mono_type_native_stack_size): Treat
9924         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
9925
9926 2008-09-04  Jb Evain  <jbevain@novell.com>
9927
9928         * class.c (mono_class_is_assignable_from): fix assignability of nullables
9929         to nullables.
9930
9931 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
9932
9933         * verify.c (verify_type_compatibility_full): Revert change
9934         to allow converting a native int to unmanaged pointer be verifiable
9935         under non-strict mode.
9936         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
9937
9938         * verify.c: Added some TODOs.
9939
9940 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
9941
9942         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
9943           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
9944           Changed to use GlobalAlloc for the memory returned on Windows platforms.
9945
9946         Code is contributed under MIT/X11 license.
9947
9948 2008-09-02  Jb Evain  <jbevain@novell.com>
9949
9950         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
9951
9952 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
9953
9954         reflection.c (typebuilder_setup_fields): Handle classes with
9955         explicit size.
9956
9957 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
9958
9959         class.c (mono_class_setup_events): Add memory barrier due to
9960         double checked locking.
9961         
9962         class.c (mono_class_setup_properties): Same.
9963
9964 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9965
9966         * class.c (mono_class_is_assignable_from): Fix the build.
9967         
9968         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
9969         before accessing klass->interface_bitmap. Fixes #421744.
9970
9971 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9972
9973         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
9974         the runtime into no-exec mode, useful when running the AOT compiler.
9975
9976         * appdomain.c gc.c object.c: Avoid executing managed code when running
9977         in no-exec mode.
9978         
9979         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
9980
9981         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
9982         special case when the mono_assembly_loaded () returns NULL because the 
9983         search hook is not installed.
9984
9985 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
9988         crashes in bstr marshalling on linux.
9989
9990 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
9993         with more than one parameter.
9994
9995 2008-08-24  Miguel de Icaza  <miguel@novell.com>
9996
9997         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
9998         start/stop flow control as well when turning off ICANON (allows
9999         C-s and C-q to be read by Console.ReadKey).
10000
10001 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10002
10003         * class.c (mono_class_init): Move the initialization of nested classes
10004         into mono_class_get_nested_types (). Fixes #418433.
10005
10006         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10007         flag.
10008
10009         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10010         iterating tough the nested classes of a class.
10011
10012 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10015         on arm.
10016
10017 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10018
10019         * console-io.c (sigcont_handler): Support signal chaining for
10020         SIGCONT.
10021
10022         (console_set_signal_handlers): Use best practices with sigaction,
10023         clear the structure before using it. 
10024
10025 2008-08-22  Robert Jordan  <robertj@gmx.net>
10026
10027         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10028         Fix the Windows build.
10029
10030 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10031
10032         * class.c (mono_class_generic_sharing_enabled): Make the default
10033         sharing mode 'corlib'.
10034
10035 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * console-io.c (console_set_signal_handlers): Fix a warning.
10038
10039         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10040         method normally, the JIT will take care of avoiding recursion.
10041
10042 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10043
10044         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10045
10046         Code is contributed under MIT/X11 license.
10047
10048 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10049
10050         * console-io.c (sigcont_handler): We need to restore the entire
10051         termios state, not only the original settings, as things like echo
10052         can be controlled after this (Booish exposes this issue with its
10053         own ReadLine implementation).
10054
10055         Additionally, we need to set the terminal back into keypad_xmit
10056         mode.
10057         
10058         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10059         string as a paramter as well.   Otherwise we get different
10060         keyboard sequences.
10061
10062 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10063
10064         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10065         delegates with byref out parameter passing. Fixes #351520.
10066
10067         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10068         a generic context.
10069         (mono_type_get_desc): Add the type arguments for GENERICINST.
10070         (mono_method_full_name): Stringify the class name using mono_type_full_name
10071         so it picks up generic arguments.
10072
10073 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10074
10075         * console-io.c: Removed debug output.
10076
10077 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10078
10079         reflection.c (mono_reflection_create_runtime_class): Alloc
10080         the nested classes linked list using the dynamic image mempool.
10081         Fixes leak in corlib compilation.
10082
10083 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10084
10085         * console-io.c: Fix incredibly annoying behavior on the console
10086         after resuming execution after control-z.   This affected every
10087         console application.
10088
10089 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10090
10091         * mempool-internals.h: Header for mono private mempool functions. The first
10092         two function are for allocating glib linked lists using pools.
10093
10094         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10095
10096         * Makefile.am: Added mempool-internals.h.
10097
10098 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10099
10100         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10101         (mono_domain_free): Ditto.
10102
10103         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10104         be used by the JIT to store its domain-specific information, instead of putting
10105         it directly into MonoDomain.
10106
10107         * domain.c (mono_install_create_domain_hook): New helper function to install
10108         a hook which initializes domain->runtime_info.
10109
10110         * domain.c (mono_install_free_domain_hook): Ditto.
10111         
10112 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10113
10114         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10115         asserting if the ares parameter is null.
10116
10117         * mono-perfcounters.c: Fix warnings.
10118
10119         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10120         is not needed, don't check for interruptions either.
10121         (mono_marshal_get_delegate_end_invoke): Ditto.
10122
10123 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10124
10125         * mono-perfcounters.c (predef_readonly_counter): added support for
10126         reading the ASP.NET Requests Queued counter from another process.
10127
10128 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10129
10130         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10131         MonoImage to simplify the AOT code.
10132
10133 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10134
10135         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10136         marshalling. Fixes #416078.
10137
10138 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10139         
10140         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10141         it is set, looking up the icall address is deferred to the JIT, since 
10142         in embedded scenarios, the icall might not be registered in the runtime
10143         doing the AOT compilation. Backported from the 2.0 branch.
10144
10145 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10148         Fixes #415621.
10149
10150 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10151
10152         * Makefile.am: added support for cross-compilation.
10153
10154 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10155
10156         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10157
10158 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10159
10160         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10161
10162 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10163
10164         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10165         mono-perfcounters.c: performance counters implementation.
10166
10167 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10168
10169         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10170         to gpointer, letting the AOT code decide what to store in it.
10171
10172 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10173
10174         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10175           mono_class_setup_methods if the methods are not initialized.
10176
10177         Code is contributed under MIT/X11 license.
10178
10179 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10180
10181         * verify.c: Remove some debug code I commited by accident.
10182
10183         * verify.c (mono_method_is_valid_in_context): Change the return value
10184         to make possible to distinguish between invalid and unverifiable.
10185
10186         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10187         methods.
10188
10189 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10190
10191         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10192         constraints. Fixes regression in gtest-253.
10193
10194 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10195
10196         * verify.c (mono_verifier_verify_class): Don't allow generic types
10197         with explicit layout.
10198
10199         * verify.c (mono_method_verify): Check locals and argument types.
10200
10201 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10204         wait if the thread is in StopRequested state.
10205
10206         * class.c (mono_class_from_name): Refactor the module searching code into
10207         a separate function so it can be reused in the AOT case too.
10208
10209 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10210
10211         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10212         Check both the type and it's generic type definition for loader errors.
10213         
10214         * verify.c (mono_method_is_valid_in_context): Don't generate another
10215         error when a type errors occur, this leads to the wrong exception been
10216         thrown.
10217
10218 2008-07-28  Dick Porter  <dick@ximian.com>
10219
10220         * icall-def.h
10221         * process.c
10222         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10223         New internal calls to duplicate and close a process handle.
10224
10225 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10226
10227         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10228
10229 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10230
10231         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10232
10233 2008-07-27  Robert Jordan  <robertj@gmx.net>
10234
10235         * class.c (mono_class_init): Don't compute class.has_finalize for
10236         valuetypes. Fixes #412477.
10237
10238 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10239
10240         * verify.c: Implement constraint equivalence checking.
10241         This is required when a generic parameter is used as
10242         argument to a constrained one.
10243
10244         Fixes #410637.
10245
10246 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10247
10248         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10249
10250         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10251
10252         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10253         synch with managed object layout.
10254
10255 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10256
10257         * verify.c (do_branch_op): Handle valuetypes and generic
10258         arguments properly.
10259
10260         * verify.c (do_cmp_op): Same.
10261
10262         Fixes #410383.
10263
10264 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10265
10266         * generic-sharing.c: Fix memory leaks.
10267
10268         * class.c, class-internals.h: Make
10269         mono_class_inflate_generic_type_with_mempool() non-static.
10270
10271 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10272
10273         * pedump.c (dump_verify_info): Dump full class name.
10274
10275 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10276
10277         * generic-sharing.c: Removed some old code that didn't do anything.
10278
10279 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10280         * profiler.c: Added runtime_initialized_event,
10281         mono_profiler_install_runtime_initialized and
10282         mono_profiler_runtime_initialized. This new hook tells the profiler
10283         when the runtime is sufficiently initialized to be able to call
10284         mono_thread_attach on the root appdomain.
10285         * profiler.h, profiler-private.h: Likewise.
10286
10287 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10288
10289         * verify.c (do_cast): Do boxing for generic arguments as well.
10290
10291         * class.c (is_nesting_type): Drop generic instantiations before
10292         checking for nesting.
10293
10294         * class.c (can_access_instantiation): Allow access to generic
10295         arguments.
10296
10297 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10298
10299         * verify.c (verify_class_for_overlapping_reference_fields):
10300         On some cases, the field size might be zero, guard against that.
10301         Fix the explicit layout check to work as expected.
10302
10303 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10306         mono_thread_resume () during shutdown, since the thread we want to abort
10307         might be suspended.
10308
10309 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10312         warning.
10313
10314         * debug-mono-symfile.c: Fix a warning.
10315
10316         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10317
10318         * object.c (mono_class_vtable): Check if exception_type is set, and return
10319         NULL as defined by the function comments.
10320
10321 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10322
10323         * mempool.c: Use malloc for every single mempool allocation if the
10324         configure option is set.  This makes it easier to track mempool
10325         allocations with tools like Valgrind.
10326
10327 2008-07-22  Jb Evain  <jbevain@novell.com>
10328
10329         * reflection.c (create_dynamic_mono_image): emit the same
10330         metadata version that SL2 does when creating a SL2 image.
10331
10332 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10333
10334         * icall-def.h:
10335         * icall.c: New icall System.Enum:get_hashcode. This function
10336         avoids the overhead of boxing the enum to the underlying type.
10337
10338 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10339
10340         * reflection.c (mono_method_get_object): Don't let static RGCTX
10341         invoke wrappers get into MonoReflectionMethods.
10342
10343 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10344
10345         * object-internals.h:
10346         * object.c: New mono_runtime_class_init_full function
10347         that makes throwing the exception optinal.
10348
10349         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10350         for the case where the exception object is supplied.
10351
10352 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10353
10354         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10355         old ld versions.
10356
10357         Contributed under MIT/X11 license.
10358
10359 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10360
10361         * string-icalls.c (ves_icall_System_String_InternalSplit):
10362         Optimize array allocation by caching the MonoClass of the
10363         array type.
10364
10365         * icall.c (ves_icall_Type_GetMethodsByName): Same.
10366
10367         * reflection.c (mono_param_get_objects): Same.
10368
10369 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
10370
10371         * icall-def.h:
10372         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
10373         It inflates the given type using the class context.
10374
10375 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
10376
10377         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
10378         the vtable if it already exists.
10379
10380         * object-internals.h: Add mono_class_try_get_vtable as part of the
10381         internal API.
10382
10383         * reflection.c (mono_type_get_object): Use the MonoObject from the
10384         vtable when possible. Reduces locking contention on reflection heavy
10385         code.
10386
10387 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
10388
10389         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
10390         g_bit_nth_msf () since that macro is not implemented in eglib.
10391
10392 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
10395         on platforms which do not support it.
10396
10397 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
10400
10401 2008-07-11  Martin Baulig  <martin@ximian.com>
10402
10403         * mono-debug-debugger.h
10404         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
10405
10406         * mono-debug-debugger.c
10407         (_mono_debugger_interruption_request): New global volatile variable.
10408         (mono_debugger_check_interruption): New public function.
10409
10410         * threads.c
10411         (mono_thread_current_check_pending_interrupt): Call
10412         mono_debugger_check_interruption().
10413         (mono_thread_interruption_checkpoint_request): Likewise.
10414
10415 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10416
10417         * verify.c: Add more type checks for loaded types. Verify the result
10418         handle from ldtoken.
10419
10420 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10421
10422         * loader.c (field_from_memberref): Don't crash if the field
10423         wasn't found.
10424
10425 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10426
10427         * verify.c: Verify if type and method instantiations
10428         don't have invalid VAR or MVAR arguments.
10429
10430 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10431
10432         * verify.c: Fix double free of function pointer list.
10433
10434 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
10435
10436         * object.c (mono_string_to_utf8): Comment the new code as it
10437         breaks under eglib.
10438
10439 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
10440
10441         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
10442
10443 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10444
10445         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
10446           is not throw too many times.
10447
10448         Code is contributed under MIT/X11 license.
10449
10450 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10451
10452         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
10453         debugging is turned off.
10454
10455 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10456
10457         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
10458
10459 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10460
10461         * class-internals.h, class.c: Added new generic sharing option:
10462         Share only stuff in System.Collections.Generic, which is now the
10463         default.
10464
10465 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10466
10467         * generic-sharing.c, class-internals.h: New function for getting a
10468         generic method in a generic class given the corresponding method
10469         for a different instantiation of the class.  Partly refactored
10470         from mini-trampolines.c.
10471
10472         * class.c: Make sure generic methods have a class_inst if they are
10473         part of a generic class.
10474
10475         * metadata.c (mono_type_stack_size_internal): Handle type
10476         variables.
10477
10478 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10479
10480         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
10481         Signifies whether information on the this/vtable/mrgctx variable
10482         is available.
10483
10484 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10485
10486         * object.c, object-internals.h, icall.c: New function
10487         mono_delegate_ctor_with_method(), which does the same as
10488         mono_delegate_ctor(), but takes an explicit method argument
10489         instead of taking the method from the jit info.
10490
10491         * marshal.c: When creating a delegate with an inflated method take
10492         the "this" argument as the target class for the castclass.
10493
10494 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10495
10496         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
10497         mono_jit_info_table_find() to perform very badly in some cases.
10498
10499 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * icall.c (type_from_typename): Handle 'string'.
10502
10503         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
10504         wrappers into the wrapper_hash, since the key is not a MonoMethod.
10505
10506 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10507
10508         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
10509
10510         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
10511         number of available managed allocator types.
10512
10513         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
10514         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
10515
10516 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
10519         which is a low level lock protecting just the 'jit_code_hash' hash table.
10520
10521         * domain.c: Initialize+cleanup jit_code_hash_lock.
10522         
10523 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10524
10525         * coree.c (mono_load_coree): Set coree_module_handle global variable only
10526         after initialization.
10527
10528         * coree.h: Make MonoFixupExe internal.
10529
10530         Contributed under MIT/X11 license.
10531
10532 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
10533
10534         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
10535         because that is platform independent. Check NumberOfRvaAndSizes in PE32
10536         as well.
10537         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
10538         image being loaded is a CLI image and _CorValidateImage gets called.
10539
10540         * coree.h: Add MonoLoadImage.
10541
10542         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
10543         instead of LoadLibrary.
10544
10545         Contributed under MIT/X11 license.
10546
10547 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
10548
10549         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
10550         for any primitive type.
10551
10552 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * object.c (mono_array_new_specific): Optimize this and the other allocation
10555         functions a bit.
10556         
10557         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
10558         domains too if mono_dont_free_domains is set.
10559
10560         * domain-internals.h (mono_dont_free_domains): New internal option controlling
10561         whenever to free appdomain data after it has been unloaded.
10562
10563         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
10564         
10565 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
10568         (mono_method_get_equivalent_method): Fix a warning.
10569
10570         * object.c (mono_message_init): Avoid looking up array types for each call.
10571
10572 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
10575         call.
10576
10577         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
10578         even more.
10579
10580         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
10581         each iteration.
10582
10583         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
10584         fields of an enum.
10585
10586 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
10587
10588         * object.c (mono_value_box): Fix boxing of nullables.
10589
10590 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
10591
10592         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
10593         mono_module_handle that is defined by the linker; no initialization required.
10594         * coree.h: Remove mono_module_handle, add __ImageBase, update
10595         mono_image_open_from_module_handle.
10596         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
10597         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
10598         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
10599         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
10600         to 4 GB away from image base address. IA64 version is not tested but was very
10601         easy to implement and should work if we ever need it.
10602         * domain.c (mono_init_internal): Avoid system error message boxes.
10603         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
10604         with has_entry_point. Handle do_mono_image_load fauilre correctly.
10605         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
10606         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
10607         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
10608
10609         Contributed under MIT/X11 license.
10610
10611 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10612
10613         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
10614         as part of the private mono API.
10615         
10616         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
10617         Do proper argument checking for methods that belong to generic classes.
10618         Do proper type resolution for GMFH/2.
10619         Fixes #377324.
10620         
10621 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10622
10623         * verify.c (do_switch): Fix a memory corruption bug with
10624         the jump index is out of bound.
10625
10626 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10627
10628         * verify.c: Disable debug code.
10629
10630 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
10631
10632         * reflection.c (mono_image_get_methodbuilder_token): Use
10633         mono_image_get_methodspec_token_for_generic_method_definition
10634         instead of mono_image_get_memberref_token. We cache more memberef
10635         entries now.
10636
10637 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10638
10639         * verify.c: Inflate exception clause types.
10640         Fixes #402606.
10641         
10642 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10643
10644         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
10645         name.
10646
10647         * reflection.c (mono_image_get_ctorbuilder_token): Same.
10648
10649         * reflection.c (mono_image_create_method_token): Same.
10650
10651 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
10652
10653         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
10654         It does the same as mono_image_get_methodref_token but works on
10655         MethodBuilder.
10656
10657         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
10658         and always generate a methodspec. This follows the old behavior and fixes
10659         the regressions in System.Core. 
10660
10661 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
10662
10663         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
10664         don't event mono_class_get () succeeds. Fixes #402182.
10665
10666 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
10667
10668         * metadata-internals.h: Added MonoDynamicImage::methodspec
10669         hashtable to store methodspec tokens created for MethodBuilders.
10670
10671         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
10672         MethodBuilders as open instantiations if a methodspec was requested.
10673
10674         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
10675
10676         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
10677
10678         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
10679
10680         Fixes bug #349190.
10681
10682 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
10683
10684         * loader.c (method_from_methodspec): Avoid crashing if the
10685         method lookup fails.
10686
10687 2008-06-20  Dick Porter  <dick@ximian.com>
10688
10689         * socket-io.c (get_socket_assembly): Cope with Moonlight network
10690         classes being in a different assembly.  Fixes bug 399184.
10691
10692 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
10693
10694         * loader.c (mono_loader_init): Make this callable multiple times.
10695         (mono_dllmap_insert): Call mono_loader_init () so this works even before
10696         the runtime is initialized. Fixes #401755.
10697
10698 2008-06-19  Dick Porter  <dick@ximian.com>
10699
10700         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
10701         Fixes bug 349688.
10702
10703 2008-06-19  Dick Porter  <dick@ximian.com>
10704
10705         * socket-io.c:
10706         * icall-def.h: Implement Socket generic Send() and Receive()
10707         methods.  Fixes bug 395168.
10708
10709 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
10710
10711         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
10712
10713         Contributed under MIT/X11 license.
10714
10715 2008-06-18  Martin Baulig  <martin@ximian.com>
10716
10717         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
10718         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
10719         set to 80.0.  The debugger <-> runtime interface is now frozen as
10720         well.   
10721
10722         * mono-debug.c
10723         (mono_debug_debugger_version): Bump to 4.
10724
10725 2008-06-18  Martin Baulig  <martin@ximian.com>
10726
10727         * debug-mono-symfile.c
10728         (load_symfile): Don't check the minor version.
10729
10730         * debug-mono-symfile.h: Bump the version number to 50.0.
10731
10732 2008-06-18  Martin Baulig  <martin@ximian.com>
10733
10734         * debug-mono-symfile.c
10735         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
10736         minimum required version.
10737
10738 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
10739
10740         * reflection.c (mono_custom_attrs_from_property): Fix support for
10741         retriveving cattrs of dynamic inflated generic types.
10742
10743         * reflection.c (mono_custom_attrs_from_event): Same.
10744
10745         * reflection.c (mono_custom_attrs_from_field): Same;
10746
10747         * reflection.c (typebuilder_setup_events): Same cattrs of events.
10748
10749         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
10750         Moved to metadata.c.
10751
10752         * metadata.c: New functions to retrive the equivalent field, event
10753         of property from the generic type definition.
10754
10755         * metadata-internals.h: Added new functions from metadata.c.
10756
10757 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
10758
10759         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
10760         to cached in a mempool is used.
10761
10762         * metadata.c (free_generic_class): In some situations field generic_info type
10763         is not properly dup'ed and leads to double free'ing.
10764
10765         Fixes #400643.
10766
10767 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10768
10769         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
10770         this arguments (will be needed later for generic methods).
10771         Collect stats.
10772
10773 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10774
10775         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10776         Create a static RGCTX invoke wrapper for methods which require it.
10777
10778 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10779
10780         * object.c, class-internals.h: New function for checking whether
10781         an individual field is special static.
10782
10783 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10784
10785         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
10786         linear search since the table is sorted.
10787
10788         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
10789         Fixes #324180.
10790
10791 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
10794         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
10795
10796         * gc.c (mono_domain_finalize): Allow an infinite timeout.
10797
10798         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
10799         
10800         * threads.c (mono_thread_request_interruption): Get rid of locking, use
10801         InterlockedCompareExchange to query and modify 
10802         thread->interruption_requested.
10803
10804         * object-internals.h (struct _MonoThread): Change interruption_requested
10805         to a gint32 so it can be modified by atomic operations. Add 
10806         'critical_region_level' from the managed side, change small_id to a guint32,
10807         add new set of 'unused' fields.
10808
10809         * appdomain.c: Bump corlib version.
10810
10811 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10812
10813         * class.c (mono_class_from_name): Search modules as well. Fixes
10814         #322332.
10815
10816 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10817
10818         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
10819         templates.  Templates are generalized with an additional type_argc
10820         argument.  RGCTX templates have type_argc==0, MRGCTX templates
10821         have type_argc>0.
10822
10823         * domain-internals.h, domain.c: New hash table for looking up
10824         MRGCTXs.
10825
10826         * metadata.c, metadata-internals.h: Rename hash and equal
10827         functions for MonoGenericInst's and make them public.
10828
10829         * class-internals.h: New data structures for the MRGCTX.  Macros
10830         for distinguishing slots in the RGCTX and the MRGCTX.
10831
10832 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10833
10834         * object.c (mono_method_get_imt_slot): Put the same methods of
10835         different instantiations of the same generic interface in the same
10836         IMT slots, to make generic sharing simpler.
10837
10838 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
10839
10840         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
10841
10842         * metadata.c (mono_metadata_field_info_with_mempool): Added.
10843         This function works just like mono_metadata_field_info, but
10844         accept a mempool as argument to be used allocating memory.
10845
10846         * marshal.c (mono_marshal_load_type_info): Use new function
10847         to load marshal data into image mempool.
10848
10849 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
10850
10851         * class.c (mono_class_inflate_generic_type_with_mempool):
10852         This function allows to inflate a generic type using
10853         a mempool.
10854
10855         * class.c (inflate_generic_type): Take a mempool as argument
10856         and use it to do type dup'ing.
10857
10858         * class.c (mono_class_setup_fields): Field type for generic
10859         generic classes are allocated from the image mempool.
10860
10861         * metadata.c (free_generic_class): Inflated field type is
10862         now allocated in the image mempool.
10863
10864 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
10865
10866         * threads.c (thread_cleanup): Free MonoThread::name.
10867
10868 2008-06-12  Marek Habersack  <mhabersack@novell.com>
10869
10870         * appdomain.c (ensure_directory_exists): avoid unnecessary
10871         mkdir(2) calls when the shadow directory already exists.
10872         (mono_make_shadow_copy): copy also satellite assemblies from the
10873         private bin directories.
10874
10875 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
10878         
10879         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
10880         a page boundary. Fixes #396219.
10881
10882 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10883
10884         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
10885         due to double-checked locking.
10886
10887 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10888
10889         * assembly.c (build_assembly_name): Release memory on failure.
10890
10891         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
10892
10893 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10894
10895         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
10896         memory on failure.
10897
10898 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10899
10900         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
10901         memory on failure.
10902
10903 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10904
10905         * loader.c (field_from_memberref): Check if field signature type is equal
10906         to the non-inflated type of the field. Fixes #398980.
10907
10908 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
10909
10910         * assembly.c (mono_assembly_load_from_full): Call 
10911         mono_assembly_load_friends () outside the assemblies lock, since it can
10912         acquire the loader lock. Fixes #323696.
10913
10914         * reflection.c (resolve_object): Inflate the inst with the context for
10915         FieldOnTypeBuilderInst. Fixes #399010.
10916
10917 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10918
10919         * reflection.c (mono_image_get_field_on_inst_token): Don't
10920         inflate the field to encode it's signature. If it's a
10921         VAR or MVAR it should stay that way in the signature.
10922         Fixes #399047.
10923
10924 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10925
10926         * reflection.c (resolve_object): Release memory of inflated types.
10927
10928 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10929
10930         * loader.c (mono_method_get_signature_full): Remove assert about
10931         loading a methodspec to a generic method. We have such methods, such as
10932         System.Threading.Interlocked::CompareExchange<T>.
10933         This assert was removed since it crashes the verifier when it checks
10934         methods calling CompareExchange<T>.
10935
10936 2008-06-10  Marek Safar  <marek.safar@gmail.com>
10937
10938         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
10939         of Type array and not MonoType.
10940
10941 2008-06-10  Marek Habersack  <mhabersack@novell.com>
10942
10943         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
10944         <lupus@ximian.com>
10945
10946 2008-06-10  Martin Baulig  <martin@ximian.com>
10947
10948         * debug-mono-symfile.h
10949         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
10950         changes to the file format, but we were generating incorrect
10951         source file indices in the line number table due to a bug, which
10952         made backtraces report an incorrect source file.
10953
10954 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
10955
10956         * mono-debug.c: Moved mono_debug_free_method_jit_info from
10957         mini/debug-mini.c to here.
10958
10959         * mono-debug.c (il_offset_from_address): Free memory from find_method.
10960
10961         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
10962         use it to release structs returned by mono_debug_find_method.
10963
10964 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
10967         since it needs to set method->slot for all interface methods.
10968
10969 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
10970
10971         * class-internals.h: Forgot to add.
10972
10973 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
10974
10975         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
10976
10977         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
10978         Lookup the custom attributes from property_hash.
10979
10980         * reflection.c (mono_save_custom_attrs): Save the custom attributes
10981         in property_hash. Allocate all data using the image mempool.
10982
10983         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
10984         for dynamic_custom_attrs to checks if the image is dynamic.
10985
10986 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10987
10988         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
10989         assemblies array.
10990         
10991         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
10992         runtime functions while holding the domain assemblies lock.
10993
10994 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
10995
10996         * verify.c: Reapplied the last bit of the reverted changes.
10997
10998 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
10999
11000         * verify.c: Reapplied more of the reverted changes.
11001
11002 2008-06-09  Martin Baulig  <martin@ximian.com>
11003
11004         * debug-mono-symfile.c (load_symfile): Check the major version
11005         first; if it's wrong, don't print the minor version in the error message.
11006
11007 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11008
11009         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11010         lock instead of the domain lock to avoid deadlocks, since the thread might
11011         already hold the loader lock.
11012
11013         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11014         (mono_thread_attach): Ditto.
11015
11016         * monitor.c: Use a TLS variable for holding the current thread id instead
11017         of calling pthread_self ().
11018         (mono_monitor_init_tls): New internal function to initialize the TLS
11019         variable.
11020         (mono_monitor_try_enter_internal): Put the owner == id check after the
11021         owner == 0 check.
11022
11023         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11024         missed optimizations when using gcc-4.3.
11025
11026 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11027
11028         * reflection.c (mono_dynamic_image_free): Free the memory
11029         used by MonoGenericParam in MonoDynamicImage::gen_param.
11030
11031         * reflection.c (mono_reflection_setup_generic_class): Allocate
11032         container from mempool.
11033
11034         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11035         container from mempool.
11036
11037 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11038
11039         * threads.c (mono_set_pending_exception): New internal function to set the
11040         pending exception of the current thread.
11041         (mono_thread_get_and_clear_pending_exception): Check for 
11042         thread->pending_exception as well.
11043
11044         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11045
11046         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11047         it can trigger a collection.
11048
11049 2008-06-06  Martin Baulig  <martin@ximian.com>
11050
11051         Merged the `debugger-kahalo' branch.
11052
11053         * mono-debug.h
11054         (MONO_DEBUGGER_VERSION): Bumped to 72.
11055
11056         * debug-mono-symfile.h
11057         (MonoSymbolFileMethodIndexEntry): Removed.
11058         (MonoSymbolFileMethodEntry): New public typedef.
11059         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11060         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11061         `data_offset'.
11062         (MonoSymbolFileMethodEntry): Removed.
11063         (MonoSymbolFileLexicalBlockEntry): Removed.
11064         (MonoSymbolFileLineNumberEntry): Removed.
11065         (MonoDebugLexicalBlockEntry): Removed.
11066         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11067         removed `num_il_offsets' and `il_offsets'.
11068         (MonoSymbolFile): Replace `version' with `major_version' and
11069         `minor_version'.
11070         (MONO_SYMBOL_FILE_VERSION): Replace with
11071         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11072         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11073
11074         * debug-mono-symfile.c
11075         (mono_debug_symfile_lookup_location): Add support for the new line
11076         number table format.
11077
11078 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11079
11080         * metadata.c (free_generic_class): Release the inflated
11081         MonoClass of dynamic generic classes if it's not a generic
11082         type definition.
11083
11084 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11085
11086         * verify.c: Reapplied more of the reverted changes.
11087
11088 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11089
11090         * reflection.c (lookup_custom_attr): Clean the cached flag or
11091         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11092         for SRE types.
11093
11094 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11095
11096         * verify.c: Reapplied a small part of the reverted changes.
11097
11098 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11101
11102         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11103         previously in managed code.
11104         (mono_monitor_exit): Ditto.
11105         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11106
11107         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11108         the managed definition.
11109
11110 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11111
11112         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11113
11114 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11117         
11118         * monitor.c: Add some micro optimizations.
11119
11120         * icall.c (type_from_typename): Handle 'bool'.
11121
11122 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11123
11124         * verify.c: Implement constructor verification per P III 1.8.1.4.
11125         Fixes #396716.
11126
11127 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11128
11129         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11130         holding the assemblies lock here too.
11131
11132 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11133
11134         * verify.c: Kill stack_top function.
11135
11136 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11137
11138         * verify.c: Kill stack_get function.
11139
11140 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11141
11142         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11143
11144 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11145
11146         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11147         more reliable.
11148
11149         * verify.c (mono_method_verify): Inflate params and locals to avoid
11150         mismatch when checking for compatibility.
11151
11152 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11153
11154         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11155         Length prefix should be size in bytes. Fix bug #339530.
11156         
11157         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11158         Length prefix should be size in bytes. Fix bug #339530.
11159
11160         Code is contributed under MIT/X11 license.
11161
11162 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11163
11164         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11165
11166         Contributed under MIT/X11 license.
11167
11168 2008-06-05  Martin Baulig  <martin@ximian.com>
11169
11170         * mono-debug-debugger.c
11171         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11172
11173 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11174
11175         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11176         while holding the assemblies lock to prevent deadlocks. Handle the case
11177         where the search hook returns NULL but the assembly was still loaded.
11178         Fixes #323696.
11179
11180         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11181         modify domain state.
11182
11183 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11184
11185         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11186         * Makefile.am (pedump_LDADD): Post-process object files and
11187         add dtrace-generated object file, if necessary.
11188
11189         Code is contributed under MIT/X11 license.
11190
11191 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11192
11193         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11194
11195 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11196
11197         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11198
11199 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11200
11201         * threads.c: Try to free everything from the delayed free table
11202         when shutting down threads, and set the variable to NULL after the
11203         table is freed so that calling
11204         mono_thread_hazardous_try_free_all() when shutting down the root
11205         domain doesn't crash.
11206
11207 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11208
11209         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11210         the caller if resulting type was inflated.
11211
11212         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11213         was inflated.
11214
11215         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11216
11217
11218 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11221         class library tests.
11222
11223         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11224         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11225         #396989.
11226
11227 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11228
11229         * domain.c, domain-internals.h: The JIT infos are now freed by the
11230         JIT info table code.  They are freed immediately if there only a
11231         single JIT info table in circulation.  If there is more, the free
11232         is delayed via a queue.
11233
11234         * threads.c, threads-types.h: New hazard pointer function for
11235         freeing all freeable delayed items in one sitting.
11236
11237 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11238
11239         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11240
11241         * reflection.c (typebuilder_setup_properties): Same.
11242
11243         * reflection.c (typebuilder_setup_events): Same.
11244
11245 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11246
11247         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11248         and use it for allocating memory.
11249
11250         * reflection.c (mono_marshal_spec_from_builder): Same.
11251
11252         * reflection.c: Change code to use new signatures.
11253
11254         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11255
11256 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * decimal.c (rescale128): Put back one line which was accidently commented
11259         out.
11260         
11261         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11262         to cause crashes.
11263
11264 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11265
11266         * reflection.c (mono_reflection_generic_class_initialize): Name must
11267         be always malloc'ed so we can free it later on. Do this for field, property
11268         and event.
11269
11270         * metadata.c (free_generic_class): Free field, property and event names.
11271
11272 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11273
11274         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11275         instead of g_memdup.
11276
11277         * reflection.c (typebuilder_setup_fields): Same.
11278
11279 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11280
11281         * decimal.c (rescale128): Optimize this function a bit more.
11282
11283 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11284
11285         * metadata.c (free_generic_class): Release some memory from
11286         SRE generic classes.
11287
11288 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11289
11290         * reflection.c (mono_image_get_generic_field_token): No reference
11291         to name is kept, free it.
11292
11293         * reflection.c (mono_reflection_generic_class_initialize): Free
11294         more memory of the inflated field.
11295
11296 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11299         code.
11300
11301 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11302
11303         * reflection.c (mono_dynamic_image_free): Release memory used by
11304         MonoDynamicImage::array_methods elements.
11305
11306         * reflection.c (assembly_add_win32_resources): Release memory after
11307         encoding.
11308
11309 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11310
11311         * decimal.c (log2_32): Use an optimized version for this function too.
11312         
11313         * decimal.c (log2_64): Fix this on 32 bit machines.
11314
11315 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11316
11317         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11318
11319         * class.c (mono_metadata_signature_deep_dup): Same.
11320
11321         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11322         a mempool.
11323
11324         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11325
11326         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11327
11328         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11329
11330         * class-internals.h: Update signatures to take a MonoMemPool.
11331
11332 2008-06-02  Dick Porter  <dick@ximian.com>
11333
11334         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11335         * icall-def.h: Add
11336         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11337         FormatMessage API to get the error text.  Fixes bug 321827.
11338
11339 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * decimal.c: Add some micro optimizations to make decimal operations faster.
11342
11343 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11344
11345         * reflection.c (method_encode_clauses): Take a mempool
11346         as parameter and use it to allocate the clause array.
11347
11348         * reflection.c (mono_image_get_field_on_inst_token): Free
11349         the inflated type after encoding it.
11350
11351         * reflection.c (mono_dynamic_image_free): Free each element
11352         of MonoDynamicImage::gen_params.
11353
11354         * reflection.c (reflection_methodbuilder_to_mono_method):
11355         Allocate the generic param array from the mempool.
11356         Allocate signature params from the mempool.
11357
11358         * reflection.c (mono_reflection_generic_class_initialize):
11359         Free inflated fields after been used.
11360
11361 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11362
11363         * icall.c: Reapply the memory leak fixes as they no
11364         longer make mono crash.
11365
11366 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
11367
11368         * reflection.c (mono_type_get_object): Don't store the suplied
11369         MonoType with type_hash. A caller which pass a type that
11370         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
11371         might end with a pointer to freed memory.
11372         The solution is to use byval_arg or this_arg from the associated
11373         MonoClass of the supplied type.
11374
11375 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
11376
11377         * icall.c: Revert the rest of the last change as it breaks the build too.
11378
11379 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11380
11381         * icall.c: Revert a leak fix as it's breaking the build.
11382
11383 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11384
11385         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
11386
11387 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11388
11389         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
11390
11391 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
11392
11393         * icall.c: Fix some memory leaks.
11394
11395 2008-05-29  Dick Porter  <dick@ximian.com>
11396
11397         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
11398         async socket operations from the pending list when a socket
11399         closes.  Leaving it until the threadpool services the event
11400         exposes a race condition when a socket descriptor is reused.
11401         Fixes bug 377589.
11402
11403 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11404
11405         * object.c: Fix negative index check for array alocation.
11406
11407 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11408
11409         * icall.c, marshal.c: Delegate wrappers should skip visibility.
11410         This check is performed by the verifier for IL created delegates
11411         and by Delegate::CreateDelegate for programatically created ones.
11412         Fixes #372406.
11413
11414 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11415
11416         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
11417         Fix code to use mono_array_size_t instead of int.
11418
11419         Based on patch by Luis F. Ortiz.
11420         Contributed under X11 license.
11421         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11422
11423 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11424
11425         * icall.c: Added ves_icall_System_Array_GetLongLength and
11426         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
11427         arrays.
11428
11429         * icall.h: Export both new functions.
11430
11431         Based on patch by Luis F. Ortiz.
11432         Contributed under X11 license.
11433         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11434
11435 2008-05-28  Martin Baulig  <martin@ximian.com>
11436
11437         The debugger now requires exactly r103463.
11438
11439         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
11440         This version is not supported by the debugger, wait for 72.
11441
11442 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11443
11444         * object.h: Changed array related functions to use
11445         mono_array_size_t instead of guint32. Forgot to commit this file.
11446
11447         Patch by Luis F. Ortiz.
11448         Contributed under X11 license.
11449         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11450
11451
11452 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
11453
11454         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
11455         don't define it. Use the number literal instead.
11456
11457 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11458
11459         * icall.c: Changed array related functions to use
11460         mono_array_size_t instead of guint32.
11461
11462         * icall.c (ves_icall_System_Array_GetLength): Check for length
11463         overflow under MONO_BIG_ARRAYS.
11464
11465         Based on patch by Luis F. Ortiz.
11466         Contributed under X11 license.
11467         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11468
11469 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11470
11471         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
11472
11473         Based on patch by Luis F. Ortiz.
11474         Contributed under X11 license.
11475         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11476
11477 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11478
11479         * object.c, object.h: Changed array related functions to use
11480         mono_array_size_t instead of guint32.
11481
11482         Patch by Luis F. Ortiz.
11483         Contributed under X11 license.
11484         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11485
11486 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
11487
11488         * object.h: Introduced mono_array_size_t typedef. This must be used
11489         in all places an array length is expected. This is 64bits wide if
11490         MONO_BIG_ARRAYS is enabled.
11491
11492         Patch by Luis F. Ortiz.
11493         Contributed under X11 license.
11494         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
11495
11496 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11497
11498         * security-manager.c class.c: Set the class exception info by calling
11499         mono_class_set_failure ().
11500
11501         * class.c (mono_class_get_exception_data): New accessor function.
11502         (mono_class_set_failure): Store exception_data in the property hash.
11503
11504         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
11505         the struct as a property.
11506
11507         * loader.c (mono_get_method_full): Store the lookup result for method
11508         tokens in method_cache, the others in methodref_cache to decrease the memory
11509         usage of hash tables.
11510
11511         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
11512         (mono_image_init): method_cache is lazy inited now.
11513
11514         * metadata-internals.h (struct _MonoImage): Change method_cache to
11515         a MonoValueHashTable, add a separate methodref_cache.
11516
11517 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
11518
11519         * number-formatter.h: Fix tables to avoid arithemtic overflow in
11520           Double.ToString as exposed by Bug #383531.
11521
11522 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11523
11524         * number-formatter.h: Make some tables static.
11525
11526         * class.c (mono_method_set_generic_container): New accessor function.
11527         (mono_method_get_generic_container): Ditto.
11528
11529         * class-internals.h (struct _MonoMethod): Remove rarely used 
11530         'generic_container' field, store it in the property hash instead. Add 
11531         'is_generic' boolean field instead.
11532
11533         * image.c (mono_image_init): Initialize property_hash.
11534         (mono_image_close): Destroy property_hash.
11535
11536         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
11537         hold rarely used fields of runtime structures belonging to this image.
11538
11539         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
11540         to get/set method->generic_container.
11541
11542         * loader.c (mono_get_method_from_token): Avoid loading the method header for
11543         generic methods.
11544
11545 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * class.c (mono_class_inflate_generic_method_full): Don't increase
11548         mono_stats.inflated_method_count for methods found in the cache.
11549
11550         * threads.c (mono_thread_request_interruption): Add a comment about 
11551         QueueUserAPC ().
11552
11553 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11554
11555         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
11556         interface_offsets_packed table.
11557         
11558         * class.c (mono_class_init): Remove some dead code.
11559
11560         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
11561         mono_class_setup_vtable () when CAS is active to detect security problems.
11562
11563 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
11564
11565         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
11566
11567         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
11568         parameters as it's irrelevant for delegate checking.
11569
11570 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
11573
11574         * class.c (mono_class_init): Control the creation of a generic vtable using
11575         a global which is true by default, but set to false by the runtime startup code.
11576         
11577         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
11578         Disabled for now since it breaks the embedding API.
11579         Move the setup of class->methods for arrays to mono_class_setup_methods ().
11580         (mono_class_setup_methods): Add a memory barrier.
11581
11582         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
11583         when mono_class_init () doesn't compute the generic vtable.
11584         
11585 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11586         * profiler.c: Added mono_profiler_install_statistical_call_chain,
11587         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
11588         to support call chains (backtrace) in the stat profiler.
11589         * profiler.c, profiler-private.h: Likewise.
11590
11591 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11592
11593         * generic-sharing.c: Init generic class when a method of it is
11594         requested via a runtime generic context.
11595
11596 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
11599
11600         * reflection.c (mono_type_get_object): Add a FIXME.
11601
11602         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
11603
11604         * class.c (mono_class_get_method_by_index): New helper function, returning an
11605         entry in the class->methods array.
11606
11607 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11608
11609         * class.c (mono_class_init): Only do the array optimization for szarrays. 
11610         Avoid creating a generic vtable for generic instances as well.
11611         (mono_class_get_method_from_name_flags): Don't search in the metadata for
11612         generic instances.
11613
11614 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
11615
11616         * loader.c (mono_get_method_constrained): Inflate the signature
11617         with class context. Fix #325283.
11618
11619 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11620
11621         * object.c (mono_class_create_runtime_vtable): Add a comment.
11622
11623         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
11624         where needed.
11625         (setup_interface_offsets): Handle the case when this is called twice for arrays.
11626         (mono_class_setup_vtable_general): Add an assert.
11627         (mono_class_init): Avoid creating a generic vtable for arrays.
11628
11629         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
11630         here, let mono_class_init () do that.
11631
11632         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
11633         interfaces in mscorlib.
11634
11635         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
11636         interfaces. Add some comments.
11637         (mono_class_init): Call mono_class_setup_methods () here since it is no
11638         longer called by mono_class_setup_vtable ().
11639
11640         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
11641         not set in class->vtable.
11642         (mono_class_create_runtime_vtable): Reenable the disabled code.
11643
11644         * object.c (mono_class_create_runtime_vtable): Disable the last change for
11645         now as it causes some test failures.
11646
11647         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
11648         if using the vtable trampoline. Also remove some strange code which put the
11649         generic methods themselves into the vtable slots. Remove the AOT init_vtable
11650         stuff as it is no longer needed.
11651
11652 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
11653
11654         * pedump.c: Give make --verify all option check code as well.
11655         Using --verify code won't check for metadata now.
11656
11657 2008-05-19  Martin Baulig  <martin@ximian.com>
11658
11659         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
11660
11661         * mono-debug.c
11662         (_mono_debug_using_mono_debugger): New global variable; it's set
11663         directly by the debugger, so mono_debug_using_mono_debugger() also
11664         works after attaching.
11665
11666 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
11667
11668         * object.c (mono_class_create_runtime_vtable): Use memory barriers
11669         as we do double checked locking on MonoClass::runtime_info and
11670         MonoClassRuntimeInfo::domain_vtables.
11671
11672 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * debug-helpers.c (print_field_value): Fix a warning.
11675
11676 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
11677
11678         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
11679         set in the AOT case.
11680
11681 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
11682
11683         * class.c (mono_class_setup_vtable_general): Use memory barriers
11684         as we do double checked locking on MonoClass::vtable.
11685
11686 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
11687
11688         * reflection.c (resolve_object): Inflate only if the generic context
11689         is not null. Fixes #389886.
11690
11691 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
11692
11693         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
11694         instead of g_free.
11695
11696         Code is contributed under MIT/X11 license.
11697
11698 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
11699
11700         * class.c: Revert unrelated change.
11701
11702 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
11703
11704         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
11705         a generic instantiation, use mono_class_from_mono_type instead of playing
11706         with MonoType directly.
11707
11708 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
11709
11710         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
11711         checks must ignore generic instantiations, so mono_class_has_parent is not
11712         suitable. Fixes #390128.
11713
11714 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
11715
11716         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
11717         it to avoid registering tokens during metadata generation. Fixes #390023.
11718
11719 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
11720
11721         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
11722         consistent.
11723
11724         Contributed under MIT/X11 license.
11725
11726 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
11727
11728         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
11729         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
11730         to fixup the EXE image.
11731         (mono_cleanup): Use mono_close_exe_image.
11732         (mono_close_exe_image): New function.
11733         * image.c: Include "marshal.h".
11734         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
11735         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
11736         counting when the image is loaded outside of mono_image_open_full. Set status
11737         based on GetLastError.
11738         * coree.c: Include required headers. Add init_from_coree.
11739         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
11740         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
11741         (_CorExeMain): Set init_from_coree.
11742         (CorExitProcess): Only call ExitProcess for now.
11743         (CorBindToRuntimeEx): New stub implementation.
11744         (CorBindToRuntime): New function.
11745         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
11746         (MonoFixupExe): ILONLY executables require no fixups.
11747         (mono_set_act_ctx): New function to set activation context.
11748         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
11749         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
11750         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
11751         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
11752         as MONO_INTERNAL.
11753         * domain-internals.h: Add mono_close_exe_image.
11754
11755         Contributed under MIT/X11 license.
11756
11757 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
11758
11759         * metadata.c (mono_metadata_compute_size): Correctly calculate field
11760         size for generic param and event tables. Fixes #388977.
11761
11762 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
11763
11764         * loader.c (mono_method_signature): Use memory barriers because of the double
11765         checked locking pattern.
11766
11767         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
11768         aborting or aborted as well. Fixes #376391.
11769         
11770         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
11771         existing runtime state in the Suspend handler during shutdown.
11772
11773 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
11774
11775         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
11776
11777         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
11778         which are starting up or shutting down.
11779
11780         * threads.c (mono_threads_set_shutting_down): Don't return a value since
11781         this function never returns if the runtime is already shutting down.
11782
11783         * icall.c (ves_icall_System_Environment_Exit): Update after 
11784         mono_threads_set_shutting_down () signature change.
11785         
11786 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
11787
11788         * class.c: Added can_access_instantiation to verify if the instantiation
11789         is visible. Fix access check for nested types as they returned TRUE
11790         before doing type and generic instantiation visibility checks.
11791
11792 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
11793
11794         * reflection.c (mono_reflection_create_generic_class): The created type
11795         must have a different container from its TypeBuilder. Otherwise they
11796         will end sharing generic arguments, which is wrong.
11797
11798         Due to the sharing, making a generic instance of the created type using
11799         the TypeBuider generic arguments resulted in the generic type definition
11800         been returned, which is wrong as well.
11801
11802         As a bonus the code was leaking the type_params array. This memory should
11803         be allocated from the image mempool.
11804
11805         This fixes bug #354047.
11806
11807 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
11808
11809         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
11810         to here         as they are now used in assembly.c new code.
11811         Added a skipverification flag to MonoAssembly.
11812         New internal function mono_assembly_has_skip_verification.
11813
11814         * assembly.c: New function mono_assembly_has_skip_verification. It checks
11815         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
11816         part of #387274.
11817
11818 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11819
11820         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
11821         needed. Fixes #387034.
11822
11823         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
11824
11825 2008-05-06  Miguel de Icaza  <miguel@novell.com>
11826
11827         * assembly.c (mono_assembly_load_reference): Prevent crash while
11828         disassembling Silverlight 2.0 executables while we still do not
11829         have GACed libraries.
11830
11831 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11832
11833         * reflection.c: Special case generic type definitions as well. Fixes #383444.
11834
11835 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
11836
11837         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
11838         of the dynamic case. Fixes #387404.
11839
11840 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
11841
11842         *verify.c (mono_verifier_is_class_full_trust): If under
11843         verify_all and the verifier mode was not set, only
11844         gac and corlib types are fulltrust. This makes --verify-all
11845         usable to detect unverifiable code, which is the expected
11846         use case.
11847
11848 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
11849
11850         * verify.h: Ops, commited the header with debug
11851         enabled.
11852
11853 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
11854
11855         * verify.c (merge_stack): Use the new value on unverifiable
11856         stack merges.
11857
11858         * verify.c (verify_type_compatibility_full): Comparison
11859         of nullable types can't use mono_class_is_assignable_from.
11860
11861         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
11862         that makes all verification errors be reported.
11863
11864         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
11865         mono_method_verify.
11866
11867 2008-05-05  Robert Jordan  <robertj@gmx.net>
11868
11869         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
11870         support for value types. See #386415.
11871
11872         * object.c: comments.
11873
11874         Code is contributed under MIT/X11 license.
11875
11876 2008-05-05  Martin Baulig  <martin@ximian.com>
11877
11878         * debug-mono-symfile.h
11879         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
11880         for old pre-terrania symbol files.
11881
11882 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
11883
11884         * mono-config.c: Add ppc64 architecture.
11885
11886         Code is contributed under MIT/X11 license.
11887
11888 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
11889
11890         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
11891           PPC64 uses function descriptors as well.
11892
11893         Code is contributed under MIT/X11 license.
11894
11895 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
11896
11897         * object.c (compute_class_bitmap): Ignore literal static fields.
11898
11899         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
11900         var has an invalid format.
11901         (describe_ptr): Add some sanity checks for the vtable.
11902         (add_nursery_frag): Clear unused nursery fragments.
11903         (major_collection): Clear all remaining nursery fragments.
11904
11905 2008-05-03  Robert Jordan  <robertj@gmx.net>
11906
11907         * image.c, metadata-internals.h: add thunk_invoke_cache.
11908
11909         * marshal.c, marshal.h: implement
11910         mono_marshal_get_thunk_invoke_wrapper ().
11911
11912         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
11913
11914         Code is contributed under MIT/X11 license.
11915
11916 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
11917
11918         * verify.c (do_leave): Empty the stack.
11919
11920 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
11921
11922         * class.c (mono_class_is_assignable_from): Variance
11923         doesn't work between reference and value types. For example,
11924         given type C<T+>, C<int32> is not assignable to C<object>.
11925         Break the argument checking loop on first error. 
11926
11927 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
11928
11929         * icall.c : base64_to_byte_array() needs some more strict
11930           check for sequence of '=' characters. Patch by Santa
11931           Marta (http://deee.g.hatena.ne.jp/santamarta).
11932
11933           Contributed under MIT/X11 license.
11934           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
11935
11936 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
11937
11938         * domain.c: Disable LoadLibrary support to fix Win32 build.
11939
11940         Code is contributed under MIT/X11 license.
11941
11942 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
11943
11944         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
11945         to help with cache behaviour.
11946
11947 2008-05-01  Miguel de Icaza  <miguel@novell.com>
11948
11949         * appdomain.c (mono_domain_from_appdomain): Add new accessor
11950         method. 
11951
11952 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
11953
11954         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
11955
11956 2008-05-01  Dick Porter  <dick@ximian.com>
11957
11958         * process.c (process_get_fileversion): Only pass 16 bits of
11959         language ID to VerLanguageName.  Fixes bug 381204.
11960
11961 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
11962
11963         * verify.c (mono_method_verify): Fix the comparison
11964         operator for code bounds check.
11965
11966 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
11967
11968         * verify.c (mono_method_verify): Check the bounds of
11969         all access of the code array.
11970
11971 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
11972
11973         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
11974
11975 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
11976
11977         * image.c (mono_image_strong_name_position): Fix return value when the rva is
11978         not valid.
11979
11980 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
11981
11982         * loader.c (mono_get_method_from_token, mono_method_signature): Add
11983         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
11984         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
11985         fixup main EXE images when using mono.exe for mixed-mode assembly support.
11986         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
11987         mono_runtime_load.
11988         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
11989         runtime initialization from metadata.
11990         * assembly.c: Remove obsolete ceGetModuleFileNameA.
11991         (mono_set_rootdir): Use mono_get_module_file_name.
11992         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
11993         handles.
11994         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
11995         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
11996         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
11997         MonoCLIImageInfo. Add support for module handles.
11998         (load_cli_header): Update mono_cli_rva_image_map signature.
11999         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12000         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12001         (mono_image_rva_map): Add support for module handles.
12002         (mono_image_ensure_section_idx): Add support for module handles.
12003         (mono_image_close): Add support for module handles.
12004         (do_load_header): Add support for module handles.
12005         (mono_image_open_from_module_handle): New function for internal use.
12006         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12007         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12008         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12009         handles.
12010         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12011         * image.h: Add mono_image_fixup_vtable.
12012         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12013         support.
12014         * coree.h: New file.
12015         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12016         unsupported native code.
12017         (mono_marshal_set_callconv_from_modopt): New function splitted from
12018         mono_marshal_get_managed_wrapper.
12019         (mono_marshal_get_managed_wrapper): Use
12020         mono_marshal_set_callconv_from_modopt.
12021         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12022         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12023         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12024         that results in a deadlock when the runtime is loaded in _CorDllMain.
12025         * Makefile.am: Add coree.c and coree.h.
12026
12027         Contributed under MIT/X11 license.
12028
12029 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12030
12031         * generic-sharing.c: Search for type arguments in array element
12032         types as well.
12033
12034 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12035
12036         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12037
12038         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12039
12040         * object.c: Don't setup the RGCTX when the vtable is created,
12041         because we're setting it up lazily now.
12042
12043 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12044
12045         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12046         64 bit support.
12047
12048 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12049
12050         * verify.c (verify_class_for_overlapping_reference_fields): 
12051         If class is under fulltrust allow reference types to overllap
12052         if they have the same RVA.
12053
12054 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12055
12056         * pedump.c: Added new flag valid-only, that makes the verifier
12057         behaves just like --security=validil. It won't fail type load
12058         due to unverifiable restrictions.
12059
12060 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12061
12062         * class-internals.h (struct MonoMethod): Added a verification_success
12063         field to cache verifier executions. Reduced MonoMethod:slot size by
12064         one bit.
12065
12066 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12067
12068         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12069         instead of a 'vt' argument to save an indirection and to allow these to be used
12070         for valuetypes.
12071         (scan_vtype): New helper function to scan an area using a gc descriptor.
12072         (mono_gc_wbarrier_value_copy): Implement this.
12073         (handle_remset): Add support for REMSET_VTYPE.
12074         (find_in_remset_loc): Ditto.
12075         (mono_gc_base_init): Allow some debugging options to be controlled through the
12076         use of the MONO_GC_DEBUG env variable.
12077         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12078         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12079
12080 2008-04-23  Martin Baulig  <martin@ximian.com>
12081
12082         * domain.c (mono_domain_create): Move the call to
12083         mono_debug_domain_create() down, after allocating the domain id.
12084
12085 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12086
12087         verify.c (verify_class_for_overlapping_reference_fields): Skip
12088         static fields while verifying for overlapping fields as they
12089         don't matter at all.
12090
12091 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12092
12093         * domain-internals.h: added a declaration of
12094         mono_make_shadow_copy.
12095
12096         * assembly.c (mono_assembly_open_full): shadow copying of
12097         assemblies moved to here, so that all the assemblies within the
12098         application domain's private binary directories can be
12099         processed. Fixes bug #380546
12100
12101         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12102         mono_make_shadow_copy and made non-static. The decision whether
12103         to shadow-copy an assembly is made based on its location - it's
12104         copied if it's in one of the private application domain binary
12105         directories and its different to the target file in the shadow
12106         directory. Fixes bug #380546
12107
12108 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12111
12112         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12113         types.
12114
12115         * reflection.c (mono_image_create_token): Handle 
12116         Method/ConstructorOnTypeBuilderInst.
12117         (resolve_object): Ditto.
12118         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12119         so it can be called from resolve_object. Also handle the case when the inflated
12120         class already has its methods setup.
12121
12122 2008-04-21  Martin Baulig  <martin@ximian.com>
12123
12124         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12125
12126 2008-04-20  Geoff Norton  <gnorton@novell.com>
12127
12128         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12129         pointer dereference.
12130
12131 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12132
12133         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12134         portability API to look up the assembly file. Fixes behavior in
12135         situations when the application has a bin/ directory, but the
12136         assembly search patch refers to Bin/ (and thus the requested file
12137         name is Bin/SomeLibrary.dll). Fixes bug #379888
12138
12139 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12140
12141         verify.c (mono_type_is_generic_argument): Extracted this check
12142         from a dozen places to here.
12143
12144         verify.c: Fixed all issues related to boxing generic arguments
12145         and their constraints.
12146
12147 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12148
12149         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12150
12151 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12154         isn't finished yet. Fixes #363447.
12155
12156 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12159         Fixes #346419.
12160
12161 2008-04-13  Jb Evain  <jbevain@novell.com>
12162
12163         * domain.c: update the 2.1 profile versions.
12164         Merged from the Moonlight 2 branch.
12165
12166 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12167
12168         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12169         mscorlibs for the non-refonly case as well.
12170
12171         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12172         in mono_assembly_load_from_full (). Fixes #378924.
12173
12174 2008-04-11  Geoff Norton  <gnorton@novell.com>
12175
12176         * icall.c: The global extern environ doesn't exist on Mac.  We
12177         need to call NSGetEnviron instead.
12178
12179 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12180
12181         verify.c: Add generic method constraint verification.
12182
12183 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12184
12185         class.c (mono_class_inflate_generic_method_full): Add a long
12186         explanation to the is_mb_open hack. Remove the FIXME.
12187
12188 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12189
12190         * verify.c (mono_method_verify): Mark all unknown opcodes
12191         as invalid. Mark jmp as unverifiable.
12192
12193 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12194
12195         * verify.c: Add code to do type constraint verification on class instances.
12196
12197         * verify.c (mono_verifier_verify_class): Use the type constraint 
12198         verification code.
12199
12200 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12201
12202         * class.c (mono_class_get_field_default_value): Don't pass cindex
12203         as hint to mono_metadata_get_constant_index. The local is not initialized
12204         and should contain garbage most of the time. This could only work
12205         with a lot of luck.
12206
12207 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12208
12209         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12210
12211 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12212
12213         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12214
12215         * class.c (mono_class_from_generic_parameter): Save the token of the
12216         generic param in MonoClass::sizes.generic_param_token.
12217
12218         * reflection.c (mono_custom_attrs_from_class): If the class type is
12219         VAR or MVAR retrieve the attributes of the generic param.
12220
12221 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12222
12223         * class.c (mono_class_init): Do class verification if the verifier
12224         is enabled.
12225
12226 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12227
12228         * verify-internal.h: Added mono_verifier_verify_class.
12229
12230         * verify.c: Added mono_verifier_verify_class. It checks for
12231         classes with explicit layout that have overlapping reference fields.
12232
12233         * pedump.c: Init the verifier state prior to verification. Fixed
12234         command line arguments.
12235
12236 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12237
12238         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12239
12240 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * verify-internals.h: Fix a warning.
12243
12244 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12245
12246         * verify-internals.h: New header with the verifier configuration
12247         extracted from mini.c.
12248
12249         * verify.c: Implemented the new functions exported by verify-internals.h.
12250
12251 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12252
12253         * verify.c: Add proper verification of ckfinite.
12254
12255 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12256
12257         * verify.c (do_conversion): Improved error message to something
12258         more meanfull.
12259
12260         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12261         with primitive types.
12262
12263 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12264
12265         * verify.c: Added tail prefix checking. Marked icall
12266         as unverifible.
12267
12268 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12269
12270         * verify.c: Fix the detection of branches to the middle
12271         of an instruction.
12272
12273 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12274
12275         * verify.c: Implemented verification of volatile. and
12276         unaligned. prefix. Check if a type is valid after retrieving it.
12277
12278 2008-04-01  Dick Porter  <dick@ximian.com>
12279
12280         * process.c (process_get_fileversion): If there's no string block,
12281         set the file language to en_US.  Fixes the other new part of bug
12282         374600.
12283
12284 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12285
12286         * class.c: New functions mono_method_can_access_field_full and
12287         mono_method_can_access_method_full. They perform type visibility
12288         and type site check.
12289
12290         * class-internal.h: Added exported functions.
12291
12292         * verify.c: Use new functions to implement proper visibility checks.
12293
12294 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12297
12298 2008-03-28  Dick Porter  <dick@ximian.com>
12299
12300         * process.c (process_get_fileversion): Use the first language ID
12301         we see, rather than insisting on an invariant language.  Fixes bug
12302         374600.
12303
12304 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12305
12306         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12307         the streams to fix reading of invalid memory later.
12308
12309         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12310         to ease debugging.
12311
12312 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12313
12314         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12315         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12316
12317 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12318         * threads.h: Added MonoThreadManageCallback type and
12319         mono_thread_set_manage_callback prototype
12320         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12321         (used to store the mono_thread_manage callback).
12322         * threads.c: Added mono_thread_set_manage_callback, and handle
12323         "MonoThread->manage_callback" in build_wait_tids.
12324
12325 2008-03-26  Dick Porter  <dick@ximian.com>
12326
12327         * process.c (process_get_fileversion): Set FileVersionInfo strings
12328         to Empty when the resource doesn't have the particular info.
12329         Fixes bug 355717.
12330
12331 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12332
12333         * verify.c (mono_method_verify): Proper prefix validation.
12334
12335 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12336
12337         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12338         itself in a separate argument instead of throwing them. Fixes #373448.
12339
12340         * appdomain.c: Bump corlib version.
12341
12342 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12343
12344         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12345
12346 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12347
12348         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12349         version macros.
12350
12351 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12352
12353         * generic-sharing.c, class-internals.h: Code for putting
12354         reflection types into the runtime generic context.
12355
12356 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
12357
12358         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
12359         Fixes #340662. 
12360
12361
12362 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
12363
12364         * verify.c (VerifyContext): Added instruction prefix data to the struct.
12365
12366         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
12367
12368         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
12369
12370         * verify.c (do_cast): Let the result value keep the boxed status.
12371
12372         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
12373
12374 2008-03-17  Jb Evain  <jbevain@novell.com>
12375
12376         * reflection.c: when running on a 2.0 runtime, emit
12377         unconditionally the #~ header version as 2.0, and the
12378         CLI header version as 2.5, for symmetry's sake with csc.
12379
12380 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * class.c: Remove the unused cache_interface_offsets stuff.
12383
12384         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
12385         profiler.c: Fix warnings.
12386
12387 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12388
12389         * generic-sharing.c, class-internals.h: Support for putting
12390         methods into the runtime generic context.
12391
12392 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
12393
12394         * class.c (mono_class_setup_fields): Ignore calls made to this function for
12395         classes which are generic instances of not-yet finished typebuilders. Fixes
12396         #351172.
12397
12398         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
12399
12400 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
12401
12402         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
12403
12404         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
12405         field, replace it with a hash table in MonoDynamicImage.
12406
12407         * reflection.c (inflate_mono_method): Access the generic definition object from
12408         image->generic_def_objects instead of imethod->reflection_info.
12409
12410         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
12411
12412         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
12413         
12414         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
12415         function in reflection.c so it is easier to keep in sync with the dynamic image
12416         creation code.
12417
12418         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
12419         mono_image_close ().
12420
12421 2008-03-15  Mark Probst  <mark.probst@gmail.com>
12422
12423         * class.c (mono_class_generic_sharing_enabled): Disable generic
12424         sharing for all architectures except AMD64 and x86 to fix build.
12425
12426 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12427
12428         * verify.c: Use the generic definition MonoGenericContext when available.
12429         Remove code for checking generics instance compatibility in favor of
12430         mono_class_is_assignable_from.
12431
12432 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12433
12434         * marshal.c, marshal.h, metadata-internals.h, image.c,
12435         wrapper-types.h: New wrapper for invoking a shared static method
12436         without having to pass the runtime generic context argument.
12437
12438 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
12439
12440         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
12441
12442 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12443
12444         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
12445         
12446         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
12447         create a token from a FieldOnTypeBuilderInst.
12448         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
12449         (resolve_object): Ditto.
12450
12451         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
12452         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
12453
12454 2008-03-14  Martin Baulig  <martin@ximian.com>
12455
12456         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
12457
12458         * debug-mono-symfile.h
12459         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
12460         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
12461
12462 2008-03-10  Martin Baulig  <martin@ximian.com>
12463
12464         * debug-mono-symfile.h
12465         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
12466         `lexical_block_table_offset'.
12467         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
12468         `lexical_blocks'.
12469         (MonoSymbolFile): Added `version'.
12470
12471         * mono-debug.h
12472         (MonoDebugLexicalBlockEntry): Removed.
12473         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
12474         `lexical_blocks'.
12475
12476         * mono-debug.c (mono_debug_add_method): Don't compute lexical
12477         blocks here; the debugger now does this internally.
12478
12479 2008-02-27  Martin Baulig  <martin@ximian.com>
12480
12481         * object.c (mono_runtime_exec_main): Call
12482         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
12483         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
12484
12485 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12486
12487         * verify.c (verify_type_compatibility_full): Allow native int to be converted
12488         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
12489
12490 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
12491
12492         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
12493         ldftn with a virtual method.
12494
12495 2008-03-13  Geoff Norton  <gnorton@novell.com>
12496
12497         * decimal.c:  Only include memory.h if the platform has it.
12498
12499 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
12500
12501         * assembly.c, class.c, metadata-internals.h: make sure public key
12502         tokesns are compared in a case-insensitive way. Also, all
12503         the lookups in the GAC use a lowercase public key token
12504         (gaacutil already does the lowercasing on install). Fixes
12505         bug #369541.
12506
12507 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
12508
12509         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
12510         and return value.
12511
12512 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
12513
12514         * image.c: when someone loads a mscorlib from a file, return the
12515         currently loaded mscorlib (fixes bug #369253).
12516
12517 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12518
12519         * class.c: handle types with no parents by forcing them to have
12520         System.Object as a parent and marking them as broken (this currently
12521         allows the first part of bug #369173 to work as well, likely because
12522         we don't check for typeload exceptions everywhere yet).
12523
12524 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
12525
12526         * class.c: more complete check that types belong to corlib
12527         (fixes second part of bug #369173).
12528
12529 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
12530
12531         * generic-sharing.c:  Including glib.h for the MSVC builds to define
12532           "inline" to "__inline" before including mono-membar.h.
12533           
12534         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
12535           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
12536           MSVC builds.
12537
12538         Contributed under MIT/X11 license.
12539
12540 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12541
12542         * verify.c (do_invoke_method): Remove return type validation.
12543
12544         * verify.c (do_ret): Do return type validation at return site instead of
12545         call site.
12546
12547 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
12548
12549         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
12550
12551         * verify.c: Some todos cleaned and improved a few error messages.
12552
12553 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
12554
12555         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
12556
12557 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12558
12559         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
12560         system types correctly.
12561
12562         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
12563         function.
12564
12565 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12566
12567         * assembly.c (build_assembly_name): Fix a warning.
12568
12569 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
12570
12571         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
12572         the called function takes an object type argument. Fixes storing or
12573         valuetypes across remoting as well as reducing memory usage.
12574         * image.c, metadata-internals.h: remove now unused ldfld_remote and
12575         stfld_remote wrapper caches.
12576
12577 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12578
12579         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
12580         is not found.
12581
12582         * reflection.c (mono_image_register_token): New helper function to save
12583         a token->object mapping.        
12584
12585         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
12586         managed code.
12587
12588         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
12589         one dimension arrays. Fixes #367670.
12590         (mono_reflection_get_type_internal): Ditto.
12591
12592 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12593
12594         * marshal.c: mono_load_remote_field_new() always returns object.
12595         so use the proper signature (fixes bug #366445).
12596
12597 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12598         
12599         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
12600         add an 'inline_failure' flag instead.
12601
12602 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12603
12604         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
12605         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
12606         contains the location of "this", used for exception handling.
12607
12608 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12609
12610         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
12611         their size on all platforms for perf reasons.
12612
12613 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12614
12615         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
12616         object-internal.h
12617
12618         * object-internal.h: Same.
12619
12620 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12621
12622         * reflection.h: Fix the build I just broke.
12623
12624 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12625
12626         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
12627         Test if a token is valid, this remove explicit usage of 
12628         MonoDynamicImage::tokens from the verifier code.
12629
12630         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
12631
12632         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
12633         instead of direct access to MonoDynamicImage::tokens.
12634
12635 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12636
12637         * verify.c (token_bounds_check): Fix the build I just broke.
12638
12639 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
12640
12641         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
12642
12643         * verify.c (verifier_load_method): Fixed the errors message.
12644
12645         * verify.c (mono_method_verify): Fixed a debug message.
12646
12647 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
12648
12649         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
12650         mono-perfcounters.h, class-internals.h: support for predefined
12651         writable counters, query of categories and counters, bugfixes.
12652
12653 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
12654
12655         * verify.c (do_refanytype): Verify the refanytype opcode.
12656
12657         * verify.c (mono_method_verify): Use do_refanytype.
12658
12659 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
12660
12661         * verify.c (do_mkrefany): Verify the mkrefany opcode.
12662
12663         * verify.c (mono_method_verify): Use do_mkrefany.
12664
12665 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
12666
12667         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
12668         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
12669         implementation.
12670
12671 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12672
12673         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
12674         the type load exception.
12675
12676 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
12677
12678         * verify.c: Added a few FIXME for method signatures
12679
12680         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
12681         of mono_method_get_signature and get vararg call working. Removed unused
12682         checks for return value.
12683
12684         * verify.c (do_refanyval): Verify the refanyval opcode.
12685
12686         * verify.c (mono_method_verify): Implemented verification of arglist and
12687         use do_refanyval.
12688
12689 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12690
12691         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
12692         vtypes to marshal.c.
12693
12694         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
12695         it works for AOT as well.
12696
12697 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
12698
12699         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
12700         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
12701         the system time is adjusted.
12702
12703 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
12704
12705         * icall.c, icall-def.h: use the new time functions (fixes the
12706         non-monotonic behaviour of TickCount).
12707
12708 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12709
12710         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
12711         it breaks the build.
12712         
12713         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
12714         cattr is not finished yet.
12715
12716 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
12717
12718         * verify.c: Proper token validation for field, method and type.
12719
12720 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
12721
12722         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
12723
12724         * loader.c (method_from_memberref): Generate type load error instead of method missing
12725         if the type is not found.
12726
12727 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12728
12729         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
12730         some of the conversions caused the generation of a marshal directive exception.
12731
12732 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
12733
12734         verify.c: Report which exception should be thrown by the JIT.
12735         Added a lot of FIXME notes.
12736
12737 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12738
12739         * generic-sharing.c: Runtime generic context slots are not
12740         instantiated on init anymore.  Instead, provide function to do the
12741         instantiating on demand.
12742
12743         * class-internals.h: Added vtable to runtime generic context.
12744         Macros for encoding direct and indirect slot offsets in one
12745         guint32.
12746
12747 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12748
12749         * object.c, generic-sharing.c: Moved some generic sharing code
12750         from object.c to generic-sharing.c.
12751
12752         * generic-sharing.c: Added support for extensible runtime generic
12753         context.
12754
12755         * metadata-internals.h: Two new hash tables in MonoImage for
12756         extensible runtime generic context support.
12757
12758         * domain.c: Unregister generic vtables upon domain unloading.
12759
12760         * image.c: Destroy new hash tables upon image unloading.
12761
12762         * metadata.c: Unregister generic subclasses upon image unloading.
12763
12764         * class-internals.h: New data structure for runtime generic
12765         context template.  New fields in the runtime generic context for
12766         extensible part.
12767
12768         * Makefile.am: Added generic-sharing.c.
12769
12770 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
12771
12772         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
12773         there is a pending loader exception, raise it.
12774
12775         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
12776         same.
12777
12778         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
12779         same.
12780
12781         Fixes #363450.
12782
12783 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12784
12785         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
12786
12787         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
12788         
12789         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
12790         ref-only requests for compatibility with MS.
12791
12792 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
12793
12794         * reflection.c (mono_custom_attrs_from_method): Don't silently
12795         return an empty list for generic method instances.
12796         (mono_custom_attrs_from_param): Likewise.
12797
12798 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
12799             Raja R Harinath  <harinath@hurrynot.org>
12800
12801         Fix #354757
12802         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
12803         * class.c (mono_class_inflate_generic_method_full): Initialize it
12804         when a fully-open method is instantiated.
12805         * metadata.c (inflated_method_equal, inflated_method_hash): Update
12806         to new field.
12807         * reflection.c (inflate_mono_method): Don't create a temporary context.
12808
12809 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
12810
12811         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
12812         Compute correct value, to prepare for imethod->reflection_info going away.
12813
12814 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12815
12816         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
12817
12818 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
12819
12820         * verify.c: Implement skip visibility flag.
12821
12822 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
12823
12824         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
12825         which contains an extra field to tell the kind of exception that should be thrown.
12826
12827         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
12828
12829 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
12830
12831         * loader.c (mono_method_get_param_names): Initialize 'klass' after
12832         'method' is updated.
12833
12834 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * class.c (mono_class_layout_fields): Set class->min_align for classes using
12837         explicit layout as well. Fixes #360375.
12838
12839 2008-02-11  Geoff Norton  <gnorton@novell.com>
12840
12841         * loader.c: Guard and dereference against inflated generic methods
12842
12843 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
12844
12845         * class.c: Include Retargetable spec in assembly name.
12846         * assembly.c: Always include PublicKeyToken spec in assembly name
12847         (with value "null" if assembly is not signed), and include
12848         Retargetable spec.
12849         * icall-def.h: Added icall for Assembly.get_fullname.
12850         * icall.c: Added icall returning the fullname of an assembly.
12851
12852 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12853
12854         * class.c (mono_class_setup_vtable_general): Add a missing call to
12855         mono_class_setup_methods () which is needed in the AOT case.
12856
12857 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
12858
12859         * verify.c (mono_type_get_stack_name): Added. Return the name for the
12860         stack type of the given MonoType.
12861
12862         * verify.c (verify_type_compatibility_full): Handle the void type.
12863
12864         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
12865         way stack merging works.
12866
12867         * verify.c (store_local): Improved verification message.
12868
12869         * verify.c (do_branch_op): If the merging is invalid, the method
12870         is unverifiable and not invalid. Improved error message.
12871
12872         * verify.c (merge_stacks): Properly merge a boxed valuetype and
12873         a reference type diferent than System.Object. Improved error
12874         message.
12875
12876 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
12877
12878         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
12879
12880         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
12881         type of an enum even if the argument is byref.
12882
12883         * verify.c: Replace all explicit uses of enumtype and enum_basetype
12884         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
12885
12886         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
12887
12888         *verify.c (verify_type_compatibility_full): Make enum types
12889         compatible with their base types.
12890
12891         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
12892         types are compatible for the special case of a boxed valuetype and
12893         System.Object.
12894
12895         * verify.c (verify_stack_type_compatibility): The function
12896         is_compatible_boxed_valuetype was extracted from here.
12897
12898         * verify.c (push_arg): Only set ctx->has_this_store if the method
12899         is not static.
12900
12901         * verify.c (do_ldelem): Fixed a typo in an error message and added
12902         strict check for mixing int32 and native int as the array type
12903         and ldelem type.
12904
12905         * verify.c (merge_stacks): Consider boxed valuetypes in the
12906         compatibility checks.
12907
12908 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
12909         * profiler.h: (MonoGCEvent): Added start-stop the world events.
12910
12911 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
12912         *class.c: use_new_interface_vtable_code: renamed the env var to have
12913         a "MONO_" prefix, and fix the logic to enable it by default.
12914
12915 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
12916         *class.c:
12917         mono_class_setup_vtable_general: rewrote the way in which interface
12918         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
12919         makes the code more maintainable.
12920         For now the old code is still there, and can be activated setting
12921         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
12922
12923 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
12924
12925         * verify.c: guarded some debug functions around and #ifdef.
12926
12927         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
12928
12929 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12930
12931         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
12932         changes for now since they seem to break too many things.
12933
12934 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12935
12936         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
12937         mono_marshal_find_nonzero_bit_offset): Added macro and function
12938         for finding the byte- and bit-offset of a bitfield within a
12939         struct.
12940
12941 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
12944         (mono_marshal_get_struct_to_ptr): Ditto.
12945
12946         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
12947         cctor_signature.
12948
12949 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12950
12951         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
12952         between methods for non-corlib types.
12953
12954 2008-02-02  Geoff Norton  <gnorton@novell.com>
12955
12956         * loader.c (mono_method_get_param_names): Populate the parameter name for 
12957         generic parameters as well. (Fixes #342536)
12958
12959 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
12960
12961         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
12962
12963         * verify.c (do_invoke_method): Fix for calling with byref structs.
12964
12965         * verify.c (do_cast): push a boxed value type based on the type token and not
12966         the type of stack.
12967
12968 2008-01-31  William Holmes  <billholmes54@gmail.com>
12969
12970         * process.c (process_module_string_read): Check the size returned form 
12971           VerQueryValue to avoid out of memory exception. 
12972
12973 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
12976         Handle properly modules which are not in the moduleref table. Fixes
12977         #356938.
12978
12979 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12980
12981         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
12982         the dynamic case which is now in managed code.
12983         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
12984
12985         * marshal.c (mono_string_to_bstr): Fix a warning.
12986         (init_com_provider_ms): Ditto.
12987
12988         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
12989
12990         * exception.c (mono_get_exception_out_of_memory): New helper function.
12991
12992 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
12993
12994         * marshal.c: Add support for BSTR marshalling
12995         using other COM systems.
12996
12997         Code is contributed under MIT/X11 license.
12998
12999 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13000
13001         * object.c (mono_runtime_invoke_array): reverted previous
13002         commit as it breaks the build.
13003
13004 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13005
13006         * object.c (mono_runtime_invoke_array): Verify arguments for
13007         invalid types. Fixes #348522.
13008
13009 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13010
13011         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13012         non-final virtual calls using call. 
13013
13014         * verify.c (do_invoke): fixed some TODOs.
13015
13016         * verify.c (push_arg): set has_this_store for "ldarga 0".
13017
13018 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13019
13020         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13021         which belong to an inflated class. Fixes #356531.
13022
13023 2008-01-26  Robert Jordan  <robertj@gmx.net>
13024
13025         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13026         which resort to FindFirstFile when a certain error condition
13027         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13028         Code is contributed under MIT/X11 license.
13029
13030 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13031
13032         * marshal.c (emit_marshal_string): Fix out string marshalling
13033         to use specified encoding. Fixes #323900.
13034
13035         Code is contributed under MIT/X11 license.
13036
13037 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13038
13039         * class.c (mono_class_inflate_generic_method_full): Don't modify
13040         iresult->context after cache check.
13041
13042 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13043
13044         * class.c (mono_class_inflate_generic_method_full): Change the
13045         struct assignments to memcpy for better visibility and add some comments.
13046
13047 2008-01-23  Dick Porter  <dick@ximian.com>
13048
13049         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13050         procedure, and make it work on windows.
13051
13052 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13055         a MonoReflectionTypeBuilder since it is always of that type.
13056
13057         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13058
13059         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13060
13061         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13062         
13063         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13064
13065         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13066
13067         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13068         instantiations from the type cache.
13069
13070 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13071
13072         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13073
13074         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13075
13076 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13077
13078         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13079
13080         * verify.c (mono_method_verify): removed old TODO
13081
13082 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13083
13084         * verify.c (do_newobj): add visibility check.
13085
13086 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13087
13088         * verify.c (do_load_function_ptr): add visibility check.
13089
13090 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13091         *class.c:
13092         mono_generic_class_get_class: hook profiler events.
13093         mono_field_get_offset: added to support heap-shot in the new profiler.
13094         *class.h: exported mono_field_get_offset.
13095         * reflection.c:
13096         mono_reflection_setup_internal_class: hook profiler events.
13097
13098 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13101         argument here too and use it to avoid checking for pending exceptions if 
13102         possible.
13103
13104 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13105
13106         * assembly.c (build_assembly_name): add arg for passing the assembly
13107         flags. Do not consider a PublicKey with value "null" valid.
13108         (mono_assembly_name_parse_full): added boolean argument that will be
13109         set if the assembly name contains a PublicKeyToken spec. Added support
13110         for the Retargetable spec for which only Yes or No are allowed as valid
13111         value. Consider assembly name invalid if Retargetable spec is set, but
13112         either version, culture or public key (token) are not specified.
13113         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13114         with implementation in assembly.c.
13115         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13116         from MonoAssemblyName.
13117         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13118         introduced argument for mono_assembly_name_parse_full to know if the
13119         assembly name has a PublicKeyToken spec, and if it has instruct
13120         fill_reflection_assembly_name to use default value for keyToken (if
13121         PublicKeyToken is null).
13122
13123 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13124
13125         * verify.c (mono_method_verify): fixed ovf ops with
13126         float values. They are unverifiable now.
13127
13128 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13129
13130         * class.c (set_failure_from_loader_error): add BadImageException to the
13131         list of exceptions that can cause a type to fail to load.
13132
13133         * class.c (mono_class_get_exception_for_failure): same.
13134
13135 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13136
13137         * verify.c (in_any_exception_block): added, check if offset
13138         is part of any exception handling clause.
13139
13140         * verify.c (get_stack_type): added VAR and MVAR types.
13141
13142         * verify.c (do_stobj): better error messages.
13143
13144         * verify.c (do_cpobj): added, check cpobj.
13145
13146         * verify.c (do_initobj): added, check initobj.
13147
13148         * verify.c (do_sizeof): added, check sizeof.
13149
13150         * verify.c (do_localloc): added, check localloc.
13151
13152         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13153
13154 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13155
13156         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13157         save_lmf/restore_lmf opcodes.
13158
13159         * threads.c (mono_threads_install_notify_pending_exc): New function to
13160         install a callback notifying the JIT there is a pending exception on a thread.
13161         (mono_thread_request_interruption): Call the new callback.
13162         (mono_thread_get_and_clear_pending_exception): New function to return the
13163         exception pending on a thread.
13164
13165         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13166         to turn off checking for pending exceptions.
13167         (mono_marshal_get_native_wrapper): Ditto.
13168
13169 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13170
13171         * threads-types.h: Get rid of the unnecessary extern declarations.
13172
13173 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13174
13175         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13176         return field from parent class if not private.
13177         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13178         returns fields from parent class if they are not private.
13179         (method_nonpublic): added function to determine if a given method
13180         should be considered non-public. Returns false for private methods
13181         on parent class, and internal methods from parent on the 1.0 profile.
13182         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13183         use method_nonpublic function to determine whether method should be
13184         returned.
13185         (property_accessor_public): use newly introduced method_nonpublic
13186         function to determine whether accessor is non-public. 
13187         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13188         event from parent class if not private. Only return static event if
13189         Static flag is set, and only return static event from parent class if
13190         FlattenHierarchy flag is set.
13191         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13192         include non-private events from parent class.
13193
13194 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13197         warning.
13198
13199 2008-01-16  Wade Berrier <wberrier@novell.com>
13200
13201         * security.c: Add assembly.h header to appease some warnings
13202
13203 2008-01-16  Dick Porter  <dick@ximian.com>
13204
13205         * process.c (process_module_string_read): Remove trailing null
13206         when saving string.
13207
13208 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13209
13210         * class-internals.h: A new data structure describing the layout of
13211         a runtime generic context (MonoRuntimeGenericContextTemplate).
13212
13213         * metadata-internals.h: Added a hash table to MonoDomain that maps
13214         from open generic classes to their runtime generic context
13215         templates.
13216
13217         * object.c: Building of the runtime generic context, including
13218         proper handling of generic type arguments of superclasses.
13219         Building of the runtime generic context according to the template.
13220
13221 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13222
13223         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13224         Fixes #350856.
13225
13226         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13227         mono_portability_find_file (). Fixes #325466.
13228         (mono_image_get_public_key): Fix a warning.
13229
13230 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13231
13232         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13233         Fixes #353550.
13234         (mono_class_from_name_case): Ditto.
13235
13236 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13237
13238         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13239           common storage for the tables used in the System/NumberFormatter class.
13240
13241 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13242
13243         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13244
13245 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13246
13247         * verify.c (get_boxable_mono_type): check if the token is valid.
13248
13249         * verify.c (set_stack_value): changed to add an error if an
13250         invalid type is set on stack. Changed all callers due to signature change.
13251
13252         * verify.c (do_stobj): implement stobj validation.
13253
13254 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13255
13256         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13257         set container->is_method, it was set earlier.
13258
13259         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13260         generic methods.
13261
13262         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13263         is_method of the generic container to TRUE for methods.
13264
13265 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13266
13267         * metadata.c (type_in_image): Handle type parameters properly.
13268
13269         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13270         memory ownership of this structure.
13271
13272 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13273
13274         * verify.c (get_boxable_mono_type): make typedref types been just
13275         unverifiable. check for void type.
13276
13277         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13278
13279         * verify.c (do_load_function_ptr): accept method spec tokens.
13280
13281 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * marshal.c (mono_class_native_size): Always set *align even if this is called
13284         recursively.
13285
13286 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13289         out-of-date.
13290
13291 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13292
13293         * verify.c: removed some old unused tables. A huge bunch of small fixes
13294         to things found while testing the verifier with mono basic.
13295
13296         * verify.c (dump_stack_value): dump null literal flag to.
13297
13298         * verify.c (verify_type_compatibility_full): fix comparison
13299         for types that have a generic super type.
13300
13301         * verify.c (verify_stack_type_compatibility): fix compatibility
13302         between null literals and reference types. fix compatibility between
13303         boxed valuetypes and object. fix corner case test for enums.
13304
13305         * verify.c (do_cmp_op): proper verification of cgt.un in case
13306         of reference types.
13307
13308         * verify.c (do_invoke_method): fix error message.
13309
13310         * verify.c (do_store_indirect
13311
13312         * verify.c (check_is_valid_type_for_field_ops): proper verification
13313         of managed pointers to valuetypes and boxed valuetypes. proper verification
13314         of null literals.
13315
13316         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13317         allow token to be a reference type.
13318
13319         * verify.c (do_cast): proper handling of boxes valuetypes.
13320
13321         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13322         in object[].
13323
13324         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13325         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13326         fixed the decoding of unbox_any
13327
13328 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13331
13332 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13333
13334         * verify.c (do_newobj): do delegate verification.
13335
13336         * verify.c (verify_delegate_compatibility): perform delegate
13337         verification.
13338
13339         * verify.c (verify_ldftn_delegate): perform tests related to
13340         ldftn delegates.
13341
13342         * verify.c (mono_delegate_signature_equal): perform the
13343         slightly diferent signature comparison required by delegates.
13344
13345         * metadata.c (mono_metadata_type_equal_full): added and exported
13346         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13347         allows signature only comparison.
13348
13349         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13350         as MONO_INTERNAL.
13351
13352 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13353
13354         * verify.c: added a bunch of stack_slot_* functions to
13355         make access to stack slot type easier. This is required to
13356         allow optional flags, like null literal, boxed value and
13357         this pointer.
13358         All access paths to IlStackDesc::stype have been changed 
13359         to use these new funcions.
13360         Removed a bunch of unused functions and cleared all warnings.
13361         This patch introduces the usage of the this pointer and 
13362         boxed value flags.
13363
13364 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
13365
13366         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
13367
13368 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13369
13370         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
13371         match managed version.
13372
13373         * appdomain.c: Bump corlib version.
13374         
13375         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
13376         argument.
13377
13378 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
13379
13380         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
13381         Set public key token to zero-length byte array if assembly is not
13382         strongnamed.
13383
13384 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13385
13386         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
13387         writing a vtype array elem.
13388
13389 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
13390
13391         * assembly.c (build_assembly_name): return FALSE if length of token is
13392         not 16 (if not "null").
13393         (mono_assembly_name_parse_full): return FALSE if value of version,
13394         culture, token or key is 0.
13395         * icall.c (fill_reflection_assembly_name): add boolean arguments to
13396         specify whether public key and public key token must be set to default
13397         value (zero-length byte array) if not available. Set versioncompat to
13398         SameMachine. If public key is available or the default is set, then
13399         set PublicKey flag.
13400         (ves_icall_System_Reflection_Assembly_FillName): if no public key
13401         is available, use empty byte array as default value. On the 2.0
13402         profile, use default value for public key token if not set.
13403         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
13404         profile, use default value for public key if not set. On the 2.0
13405         profile, use default value for public key token if not set.
13406         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
13407         default values for public key and public key token.
13408
13409 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13410
13411         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
13412         field to keep it in synch with the managed object.
13413
13414         * marshal.c (emit_marshal_object): Add support for byref marshalling of
13415         delegates. Fixes #351520.
13416
13417         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
13418         contains defined memory.
13419         
13420         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
13421
13422         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
13423         
13424         * sgen-gc.c (check_consistency): New helper function to do a consistency check
13425         of the GC data structures.
13426
13427         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
13428
13429         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
13430         
13431         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
13432         barrier.
13433         (mono_array_clone_in_domain): Ditto.
13434         (mono_array_clone_in_domain): Ditto.
13435
13436         * threads.c (start_wrapper): Register the thread start argument as a GC root.
13437         (cache_culture): Use a write barrier.
13438
13439         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
13440         (ves_icall_get_property_info): Ditto.
13441
13442         * object.h (MONO_STRUCT_SETREF): New macro.
13443
13444         * class-internals.h (MonoStats): Add some GC statistics.
13445
13446         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
13447
13448 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
13449
13450         * exception.c (mono_exception_from_name_two_strings):
13451         Break from loop after method is found.
13452
13453 2008-01-04  Dick Porter  <dick@ximian.com>
13454
13455         * process.c (process_module_string_read): Rename variable to
13456         reflect correct usage, after fixing bug 345972.
13457
13458 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
13459
13460         * verify.c (mono_type_create_fnptr_from_mono_method): 
13461         created a MonoType function pointer instance to be used during
13462         verification. The verifier releases this memory at end.
13463
13464         * verify.c (mono_method_is_constructor): extracted repeated
13465         checks for constructor into a single class.
13466
13467         * verify.c (do_push_field): use new extracted method
13468         for constructor check.
13469
13470         * verify.c (do_newobj): same.
13471
13472         * verify.c (do_ldftn): renamed to do_load_function_ptr
13473         and make it verify ldvirtftn too.
13474
13475         * verify.c (mono_method_verify: proper verification
13476         of ldvirtftn. release created MonoMethod instances.
13477
13478 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13479
13480         * verify.c (token_bounds_check): added.
13481
13482         * verify.c (do_ldftn): added.
13483
13484         * verify.c (mono_method_verify): proper verificartion of ldftn.
13485
13486 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
13487
13488         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
13489         than the table row count. It's the resposibility of the caller to
13490         make the bounds check and raise the correct error.
13491
13492         * metadata.c (mono_metadata_decode_row_col): Same.
13493
13494         * loader.c (mono_get_method_from_token): perform bounds check
13495         on token for methoddef table.
13496
13497 2007-12-29  Miguel de Icaza  <miguel@novell.com>
13498
13499         * icall.c
13500         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
13501         assert into a negative result, the managed code already coped with
13502         that.
13503
13504         Some folks on Windows reported this error. 
13505
13506 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
13507
13508         * appdomain.c: Bump corlib version.
13509         * icall.c:
13510         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
13511         CultureInfo.CreateCulture to create CultureInfo for name.
13512         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
13513         create CultureInfo for name. Fixes bug #347174.
13514
13515 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13516
13517         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
13518         flags.
13519
13520         * verify.c (is_valid_branch_instruction): allow branching to the
13521         first instruction of the protected block.
13522
13523         * verify.c (is_valid_cmp_branch_instruction): same.
13524
13525         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
13526         avoid double initialization.
13527
13528         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
13529         detect which cases the eval stack should just be copied.
13530
13531         * verify.c (mono_method_verify): check if the eval stack
13532         is empty when entering a protected block.
13533
13534 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
13535
13536         * verify.c: added is_clause_in_range, is_clause_inside_range,
13537         is_clause_nested and verify_clause_relationship. They perform
13538         the verifications stated in P1 12.4.2.7.
13539
13540         * verify.c (mono_method_verify): remove some unused variables,
13541         add the new exception clause checks, add instruction border
13542         checks for protected block start/end, improved some error 
13543         messages and fixed a bug in the way invalid instruction access
13544         is detected.
13545
13546 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13547
13548         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
13549         from GC 7.0 if available.
13550
13551         * object.c: Remove an unused define.
13552         
13553         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
13554
13555         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
13556
13557         * null-gc.c (mono_gc_make_descr_for_array): Implement.
13558
13559         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
13560
13561         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
13562         to take the same arguments as the other make_descr functions.
13563
13564         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
13565
13566         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
13567         directly.
13568
13569         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
13570         mini.c.
13571
13572         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
13573         call to boehm-gc.c.
13574
13575         * boehm-gc.c (mono_gc_register_root): Fix a warning.
13576
13577         * null-gc.c (mono_gc_register_root): Fix a warning.
13578
13579         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
13580
13581         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
13582         (mono_gc_base_init): Call GC_init ().
13583
13584         * null-gc.c: Define mono_gc_register_root () as a no-op.
13585
13586         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13587
13588 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
13589
13590         * verify.c: add prototype for merge_stacks at top
13591
13592         * verify.c (do_switch): added.
13593
13594         * verify.c (merge_stacks): on some cases the stack merging
13595         was not happening properly. Unequal stack sizes at merge
13596         points should be invalid.
13597
13598         * verify.c (mono_method_verify): added more debug info on stack state.
13599         verify switch properly.
13600
13601 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
13602
13603         * method-builder.h: New file, moved the mono_mb_ declarations here from 
13604         marshal.h.
13605
13606         * boehm-gc.c marshal.c: Include method-builder.h.
13607
13608         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
13609
13610         * marshal.c: Remove some code which is now in method-builder.c.
13611
13612 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * method-builder.c: New file, extraction of the method builder functionality 
13615         from marshal.c.
13616
13617         * marshal.c: Move the mb functions into method-builder.c.
13618
13619         * marshal.h marshal.c: Export some mono_mb_... functions.
13620
13621         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
13622
13623         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
13624         the caller.
13625
13626         * class.c (mono_class_get_full): Check the token type in the dynamic case.
13627
13628         * loader.c (mono_field_from_token): Ditto.      
13629
13630         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
13631         type as well.
13632         
13633         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
13634         Fixes #342565.
13635
13636         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
13637         a helper function for setting it.
13638
13639         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
13640
13641         
13642         * assembly.c: Significally simplify code now that referenced assemblies are 
13643         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
13644
13645         * threads.h: Don't include  the internal threads-types.h header file. Fixes
13646         #349952.
13647
13648 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
13649
13650         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
13651         instructions that were target of branches or are at protected block boundaries.
13652
13653         * verify.c (in_same_block): handle filter clauses.
13654
13655         * verify.c (is_valid_branch_instruction): added. checks the target of
13656         instructions br or brtrue/false.
13657
13658         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
13659         binary branch instructions such as beq and bge.
13660
13661         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
13662         and made it pin the instruction as been part of the exception block.
13663
13664         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
13665         of in_same_block.
13666
13667         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
13668         of in_same_block.
13669
13670         * verify.c (do_ret): ret from a protected block is unverifiable and
13671         not invalid.
13672
13673         * verify.c (do_static_branch): verify br and br.s instructions.
13674
13675         * verify.c (merge_stacks): add extra param to support detection
13676         of branches in the middle of instructions.
13677         
13678         * verify.c (mono_method_verify): verify branches and exception blocks
13679         that target the middle of instructions. Proper verification of br and br.s.
13680
13681 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
13684         skip_visibility field.
13685         (reflection_methodbuilder_from_dynamic_method): Ditto.
13686
13687         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
13688         registrations. Fixes #348193.
13689
13690         * threads.h: Move the internal mono_thread_get_pending_exception () to
13691         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
13692
13693 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13694
13695         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
13696         icall registration. Fixes #348193.
13697
13698         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
13699         for corlib classes into object. Fixes #349621.
13700
13701 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
13702
13703         * icall.c (property_accessor_nonpublic): new function to determine
13704         whether an accessor allows a property to be considered non-public.
13705         Returns false for private accessor(s) from parent class, and internal
13706         accessor(s) from parent on 2.0 profile (and higher).
13707         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
13708         to determine whether property should be included if NonPublic flag
13709         is set. Fixes bug #349078.
13710
13711 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
13712
13713         * verify.c (init_stack_with_value): added.
13714
13715         * verify.c (mono_method_verify): extracted common
13716         code for exception initialization into init_stack_with_value.
13717
13718         * verify.c (mono_method_verify): initialize the exception
13719         for handler clauses as well.
13720
13721         * verify.c (mono_method_verify): fix the exception clause
13722         ordering rules, it should use handler end offset and not
13723         start offset.
13724
13725 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
13726
13727         * rawbuffer.c: remove useless warning.
13728
13729 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
13730
13731         * threads.h, threads-types.h: move functions to the correct header
13732         (fixes bug#349952).
13733
13734 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
13735
13736         * verify.c (mono_method_verify): proper verification
13737         of exception handling clauses ranges and fallthru in
13738         and out of protected blocks.
13739
13740 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
13741
13742         * verify.c (mono_method_verify): fixed compilation issue.
13743
13744 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
13745
13746         * verify.c (mono_method_verify): a printf slipped in, changed
13747         to use verifier debug macro.
13748
13749 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
13750
13751         * verify.c (is_correct_leave): check for filter clauses.
13752
13753         * verify.c (do_filter): added.
13754
13755         * verify.c (mono_method_verify): property verification of leave.
13756
13757
13758 2007-12-18  Mark Probst  <mark.probst@gmail.com>
13759
13760         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
13761         Win32 build, until we figure out how to do the proper thing on
13762         Win32.
13763
13764 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
13765
13766         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
13767         by the previous patch.
13768         
13769         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
13770         the assembly resolve handler for refonly assemblies.
13771
13772 2007-12-17  Mark Probst  <mark.probst@gmail.com>
13773
13774         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
13775         Make sure only one thread is allowed to commence shutdown, and
13776         don't allow new threads to be started once shutdown is in
13777         progress.
13778
13779 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
13780
13781         * verify.c (is_correct_endfilter): added.
13782
13783         * verify.c (is_unverifiable_endfilter): added.
13784
13785         * verify.c (do_endfilter): added.
13786
13787         * verify.c (mono_method_verify): property verification of endfilter
13788         and fixed a corner case or endfinally.
13789
13790 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
13791
13792         * verify.h: new flags to support fail fast of unverifiable code and
13793         do non-strict verification. Non-strict verification is required to
13794         have MS runtime compatibility. There are a huge amount of unverifiable
13795         code that it accepts as verifiable. The strict mode verifies the code
13796         as the specs says.
13797         Non-strict mode will be required in cases where code needs to be
13798         accepted as verifiable but fails under strict mode.
13799
13800         * pedump.c: added support to fail fast and non-strict verification.
13801
13802         * verify.c: added support for both fail fast and non-strict verification.
13803
13804 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
13805
13806         * verify.c (is_correct_endfinally): added.
13807
13808         * verify.c (mono_method_verify): property verification of endfinally.
13809
13810 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13811
13812         * verify.c (in_any_block): check for filter clauses.
13813
13814         * verify.c (is_correct_rethrow): added.
13815
13816         * verify.c (mono_method_verify): property verification of rethrow.
13817
13818         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
13819
13820 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13821
13822         * verify.c (do_throw): added.
13823
13824         * verify.c (mono_method_verify): property verification of throw
13825
13826 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
13827
13828         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
13829         assemblies. Fixes #346425.
13830
13831 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
13834         FieldBuilders.
13835
13836         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
13837
13838         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
13839         prevent asserts when this is called with a token which might not be valid.
13840
13841         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
13842         lookup_dynamic_token_class with valid_token == FALSE.
13843
13844         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
13845
13846         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
13847
13848         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
13849         
13850 2007-12-10  Mark Probst  <mark.probst@gmail.com>
13851
13852         * gc.c: Don't delay threadpool thread finalization unless Mono is
13853         shutting down.
13854
13855 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13856
13857         * threads.c: turn an assert into a non-fatal warning.
13858
13859 2007-12-09  Robert Jordan  <robertj@gmx.net>
13860
13861         * icall.c (GetVirtualMethod): Add missing argument validation.
13862
13863 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
13864
13865         * verify.c (do_cast): added.
13866
13867         * verify.c (mono_method_verify): property verification of castclass and isinst.
13868
13869
13870 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
13871
13872         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
13873
13874         * verify.c (do_stelem): added.
13875
13876         * verify.c (mono_method_verify): property verification of stelem.X.
13877
13878 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13879
13880         * class.c, class-internals.h: Introduce an environment variable
13881         (MONO_GENERIC_SHARING) through which the extent of generic code
13882         sharing can be controlled (share all classes, share only corlib
13883         classes, or share nothing).
13884
13885         * object.c: Only create runtime generic context for classes for
13886         which sharing is enabled.
13887
13888 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
13889
13890         * verify.c (do_ldelem): refactor it to work with ldelem.any.
13891
13892         * verify.c (mono_method_verify): property verification of ldelem.any.
13893
13894 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
13895
13896         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
13897         added ldelem.X opcodes.
13898
13899         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
13900
13901         * verify.c: proper verification of ldelem.X 
13902
13903 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
13906
13907 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
13908
13909         * verify.c (mono_method_verify): null literal requires special handling,
13910         the value pushed on stack need to be flagged as so.
13911
13912         * verify.c (do_ldelema): Verify ldelema properly.
13913
13914 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
13915
13916         * verify.c: Verify ldlen properly.
13917
13918 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
13919
13920         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
13921         to the target object's type. Fixes #346160.
13922
13923 2007-12-05  Dick Porter  <dick@ximian.com>
13924
13925         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
13926         Solaris needs the same workaround as BSD-derived systems.  Fixes
13927         bug 323524, patch by Burkhard Linke
13928         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
13929
13930 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
13931
13932         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
13933         handle to use when error dialog is shown; otherwise, update mask
13934         to show no error dialog when an error occurs.
13935
13936 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
13939
13940         * class.c (mono_class_get_field_default_value): New helper function to initialize
13941         field->def_type and field->data.
13942
13943 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13944
13945         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
13946         the general one.
13947
13948         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
13949
13950         * marshal.c: Avoid depending on delegate->method_info being set.
13951
13952         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
13953         
13954         * object.c (mono_delegate_ctor): Set delegate->method.
13955
13956         * object-internals.h (struct _MonoDelegate): Add 'method' field.
13957
13958         * appdomain.c: Bump corlib version.
13959
13960 2007-11-27  Raja R Harinath  <harinath@gmail.com>
13961
13962         * metadata.c (mono_generic_inst_equal_full): Short-circuit
13963         equality check if we're comparing canonicalized MonoGenericInsts.
13964
13965 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * class.c (generic_array_methods): Call mono_class_setup_methods () before
13968         accessing class->methods.
13969
13970 2007-11-22  Dick Porter  <dick@ximian.com>
13971
13972         * threads.c: Ensure that the synch_cs is set before trying to use
13973         it.
13974
13975 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
13976
13977         * profiler.c: r89126 broke the statistial profiler, unbreak.
13978
13979 2007-11-22  Martin Baulig  <martin@ximian.com>
13980
13981         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
13982
13983         * mono-debug.c
13984         (mono_debug_debugger_version): Bump to 3.
13985         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
13986         -> mono_debugger_class_initialized().
13987
13988         * mono-debug-debugger.c
13989         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
13990
13991         * class.c
13992         (mono_debugger_start_class_init_func): Removed.
13993         (mono_debugger_class_loaded_methods_func): Added.
13994         (mono_class_setup_methods): Call it here.
13995
13996 2007-11-22  Martin Baulig  <martin@ximian.com>
13997
13998         * mono-debug.c
13999         (mono_debug_add_delegate_trampoline): New public method.
14000         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14001
14002         * mono-debug.h
14003         (MonoSymbolTable): Added `global_data_table'.
14004         (MonoDebuggerTypeKind): Removed.
14005
14006 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14007
14008         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14009         these methods.
14010
14011         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14012         
14013 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14014
14015         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14016
14017 2007-11-20  Martin Baulig  <martin@ximian.com>
14018
14019         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14020
14021         * mono-debug-debugger.c
14022         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14023         (mono_debugger_remove_breakpoint): Likewise.
14024         (mono_debugger_check_breakpoints): Likewise.
14025         (mono_debugger_register_class_init_callback): New public method.
14026         (mono_debugger_remove_class_init_callback): Likewise.
14027         (mono_debugger_add_type): Likewise.
14028
14029         * mono-debug-debugger.h
14030         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14031
14032 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14033
14034         * class.c: more interface implementations needed for the
14035         array enumerator (fixes bug #341112).
14036
14037 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14038
14039         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14040         fix ParamName of ArgumentNullExceptions.
14041
14042 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14043
14044         * reflection.c (mono_reflection_encode_sighelper): Generate the
14045         modopts and modreqs.   I have a useless test that crashes monodis,
14046         but that shows the code working.
14047
14048 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14049
14050         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14051         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14052
14053 2007-11-15  Dick Porter  <dick@ximian.com>
14054
14055         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14056         When joining a thread, it's the thread that's calling Join that
14057         gets WaitSleepJoin state not the target.  Fixes the standalone
14058         test case in bug 334740, and hopefully the whole bug too.
14059
14060 2007-11-15  Dick Porter  <dick@ximian.com>
14061
14062         * process.c: Read file version info from the files pointed at by
14063         process modules, not the current process.  Fixes bug 315969.
14064
14065         Use windows typedef names in some places to fix warnings on the
14066         windows build.
14067
14068 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14069
14070         * image.c, metadata-internals.h: Added a generic_class_cache hash
14071         to MonoImage for looking up generic classes when sharing generics.
14072
14073 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14074
14075         * sgen-gc.c: warning cleanups.
14076
14077 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14078
14079         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14080         inherited properties.
14081
14082 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14083
14084         * object.c, class-internals.h: Added more information to the
14085         runtime generic context.
14086
14087 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14088
14089         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14090         instead of just the target method. Generalize the abstract method handling to
14091         handle any non-static method.
14092
14093         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14094         mono_marshal_get_delegate_invoke () signature change.
14095
14096 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14097
14098         * class.c, class-internals.h: Made
14099         mono_type_get_basic_type_from_generic () public.  Fixed member
14100         access check for shared generics.
14101
14102         * loader.c: Don't insert field into field cache if it's part of a
14103         non-inflated generic class.
14104
14105         * domain.c, domain-internals.h: The generic sharing context is now
14106         part of the jit info data structure.  Added two accessor
14107         functions.
14108
14109 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14110
14111         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14112         the array Get/Set/Address methods, since the JIT inlines them.
14113
14114         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14115
14116         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14117         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14118
14119         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14120         mono_marshal_get_delegate_invoke signature change.
14121
14122         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14123         an additional argument. Add support for invoking abstract methods.
14124
14125         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14126
14127         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14128
14129 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14130
14131         * class.c: Do field layout for open generic classes as well.
14132
14133 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14134
14135         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14136         other objects, because the threadpool is still around.  Put them
14137         in a list instead and after finalizing all other objects in the
14138         root domain shut down the thread pool and then finalize the
14139         threads.  Fixes bug #337383.
14140
14141         * threads.c, thread-types.h: New mono_thread_create_internal()
14142         function for marking a thread with the threadpool flag before it
14143         started.  Set synch_cs to NULL after freeing it.
14144
14145         * threadpool.c: Mark threadpool threads before they start.
14146
14147 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14148
14149         * reflection.h, reflection.c: don't export random functions
14150         and lazy load dbnull and missing objects.
14151
14152 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14153
14154         * class.c: Initialize COM types if COM interfaces
14155         are present (not just COM classes).
14156         
14157         Code is contributed under MIT/X11 license.
14158
14159 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14160         * reflection.c:
14161         create_dynamic_mono_image: hook module profiler events (dynamic case).
14162         mono_image_basic_init: hook assembly profiler events (dynamic case).
14163
14164 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14165         * profiler.c:
14166         simple_appdomain_unload: completely terminate the profiler
14167         instead of only processing the statistical samples.
14168         simple_shutdown: make sure this is really called exactly once,
14169         even in multithreaded applications, and always listen to
14170         appdomain events.
14171         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14172         here, the "[un]load" functions will do it.
14173         Fixes bugs #333791 and #325261.
14174
14175 2007-11-07  Geoff Norton  <gnorton@novell.com>
14176
14177         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14178         rather than depend on __APPLE__.
14179
14180 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14181
14182         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14183
14184 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14185
14186         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14187         UTF16 MonoString. Fix the crash from bug #335488
14188
14189 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14190
14191         * marshal.c: Correct (for non-Win32 OS) length != size in 
14192         mono_string_from_bstr. Fix #339530.
14193
14194 2007-11-06  Geoff Norton  <gnorton@novell.com>
14195
14196         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14197         to succeed
14198
14199 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14200
14201         * process.c: Added run-time GetProcessId API detection for Windows.
14202
14203 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14204
14205         * reflection.c  (mono_param_get_objects): If a parameter has the
14206         attribute [System.Runtime.InteropServices.Optional] we should
14207         set the DefaultValue of the ParameterInfo to be
14208         System.Reflection.Missing instead of DBNull.
14209
14210         See bug #339013.
14211
14212         (mono_get_reflection_missing_object): New method,
14213         returns the System.Reflection.Missing.Value singleton instance.
14214
14215 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14216
14217         * culture-info-table.h : regenerated.
14218
14219 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14220
14221         * icall.c: Use GetEnvironmentStrings on windows
14222         so we are using the same environment block as 
14223         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14224         #333740.
14225         
14226         Code is contributed under MIT/X11 license.
14227
14228 2007-10-31  Martin Baulig  <martin@ximian.com>
14229
14230         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14231
14232         * mono-debug-debugger.h
14233         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14234
14235 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14238         classes.
14239
14240 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14241
14242         * culture-info-table.h : regenerated.
14243
14244 2007-10-30  Robert Jordan  <robertj@gmx.net>
14245
14246         * icall-def.h, icall.c:
14247         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14248
14249         Code is contributed under MIT/X11 license.
14250
14251 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14254         inflated class instead of inflating them again.
14255         
14256         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14257         dynamic case.
14258
14259         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14260         Call setup_supertypes () after klass->parent is set.
14261         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14262
14263         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14264         for inflated instances of not yet created dynamic generic classes.
14265         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14266         times from inflated_method.
14267         (methodbuilder_to_mono_method): Ditto.
14268
14269 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14270
14271         * gc.c: code cleanup and removed old untested option of not creating the
14272         finalizer thread.
14273
14274 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14275
14276         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14277         creating a jump trampoline for dynamic methods.
14278
14279 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14280
14281         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14282         generic TypeBuilders when called from another method of the same type (bug #335131).
14283
14284
14285 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14286
14287         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14288         doesn't seem to work perfectly.
14289         
14290         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14291         called multiple times.
14292         (methodbuilder_to_mono_method): Ditto.
14293         (resolve_object): Inflate FieldBuilder's.
14294
14295 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14296
14297         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14298         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14299         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14300
14301 2007-10-26  Dick Porter  <dick@ximian.com>
14302
14303         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14304         Thread initialisation changes
14305
14306 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14307
14308         * verify.c: fix compatibility check between arrays and System.Array
14309
14310 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14313         too. Fixes #336999.
14314
14315 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14316
14317         * object.c (mono_value_box): Use typed allocation here.
14318
14319 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14320
14321         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14322         trampoline instead of compiling the method right away.
14323
14324         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14325
14326 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14327
14328         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14329         related fields for dynamic classes. Fixes #334493.
14330
14331 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14332
14333         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14334         
14335         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14336
14337         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14338         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14339
14340         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14341
14342         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14343         if needed.
14344         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14345
14346 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14347
14348         * marshal.c: Use correct key when removing item
14349         from ccw_hash.
14350         
14351         Code is contributed under MIT/X11 license.
14352
14353 2007-10-17  William Holmes  <billholmes54@gmail.com>
14354
14355         *marshal.c: Adding a case to marshal booleans to U1
14356
14357         Code is contributed under MIT/X11 license.
14358
14359 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
14360
14361         * class.c (mono_class_from_name): Search the modules compromising dynamic
14362         assemblies. Fixes #331601.
14363
14364 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
14365
14366         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
14367         exception if the type name contains an assembly component. Fixes #334203.
14368
14369         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
14370         modules inside dynamic assemblies. Fixes #334200.
14371         
14372         * reflection.c: Set image->public_key and image->public_key_length;
14373
14374         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
14375         fields.
14376
14377         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
14378         
14379 2007-10-16  Mark Probst  <mark.probst@gmail.com>
14380
14381         * metadata.c: Implemented correct comparing of generic classes.
14382         An inflated generic class can be equal to a non-inflated one if it
14383         is inflated with generic type variables as type arguments.  Fixes
14384         bug #333798.
14385
14386 2007-10-15  Dick Porter  <dick@ximian.com>
14387
14388         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
14389         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
14390         81646.
14391
14392         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
14393         instead of a monitor lock.  This means that monitor_try_enter and
14394         co can set the thread state safely.
14395         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
14396         thread_interrupt_requested, so interrupt actually works.
14397
14398         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
14399         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
14400         state accessor function
14401
14402 2007-10-15  Martin Baulig  <martin@ximian.com>
14403
14404         * mono-debug.h
14405         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
14406         the debugger with the current runtime.
14407
14408 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14409
14410         * object.c, object-internals.h: added the ability to set a single
14411         trampoline for all the slots in a vtable.
14412
14413 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14414
14415         * marshal.c: deal with a possible race condition during multicast
14416         delegate invocation.
14417
14418 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14419
14420         * class.c: ensure value type methods don't have the synchronized
14421         flag set.
14422
14423 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14424
14425         * string-icalls.c, string-icalls.h: reverted unapproved patch that
14426         breaks the build.
14427
14428 2007-10-11  Joel Reed  <joelwreed@comcast.com>
14429
14430         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
14431         to take an options parameter so that empty entries can be removed during
14432         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
14433
14434 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14435
14436         * marshal.c: make sure we don't store the signature from a dynamic
14437         method into the runtime invoke cache (bug #327189).
14438
14439 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14440
14441         * marshal.c: make sure the wrapper methods are properly initialized.
14442
14443 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14444
14445         * metadata.c, metadata-internals.h: Generalized
14446         mono_type_stack_size() to mono_type_stack_size_internal() which
14447         takes an additional argument specifying whether it allows open
14448         types.
14449
14450 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
14451
14452         * verify.c (do_invoke_method): handle typedbyref params
14453         correctly and check for unverifiable return values.
14454
14455         * verify.c (do_newobj): fix a warning.
14456
14457 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14458
14459         * verify.c: don't tread typedbyref as allways unverifable,
14460         so uses, like (ld/st)loc.0 are valid. verify for the cases
14461         that it matters, like boxing related operations.
14462
14463 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
14464
14465         * verify.c: add verification of the newobj opcode. verification
14466         of delegate instantation still missing due ldftn and virldftn not
14467         pushing the function type on stack
14468
14469 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14470
14471         * class-internals.h: Runtime generic context data structure
14472         definition.
14473
14474         * object.c: Initialization of runtime generic context at runtime
14475         vtable creation time.
14476
14477 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
14478         * class.c (mono_class_create_from_typedef,
14479         mono_class_from_generic_parameter, mono_ptr_class_get,
14480         mono_fnptr_class_get, mono_bounded_array_class_get)
14481         * domain.c (mono_domain_create, mono_domain_free)
14482         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
14483         * image.c (do_mono_image_load, mono_image_close):
14484         Hooked up load-unload profiler events.
14485
14486 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14487
14488         * domain.c: track statistics about the actual amount of native code
14489         allocated.
14490
14491 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14492
14493         * class.c: the valuetype enumerators don't have the additional
14494         supertypes interfaces.
14495
14496 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14497
14498         * class.c: need more interfaces setup for the IEnumerator<T>
14499         object created for arrays (tests/ienumerator-interfaces.2.cs).
14500
14501 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
14502
14503         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
14504
14505 2007-10-05  Alp Toker  <alp@atoker.com>
14506
14507         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
14508         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
14509         #315863.
14510
14511 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14512
14513         * verify.c (verify_type_compatibility_full): verification of
14514         compatibility improved, validates correctly non-strict checks between
14515         native int and I4 types different than (unsigned)int32.
14516
14517         * verify.c (do_store_indirect): added, do all verification of
14518         ldind.X opcodes. 
14519
14520         * verify.c (get_load_indirect_mono_type): renamed to
14521         get_indirect_op_mono_type, as it now returns the MonoType for 
14522         ldind.X and stind.X opcodes.
14523
14524 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
14525
14526         * reflection.c: Fix the encoding of generic type definition for
14527         TypeBuilders.
14528
14529         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
14530         mono_image_typedef_or_ref but allows to specify if typespec lookups should
14531         be made. Typespec check is done prior to typeref cache lookup.
14532
14533         * reflection.c (mono_image_typedef_or_ref): now just delegate to
14534         mono_image_typedef_or_ref_full.
14535
14536         * reflection.c (encode_generic_class): encode the generic class
14537         directly instead of calling encode_type.
14538
14539         * reflection.c (encode_type): encode the generic type definition
14540         MonoClass as a generic instantiation.
14541
14542         * reflection.c (create_typespec): cache typespec tokens in
14543         the assembly->typespec cache. Don't create typespec for a generic
14544         instance MonoClass. Create typespec for the generic type defintion.
14545
14546         * reflection.c (create_generic_typespec): encode the generic
14547         class directly instead of calling encode_type.
14548
14549         * reflection.c (mono_image_create_token): encode the generic
14550         type definition not using a typespec for MonoType instances.
14551
14552
14553 2007-10-04  Raja R Harinath  <rharinath@novell.com>
14554
14555         Fix #328812
14556         * class.c (mono_image_init_name_cache): Don't return nested
14557         'protected internal' classes.
14558         (mono_class_from_name_case): Likewise.
14559
14560 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
14561
14562         * icall-def.h, icall.c : get_bundled_machine_config() is now the
14563           common function used by both DefaultConfig in System.dll and
14564           InternalConfigurationHost in System.Configuration.dll.
14565
14566 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14567
14568         * class.c: automatically add to vectors only a few essential explicit
14569         generic interfaces. The rest of the interfaces that arrays should
14570         provide are currently implicitly added (but still not lazily, see the
14571         design in the discussion of bug#325495 for the details of what is
14572         needed for that). Additionally, implicit interfaces are assigned the
14573         same vtable slot as the explicit interfaces (as they are compatible):
14574         this enables huge memory savings since we don't need to instantiate
14575         as many memthods and as large vtables anymore. Also, Since
14576         GetEnumerator<T> returns an instance of a type that is required to
14577         support a similarly large set of interfaces as arrays, we add
14578         implicit interfaces and interface offset sharing support to those
14579         types, too. This change adds all the required interfaces so that
14580         the anonarray.cs test case in the bug report works (we don't add
14581         all the interfaces to arrays of arrays 3-level deep and more because
14582         of the memory requirements explained in the bug and since they are much
14583         less common: the lazy-loading support will enabled them to work, too).
14584
14585 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14586
14587         * verify.c (merge_stacks): major clean up, all type compatibility
14588         checks are done by verify_type_compatibility. This fix my earlier lack
14589         of understanding of the CLR type system and merge_stacks no longer looks
14590         scary.
14591
14592         * verify.c: fixed some bad spelling.
14593
14594 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
14595
14596         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
14597         a given stack slock.
14598         
14599         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
14600         verify_type_compatibility_full. This removed a near indentical function and fixed
14601         handling of Int32 and IntPtr across all opcodes.
14602
14603 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14604
14605         * class.c: only vectors have the additional generic interfaces.
14606
14607 2007-10-01  Jonathan Chambers <joncham@gmail.com>
14608
14609         * mono-config.c: Use g_strcasecmp instead of
14610         strcasecmp like everywhere else to fix
14611         compilation with MSVC.
14612         
14613         Code is contributed under MIT/X11 license.
14614
14615 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14616
14617         * object.c, object-internals.h: refactored the IMT code to enable
14618         building a single slot at a time and lazily creating the IMT trampolines
14619         and thunks.
14620
14621 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
14622
14623         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
14624
14625         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
14626         Fixes #328501.
14627         
14628 2007-09-29  Raja R Harinath  <harinath@gmail.com>
14629
14630         * loader.c (method_from_methodspec): Rearrange to avoid
14631         un-necessary exposition.  Don't assert out if the method's
14632         declaring type is a generic type definition.
14633
14634 2007-09-28  Martin Baulig  <martin@ximian.com>
14635
14636         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
14637
14638 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14639
14640         * class-internals.h: optimize field layout of MonoClass to
14641         requires less cachelines at runtime and save a few bytes on 64 bit
14642         systems.
14643
14644 2007-09-28  Jb Evain  <jbevain@novell.com>
14645
14646         * reflection.c: when encoding type names in custom attributes,
14647         if the type is a closed generic type, its generic arguments
14648         have to be serialized as AssemblyQualifiedName, so that when
14649         they are deserialized, it's possible to re-create them properly.
14650         Fixes #329450.
14651
14652
14653 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14654
14655         * object.c, class-internals.h: added delegate-creation counter.
14656
14657 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14658
14659         * class.c: cleanup of the code that synthetizes interfaces for
14660         arrays in 2.0: saves quit a bit of corlib mempool memory.
14661         Code to fix bug #325495 ifdeffed out for now until the issues
14662         with memory usage and O(n^2) behaviour are fixed.
14663
14664 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14665
14666         * marshal.c: when possible, do not duplicate the name of the methods
14667         in the method builder and in the generated MonoMethod.
14668
14669 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
14670         * verify.c: added support for type checking ldind_* opcodes.
14671
14672 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
14673
14674         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
14675         which is used to distinguish the fully open instantiation of a TypeBuilder
14676         with the rest. This temporary hack is required to restore the property that
14677         the fully open instantiation is the same type of the generic type definition.
14678
14679         * class-internals.h (mono_generic_class_is_generic_type_definition):
14680         new function as part of the internal API.
14681
14682         * class.c (inflate_generic_type): return NULL when the generic inst is
14683         fully open. The fully open generic type is now the same as the generic type
14684         definition for non TypeBuilder types.
14685
14686         * class.c (mono_generic_class_get_class): removed assert since it is
14687         no longer valid, gklass->cached_class can point to the generic type definition.
14688
14689         * class.c (mono_generic_class_is_generic_type_definition): new.
14690
14691         * metadata.c (mono_generic_class_hash): added is_tb_open field
14692         to the hash calculation.
14693
14694         * metadata.c (free_generic_class): if the generic class is associated
14695         with the generic type definition, its field will come from the mempool and
14696         must not be freed.
14697
14698         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
14699         new, this function identifies the corner case of a TypeBuilder fully open
14700         instantiation.
14701
14702         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
14703         for lookup. Set gclass->cached_class to be the container class in case of
14704         the fully open instantiation of non TypeBuilder types.
14705
14706         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
14707         to compare generic classes.
14708
14709         * reflection.c (method_encode_methodspec): remove assert that
14710         no longer is valid.
14711
14712         * reflection.c (mono_reflection_generic_class_initialize): add
14713         an aditional assert to ensure the proper type is used.
14714
14715 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
14716
14717         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
14718         to enjoy it.
14719
14720 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
14721
14722         * verify.c (push_arg): Fixed support for ldarga
14723         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
14724         MonoType used as first arg in case of instance calls.
14725
14726 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
14727
14728         * verify.c: Support for verifying VAR and MVAR types, 
14729
14730 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
14731
14732         * icall.c (ves_icall_get_property_info): Set the reflected type of the
14733         accessors correctly.
14734
14735 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14736
14737         * threads.c: support OSX and other systems in
14738         mono_thread_get_stack_bounds (bug #328026).
14739
14740 2007-09-25  Martin Baulig  <martin@ximian.com>
14741
14742         * mono-debug.h
14743         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
14744
14745 2007-09-24  Martin Baulig  <martin@ximian.com>
14746
14747         * mono-debug.h
14748         (MonoDebugClassEntry): Moved the definition of this struct into
14749         mono-debug.c to make it private.
14750
14751         * mono-debug.c
14752         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
14753         type table per symbol file, we don't need to store the symfile id
14754         any longer.
14755
14756 2007-09-24  Martin Baulig  <martin@ximian.com>
14757
14758         Create one type table per symbol file, since a `MonoClass *' gets
14759         invalid when its image is unloaded.
14760
14761         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
14762         (MonoDebugHandle): Added `type_table'.
14763
14764 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14765
14766         * mempool.c, mempool.h: added mono_mempool_new_size () API
14767         to be able to specify a smaller initial size for the pool.
14768         Adjusted the code to slowly increase pool size before using
14769         the previous default size.
14770         * image.c: use a small initial size for image mempools.
14771
14772 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
14773
14774         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
14775         Fixes ##320990.
14776
14777         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
14778         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
14779
14780 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
14781
14782         * metadata.c (mono_type_create_from_typespec): Remove an invalid
14783         free. Fixes #327438.
14784
14785 2007-09-21  Raja R Harinath  <harinath@gmail.com>
14786
14787         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
14788         generic instantiations, etc.
14789         <MONO_TYPE_ARRAY>: Likewise.
14790
14791 2007-09-21  Martin Baulig  <martin@ximian.com>
14792
14793         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
14794         these structs were never defined.
14795         (MonoDebugHandle): Removed the `_priv' field, it was never used.
14796
14797 2007-09-21  Martin Baulig  <martin@ximian.com>
14798
14799         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
14800
14801 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
14802
14803         * image.c: removed the guid hash tables: we can get the same info
14804         without the additional memory usage hit (partially fixes also bug #327052).
14805
14806 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
14807
14808         * profiler.h, profiler-private.h, profiler.c: add a new profiler
14809         event to handle unloading methods. After the event is called, the
14810         corresponding MonoMethod* must be considered invalid.
14811         * loader.c (mono_free_method): call the new mono_profiler_method_free
14812         event.
14813
14814 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14815
14816         * domain-internals.h: New flag in MonoJitInfo which marks shared
14817         generic methods.  New hash table (shared_generics_hash) in
14818         MonoDomain to keep track of shared generic methods.  Prototypes
14819         for functions to register and lookup shared generic methods.
14820
14821         * domain.c: Support for registering and looking up shared generic
14822         methods via a hash table (shared_generics_hash) in MonoDomain.
14823
14824         * class-internals.h: New exception to signal failure of shared
14825         compilation of a generic method.  New counters for generics
14826         sharing in MonoStats.
14827
14828 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14829
14830         * image.c, metadata-internals.h: don't keep a file descriptor open
14831         for loaded assemblies (bug#325988).
14832
14833 2007-09-19  Raja R Harinath  <rharinath@novell.com>
14834
14835         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
14836         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
14837         use the corresponding datatypes.
14838         (type_in_image): Update to changes.
14839         (CleanForImageUserData): Simplify.
14840         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
14841         Avoid quadratic behaviour in handling the "stolen" list by
14842         separating the filter predicate out, and by prepending the stolen
14843         items rather than appending them.
14844         (steal_ginst_in_image): Likewise.
14845         (mono_metadata_clean_for_image): Update to changes.
14846
14847 2007-09-19  Martin Baulig  <martin@ximian.com>
14848
14849         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
14850
14851 2007-09-19  Martin Baulig  <martin@ximian.com>
14852
14853         * mono-debug.c (mono_debug_cleanup): Don't call
14854         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
14855
14856 2007-09-19  Raja R Harinath  <harinath@gmail.com>
14857
14858         Fix crash on 'make run-test' in mcs/errors
14859         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
14860         Avoid more potential allocations in mono_class_from_mono_type.
14861         (ginst_in_image): Update to changes.
14862         (gclass_in_image): Rearrange slightly.
14863
14864 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14865
14866         * class.c (mono_class_init): Move the code that sets up class->methods to 
14867         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
14868
14869         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
14870         canonical instance of an inflated generic signature.
14871         (mono_type_create_from_typespec): Remove an invalid free.
14872
14873         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
14874
14875 2007-09-18  Marek Habersack  <mhabersack@novell.com>
14876
14877         * domain-internals.h: added a declaration of the
14878         mono_assembly_load_full_nosearch internal function.
14879
14880         * assembly.c (mono_assembly_load_with_partial_name): use
14881         mono_try_assembly_resolve return value properly.
14882         (mono_assembly_load_full_nosearch): copied the function body from
14883         mono_assembly_load_full, without the code to invoke assembly
14884         search hooks.
14885         (mono_assembly_load_full): calls the above new function and if the
14886         assembly is not resolved, invokes the search hooks.
14887
14888         * appdomain.c (mono_runtime_init): restore the global postload
14889         assembly search handlers.
14890
14891 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14892
14893         * class.c (mono_class_init): Make sure class->methods and class->properties
14894         are never NULL in the generics case.
14895
14896         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
14897
14898 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14899
14900         * metadata.c (free_generic_class): Disable some code to fix the build.
14901
14902         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
14903
14904         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
14905         from the image mempool.
14906
14907         * metadata.c (free_generic_class): Free more data from the inflated class.
14908
14909         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
14910
14911         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
14912         mempool.
14913         (mono_type_create_from_typespec): Ditto.
14914
14915         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
14916         MonoImage to the caller.
14917         (mono_init_internal): Save the opened image in a global variable.
14918         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
14919
14920         * reflection.c (resolve_object): Fix a leak.
14921
14922         * metadata.c: Fix the freeing of data in the generics caches.
14923         
14924         * metadata.c (free_generic_inst): Comment this out to fix the build.
14925         (free_generic_class): Ditto.
14926
14927         * metadata.c: Free cached generic methods, instantinations and classes when
14928         they are removed from the caches.
14929         (mono_metadata_free_type): Free the type itself.
14930
14931         * class.c: Free the result of mono_class_inflate_generic_type () in a few
14932         places.
14933
14934 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
14935
14936         * boehm-gc.c: restrict managed allocs to __thread supporting
14937         architectures.
14938
14939 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
14942         (mono_generic_class_get_class): Fix a leak.
14943
14944         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
14945         mono_metadata_free_type ().
14946         (mono_metadata_inflate_generic_inst): Fix a leak.
14947
14948 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14949
14950         * mono-debug.c (free_header_data): Fix a leak missed earlier.
14951
14952         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
14953         mempool.
14954
14955         * mono-debug.c (mono_debug_close_image): Fix call to 
14956         g_hash_table_remove ().
14957
14958 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
14959
14960         * icall-def.h: redirect all the string ctor to the managed
14961         CreateString () methods.
14962         * string-icalls.c, string-icalls.h: removed dead code for string
14963         ctors and icalls.
14964
14965 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14966
14967         * mono-debug.c: Fix memory leaks.
14968
14969 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14970
14971         * threads-types.h: Implement mono_hazard_pointer_set and 
14972         mono_hazard_pointer_clear macros using do/while(0) to fix
14973         compilation with MSVC.
14974         
14975         Code is contributed under MIT/X11 license.
14976
14977 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14978
14979         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
14980         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
14981
14982 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14983
14984         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
14985         icalls.
14986
14987 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
14988
14989         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
14990         managed-code allocated as well.
14991
14992 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14993
14994         * class.c (mono_class_is_assignable_from): Add support for generic variance.
14995
14996 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
14997
14998         * boehm-gc.c: fixed the build after the AOT changes.
14999
15000 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15001
15002         * wrapper-types.h: Add an ALLOC wrapper type.
15003
15004         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15005         reference managed allocator methods.
15006
15007 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15008
15009         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15010         of Type array and not MonoType, a fix suggested by Hari.
15011         
15012 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15013
15014         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15015         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15016         
15017         Code is contributed under MIT/X11 license.
15018
15019 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15020
15021         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15022
15023 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15024
15025         * image.c (do_mono_image_open): if assembly file fails to open and
15026         MONO_IOMAP is in effect, try to find the path in a
15027         case-insensitive way.
15028
15029         * appdomain.c (mono_runtime_init): do not install postload hooks -
15030         tests show that MS.NET doesn't use anything of that sort to
15031         trigger the AppDomain.AssemblyResolve event.
15032         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15033         made non-static.
15034         (mono_runtime_init): init portability helpers here.
15035
15036         * assembly.c (mono_assembly_load_with_partial_name): if other   
15037         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15038         to resolve the assembly.
15039
15040         * domain-internals.h: added mono_try_assembly_resolve and marked
15041         it as internal.
15042
15043 2007-09-11  Jb Evain  <jbevain@novell.com>
15044
15045         * object-internals.h (MonoReflectionDynamicMethod): add
15046         a `MonoReflectionType *owner` field. The owner is used
15047         * reflection.c:
15048         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15049         method as the class declaring the dynamic method.
15050         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15051         dynamic method to the declaring type of the methodbuilder.
15052
15053 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15054
15055         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15056         rules for calling methods via reflection.
15057
15058 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15059
15060         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15061         Inflate MonoType's.
15062
15063 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15064
15065         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15066         provide a managed method that does fast allocations without needing
15067         a managed->unmanaged transition. Boehm GC implementation currently
15068         enabled for ptrfree objects on sane architectures.
15069
15070 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15071
15072         * marshal.c, marshal.h: exported a couple of useful functions and
15073         added mono_mb_get_label () to easily handle backward branches.
15074
15075 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15076
15077         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15078
15079 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15080
15081         * loader.c (find_method): Fixed the regression introduced while
15082         fixing bug #81466.
15083
15084 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15085
15086         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15087         well.
15088         
15089         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15090         icall.c reflection.c: Pass a MonoGenericContext argument to 
15091         mono_lookup_dynamic_token ().
15092
15093         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15094         #82744.
15095         
15096 2007-09-09  Robert Jordan  <robertj@gmx.net>
15097
15098         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15099         for generic methods.
15100
15101         * object.c (mono_object_get_virtual_method): Handle generic methods.
15102         Fixes bug #78882.
15103
15104         Code is contributed under MIT/X11 license.
15105
15106 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15107
15108         * image.c: fix locking in mono_image_load_file_for_image ().
15109
15110 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15111
15112         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15113         used only as a cache: added an icall to fill it.
15114
15115 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15116
15117         * reflection.h: exposed mono_reflection_free_type_info
15118         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15119         since mono_reflection_bind_generic_parameters makes a copy of it.
15120         * reflection.c (free_type_info): subinfos should be freed.
15121         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15122         made non static.
15123         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15124         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15125         this fixes #82695 and #81726.
15126    
15127
15128 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15129
15130         * process.h, process.c:  added support for user profile/info in
15131           ProcessStartInfo. For now only Windows works.
15132
15133 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15134
15135         * metadata.c: consider the generic arguments when comparing
15136         signatures (bug #82614).
15137
15138 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15139
15140         * cil-coff.h, image.c: updated assembly loader to cope with the
15141         PE32+ 64 bit file format.
15142
15143 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15144
15145         * assembly.c, class.c, domain.c, loader.c: remove useless
15146         inclusion of cil-coff.h.
15147
15148 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15149
15150         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15151         if interface is marked with CoClassAttribute. 
15152    
15153         Code is contributed under MIT/X11 license.
15154
15155 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15156
15157         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15158         if it's seen twice in major collections.
15159
15160 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15161
15162         * sgen-gc.c: big objects are not copied to the gray area, but they
15163         need to be considered for scanning, too, if they are brought alive
15164         by an object ready for finalizations or a survived one.
15165
15166 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15167
15168         * sgen-gc.c: properly account the number of disappearing links when
15169         they are nullified.
15170
15171 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15172
15173         * sgen-gc.c: share the code to scan the registered roots between the
15174         different types of collections.
15175
15176 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15177
15178         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15179
15180 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15181
15182         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15183         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15184
15185 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15186
15187         * security-manager.c (mono_security_manager_get_methods):
15188         LinkDemandSecurityException now has 2 arguments instead of 3.
15189
15190 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15191
15192         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15193         platforms which need it.
15194
15195 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15196
15197         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15198         dtor.
15199
15200 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15201
15202         * threads.c: free the thread static data on thread exit.
15203
15204 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15205
15206         * class.c: walk the hierarchy to find the generic definition for
15207         a class (fixes runtime part of bug #82498).
15208
15209 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15210
15211         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15212         ...
15213
15214         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15215
15216 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15217
15218         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15219
15220 2007-08-24  Robert Jordan  <robertj@gmx.net>
15221
15222         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15223
15224 2007-08-24  Jb Evain  <jbevain@novell.com>
15225
15226         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15227         for byref types.
15228
15229 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15230
15231         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15232         #82286.
15233
15234 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15235
15236         * assembly.c: Fix a warning.
15237         
15238 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15239
15240         * appdomain.c: parse the <runtime> section looking for the probing
15241         element with the 'privatePath' attribute, which sets additional
15242         directories in which the runtime should look for assemblies.
15243
15244 2007-08-23  Robert Jordan  <robertj@gmx.net>
15245
15246         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15247         Fixes #82499.
15248
15249 2007-08-23  Martin Baulig  <martin@ximian.com>
15250
15251         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15252         _mono_debug_init_corlib() and remove it from the header file.
15253
15254 2007-08-23  Martin Baulig  <martin@ximian.com>
15255
15256         * mono-debug-debugger.c
15257         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15258         don't notify the debugger about it.
15259
15260         * mono-debug-debugger.h
15261         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15262
15263 2007-08-23  Robert Jordan  <robertj@gmx.net>
15264
15265         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15266         Code is contributed under MIT/X11 license.
15267
15268 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15269
15270         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15271
15272 2007-08-22  Martin Baulig  <martin@ximian.com>
15273
15274         * mono-debug.c: Store debugging info on a per-domain basis and
15275         free it on domain unload.  Add support for unloading symbol files.
15276
15277         * mono-debug.h
15278         (MonoDebugList): New typedef.
15279         (MonoSymbolTable):
15280         - add `data_tables and `type_table'.
15281         - replace 'symbol_files' and `num_symbol_files' with a
15282           `MonoDebugList *'.
15283         (mono_debug_data_table): Removed.
15284         (mono_debug_list_add): New public function.
15285         (mono_debug_list_remove): New public function.
15286         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15287         (mono_debug_init_2_memory): Renamed into
15288         mono_debug_open_image_from_memory().
15289         (mono_debug_close_image): New public function.
15290         (mono_debug_domain_create): Likewise.
15291         (mono_debug_domain_unload): Likewise.
15292         (MONO_DEBUGGER_VERSION): Bump to 60.
15293
15294         * mono-debug-debugger.h
15295         (MonoDebuggerEvent):
15296         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15297         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15298         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15299         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15300           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15301         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15302           meaning.
15303         (mono_debugger_add_symbol_file): Removed.
15304         (mono_debugger_add_type): Removed.
15305         (mono_debugger_lookup_type): Removed.
15306         (mono_debugger_lookup_assembly): Removed.
15307
15308         * domain.c
15309         (mono_domain_create): Call mono_debug_domain_create().
15310         (mono_init_internal): Call mono_debug_init_corlib().
15311
15312         * assembly.c
15313         (mono_assembly_close): Call mono_debug_close_image().
15314
15315 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15316
15317         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15318         mmap call.
15319
15320 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15321
15322         * sgen-gc.c: ensure section->pin_queue_end is initialized
15323         correctly when non pinning objects in the section have been found.
15324
15325 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15326
15327         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15328         containing a list of directories separated by ':'. MSDN docs say
15329         the directories should be separated with ';'. Part of a bugfix for
15330         bug #81446
15331
15332 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15333
15334         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15335         it should MonoType and not MonoClass.
15336
15337 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15338
15339         * culture-info-table.h : regenerated.
15340
15341 2007-08-20  William Holmes  <billholmes54@gmail.com>
15342
15343         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15344          to call ReplaceFile Kernel32 on windows or in io-layer.
15345         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15346         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15347          as an internal call.
15348
15349         Code is contributed under MIT/X11 license.
15350
15351 2007-08-20  Jb Evain  <jbevain@novell.com>
15352
15353         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15354         and MONO_EXCEPTION_FIELD_ACCESS.
15355
15356         * debug-helpers.[c|h]: new mono_field_full_name function.
15357
15358 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15359
15360         * class.c: Removed class_security_level() and moved it to
15361         security-core-clr.c.
15362
15363         * security-core-clr.c, security-core-clr.h: class_security_level()
15364         is now public and renamed to mono_security_core_clr_class_level().
15365         It also looks for security attributes in the classes a class is
15366         nested in.
15367
15368 2007-08-20  Mark Probst  <mark.probst@gmail.com>
15369
15370         * security-core-clr.c, security-core-clr.h: CoreCLR security
15371         utility functions.
15372
15373         * Makefile.am: Added security-core-clr.[ch].
15374
15375         * security-manager.c, security-manager.h: Functions and enum for
15376         setting and getting the security mode.
15377
15378         * class.c: CoreCLR security checks.
15379
15380 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15381
15382         * icall-def.h, process.c, process.h: implemented icall to get
15383         user/system processor times.
15384
15385 2007-08-17  Mark Probst  <mark.probst@gmail.com>
15386
15387         * domain.c, threads.c, class-internals.h, domain-internals.h: New
15388         reader-lock-free jit_info_table.
15389
15390 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
15393
15394         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
15395
15396         * object-internals.h (MonoException): Add missing _data member.
15397
15398 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15399
15400         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
15401         checking that only methods with matching qname or fqname are picked
15402         from implemented interfaces.
15403
15404 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15405
15406         * verify.c (do_newarr):added, do type verification of
15407         newarr ops, push the right value on the eval stack.
15408         * verify.c (mono_method_verify): use do_newarr
15409
15410
15411 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15412
15413         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
15414         factored the common code into get_boxable_mono_type, which
15415         is now using mono_type_get_full, this fixed byref related tests.
15416
15417 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
15418
15419         * class.c: added mono_type_get_full, this function has the same
15420         behavior of mono_class_get_full but the returned MonoType has
15421         all metadata of the associated token in case of a typespec token.
15422         * class.c: added mono_type_retrieve_from_typespec, used by 
15423         mono_type_get_full to retrieve the token type.
15424         * class.c (mono_class_create_from_typespec): changed to use
15425         mono_type_retrieve_from_typespec.
15426         * class.c (mono_ldtoken): changed to use mono_type_get_full
15427         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
15428         * class-internals.h: exported mono_type_get_full for internal use.
15429
15430 2007-08-16  Jb Evain  <jbevain@novell.com>
15431
15432         * domain.c (supported_runtimes): add entry for
15433         the 'moonlight' runtime version.
15434
15435 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15436
15437         * verify.c (mono_method_verify): small typo sliped in.  
15438
15439 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15440
15441         * verify.c (do_unbox_value): added, do type verification of
15442         unboxing ops
15443         * verify.c (mono_method_verify): use do_unbox_value
15444
15445
15446 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15447
15448         * verify.c (dump_stack_value): fixed typo, was printing string
15449         instead of object on stack.
15450         * verify.c (do_box_value): moved the byref check up as it leads
15451         to invalid code and should be done earlier.
15452         * verify.c: improved error messages for and ldobj
15453
15454 2007-08-15  William Holmes  <billholmes54@gmail.com>
15455
15456         * marshal.c (emit_marshal_custom): Omit the call to 
15457           marshal_native_to_managed when calling native to managed 
15458           and the argument is specified as an out argument.
15459
15460         Code is contributed under MIT/X11 license.
15461
15462 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
15463
15464         * verify.c: fixed the type checks for generics, function pointers and vectors.
15465         Added type verification for ldobj and ldtoken. The verifier
15466         would segfault if header or signature of a method contained references
15467         to non-existant types.
15468
15469 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15470
15471         * marshal.c (cominterop_get_ccw): Patch from
15472         Bill Holmes to no walk up interface hierarchy. 
15473         All parent methods should be present in the interface for COM.
15474    
15475         Code is contributed under MIT/X11 license.
15476
15477 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
15478
15479         * marshal.c (emit_marshal_com_interface): Patch from
15480         Bill Holmes to handle COM Interfaces as return values
15481         for native->managed calls.
15482    
15483         Code is contributed under MIT/X11 license.
15484
15485 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
15486
15487         * marshal.c (cominterop_get_idispatch_for_object): Implement
15488         for runtime callable wrappers.
15489    
15490         Code is contributed under MIT/X11 license.
15491
15492 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
15493
15494         * pedump.c (main): changed from mono_init to mono_init_from_assembly
15495         so 2.0 types are accessible
15496
15497
15498 2007-08-13  Miguel de Icaza  <miguel@novell.com>
15499
15500         * domain.c (mono_init_internal): Call mono_assembly_load_friends
15501         once we load mscorlib.   Due to the order in which we initialize,
15502         the mono_assembly_load_full routine that loads mscorlib did not
15503         load friends.   We now load it once we load the
15504         mono_defaults.internals_visible_class class. 
15505
15506         * assembly.c: Expose the mono_load_friend_assemblies method.
15507
15508 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
15509
15510         * verify.c: improved the handling of boxing, better
15511         type checking for unary ops and conversion. Fix bug
15512         regarding managed pointer compatibility checking
15513
15514 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
15515
15516         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
15517
15518         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
15519
15520 2007-08-09  Raja R Harinath  <rharinath@novell.com>
15521
15522         * reflection.c (dup_type): Remove.
15523         * class.c (dup_type): Remove.
15524         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
15525         instead of the dodgy 'dup_type'.
15526         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
15527         handle the case where 'dup_type' needed the second argument.
15528
15529 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15530
15531         * domain.c: Fix a warning.
15532
15533 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
15534
15535         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
15536         checking that methods with the same fqname are not overridden
15537         with a method from an ancestor.
15538
15539 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
15540
15541         * threads.c (free_thread_static_data_helper): Avoid a crash if
15542         thread->static_data is not yet set.
15543
15544 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
15545
15546         * marshal.c: Use correct image when emitting
15547         native wrapper for COM calls.
15548    
15549         Code is contributed under MIT/X11 license.
15550
15551 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
15552
15553         * icall-def.h, security.c, security.h :
15554           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
15555
15556 2007-08-07  Martin Baulig  <martin@ximian.com>
15557
15558         * mono-debug-debugger.h
15559         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
15560
15561         * domain.c (mono_domain_free): Call
15562         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
15563
15564 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
15565
15566         * verify.c (check_underflow, check_overflow): error message now returns IL offset
15567         * verify.c (in_same_block): code should test if either offset is inside the clauses
15568         * verify.c (mono_method_verify): push the exception into the eval stack of exception
15569         and filter blocks
15570
15571 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15572
15573         * image.c (mono_image_close): Fix a leak.
15574
15575         * object.c (mono_runtime_invoke_array): Avoid using alloca.
15576
15577         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
15578
15579 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15580
15581         * domain.c, threads.c, threads-types.h: fix memory retention issue
15582         with thread static variables not being cleared on domain unload.
15583         Reuse thread static slots after domain unload.
15584
15585 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
15586
15587         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
15588         nullable type.
15589
15590         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
15591         now done in mono_runtime_invoke_array.
15592
15593         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
15594         receiver is a nullable type.
15595
15596         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
15597         generic parameter.
15598
15599 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
15600
15601         * marshal.c: Implement COM Objects as return type for 
15602         managed->unmanaged calls. Added Release calls for COM Object
15603         out/return values in managed->unmanaged calls.
15604
15605         Code is contributed under MIT/X11 license.
15606
15607 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
15608
15609         * threads.h, threads-type.h: move the hazard pointer declarations
15610         to the private header.
15611
15612 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15613
15614         * file-io.c, appdomain.c: memory leak fixes.
15615
15616 2007-08-02  Dick Porter  <dick@ximian.com>
15617
15618         * socket-io.c
15619         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
15620         SO_REUSEADDR setting into io-layer/sockets.c.
15621
15622 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15623
15624         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
15625         from Object when called on a generic parameter. Fixes #82211.
15626
15627 2007-08-01  Dick Porter  <dick@ximian.com>
15628
15629         * file-io.c (convert_share): Test FileShare values bit-by-bit.
15630         Fixes bug 79250 yet again.
15631
15632 2007-07-30  Martin Baulig  <martin@ximian.com>
15633
15634         Merged the `debugger-dublin' branch.
15635
15636         * mono-debug.h
15637         (MonoDebugDataTable): New typedef.
15638         (MonoDebugMethodAddressList): New typedef.
15639         (MonoDebugWrapperData): Removed.
15640         (MonoDebugSymbolTable): Removed `current_data_table',
15641         `current_data_table_size', `current_data_table_offset'.
15642         (MonoDebugDataItemType): Moved into mono-debug.c.
15643         (MonoDebugMethodJitInfo): Remove `address'.
15644         (mono_debug_data_table): New global variable.
15645         (mono_debug_lookup_method_addresses): New public function.
15646         (mono_debug_find_method): Take a `MonoMethod *', not a
15647         `MonoDebugMethodInfo *'.
15648
15649         * mono-debug.c: Drop support for the old symbol tables.
15650
15651 2007-06-28  Martin Baulig  <martin@ximian.com>
15652
15653         * mono-debug.c (mono_debug_debugger_version): New public variable.
15654
15655 2007-07-31  William Holmes  <billholmes54@gmail.com>
15656
15657         * metadata.c Changed mono_type_create_from_typespec to not insert
15658           the type into the hash map until after
15659           do_mono_metadata_parse_type has completed.
15660         Fixes Bug #82194
15661         Code is contributed under MIT/X11 license.
15662
15663 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
15666         generic parameter. Fixes #82211.
15667
15668 2007-07-27  Jb Evain  <jbevain@novell.com>
15669
15670         * pedump.c (dump_metadata, dump_metadata_header): dump
15671         versions contained in the metadata header.
15672
15673 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15674
15675         * threads.c: register small_id_table with the GC.
15676
15677 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15678
15679         * threads.c, threads.h, class-internals.h, object-internals.h:
15680         Hazard pointers, to be used by lock-free parallel algorithms.
15681
15682 2007-07-26  Dick Porter  <dick@ximian.com>
15683
15684         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
15685         routine on non-windows platforms, as I've not managed to think of
15686         a non-kludgy way of doing this.  Finishes off bug 78739.
15687
15688 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
15689
15690         * object.c: properly setup interface_bitmap in proxy vtables.
15691
15692 2007-07-25  Marek Habersack  <mhabersack@novell.com>
15693
15694         * appdomain.c (get_shadow_assembly_location): do not use TickCount
15695         to create unique shadow copy target directories, use the domain's
15696         serial number instead. Each domain gets a unique target directory
15697         that way.
15698
15699         * domain.c (mono_domain_create): added code to increment domain
15700         shadow copy serial number and cache the value in the current
15701         domain structure.
15702
15703         * domain-internals.h (struct _MonoDomain): added a new field -
15704         shadow_serial to hold the serial number used in generation of
15705         shadow-copy directories. This is to make sure that the directory
15706         name is unique for each and every domain created. We avoid a race
15707         condition with overriding assemblies already in use by other app
15708         domains.
15709
15710 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
15711
15712         * class.c (mono_bounded_array_class_get): fixed memory leak when 
15713         binding generic parameters.
15714
15715 2007-07-24  Raja R Harinath  <rharinath@novell.com>
15716
15717         * metadata.c (do_mono_metadata_parse_generic_class): Use
15718         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
15719         error.
15720
15721 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15722
15723         * loader.c, class-internals.h, reflection.c: removed the per-method
15724         generics hashtable: we use the global one through the call of
15725         mono_class_inflate_generic_method ().
15726
15727 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
15728
15729         * class.c, metadata.c, class-internals.h: introduce yet another
15730         generics global cache for inflated methods (fixes 98% of the perf
15731         issue in bug #81806).
15732
15733 2007-07-23  Raja R Harinath  <rharinath@novell.com>
15734
15735         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
15736         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
15737         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
15738         return a MonoGenericInst containing (a copy) of those types.
15739         (mono_metadata_inflate_generic_inst): Update to changes.
15740         (mono_metadata_parse_generic_inst): Likewise.
15741         (mono_get_shared_generic_inst): Likewise.
15742         * reflection.c (mono_class_bind_generic_parameters): Likewise.
15743         (mono_reflection_bind_generic_method_parameters): Likewise.
15744         * metadata-internals.h: Likewise.
15745         * icall.c (free_generic_context): Kill.
15746         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
15747
15748         * reflection.c (reflection_methodbuilder_to_mono_method): Use
15749         mono_metadata_type_dup.
15750         * marshal.c (mono_mb_create_method): Likewise.
15751
15752         * metadata.c (mono_metadata_type_dup): Rename from
15753         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
15754         MonoImage.  Handle a few more cases, esp. when no mempool is given.
15755         * marshal.c, metadata-internals.h: Update to changes.
15756
15757 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15758
15759         * class.c: fixed a small leak for array classes and removed warning.
15760
15761 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15762
15763         * loader.c (mono_method_get_param_token): Make this work on generic methods.
15764         Return 0x8000000 for return parameters. Fixes #82161.
15765
15766 2007-07-21  Marek Habersack  <grendello@gmail.com>
15767
15768         * appdomain.c (get_shadow_assembly_location): append the current
15769         ticks value to the path. Avoids overwriting the same assemblies by
15770         several threads at the same time.
15771
15772 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
15773         and Raja R Harinath  <rharinath@novell.com>
15774
15775         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
15776         Simplify slightly.
15777         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
15778         property for testing if a method is a generic method definition.
15779
15780 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
15781
15782         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
15783
15784 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
15785
15786         * verify.c: used function from private branch, reverted to the one in class.h 
15787
15788 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
15789
15790         * verify.c: a typo slipped in and the code wont compile
15791
15792 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
15793
15794         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
15795         disabled box instruction as it is doing the wrong thing
15796         improved stack dump messages, now it is easier to debug type related issues
15797
15798
15799 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
15800
15801         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
15802
15803 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
15804
15805         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
15806         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
15807         grouped with class and valuetype. This change will simply 
15808         the code as it should be handled just like unmanaged pointers.
15809
15810 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15811
15812         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
15813
15814 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
15815
15816         * verify.c: several stack merge issues fixed, reference comparisons now
15817         check the type size. strict type check now works correctly.
15818         added more uses of IS_MANAGED_POINTER macro.
15819         fixed issues pointed by running the test suite against .net.
15820         
15821
15822 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15823
15824         * class.c, loader.c, class-internals.h: Removed the
15825         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
15826         defines.
15827
15828         * icall.c: Better error checking in some internal reflection
15829         methods.
15830
15831 2007-07-18  William Holmes  <billholmes54@gmail.com>
15832
15833         * filewatcher.c : removed unused variable 'filename' in 
15834           ves_icall_System_IO_FSW_SupportsFSW
15835
15836 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15837
15838         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
15839         obsolete, removed.
15840
15841 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15842
15843         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
15844         
15845         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
15846
15847 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15848
15849         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
15850         Implement generics support.
15851         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
15852
15853         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
15854         type_args and method_args arguments.
15855         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
15856         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
15857         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
15858
15859 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
15860
15861         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
15862           It adds a rootimage parameter to mono_reflection_get_type_internal,
15863           adds new function mono_reflection_get_type_with_rootimage and use
15864           the rootimage to resolve the types instead of the current image
15865
15866 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15867
15868         * culture-info-table.h: Forgot to update after r78304.
15869
15870 2007-07-13  Raja R Harinath  <rharinath@novell.com>
15871
15872         * class.c (mono_class_is_open_constructed_type)
15873         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
15874
15875 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
15876
15877         * class.c (mono_bounded_array_class_get):  method fails if used with
15878         an incomplete TypeBuilder enum (no basetype field), fixed it by 
15879         avoiding calculating the size for such array as it cannot be instantiated.
15880         Fix bug #82015
15881
15882 2007-07-12  Raja R Harinath  <rharinath@novell.com>
15883
15884         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
15885         field.
15886         * metadata.c, reflection.c: Update to changes.
15887
15888 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
15889
15890         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
15891         mono_class_is_valid_enum, they are used to valide a enum when loading.
15892         * reflection.c: used new functions to throw TypeLoadException when and
15893         invalid enum is build with TypeBuilder. Fixes #82018
15894   
15895 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15896
15897         * object.c: forgot commit of mono_class_setup_methods () to access
15898         iface->methods.
15899         * object-internals.h: added a few more handy fields to
15900         MonoIMTCheckItem.
15901
15902 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
15905         iface->methods.
15906
15907 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15908
15909         * class-internals.h, object-internals.h, object.c: IMT-based
15910         interface invocation core from Massimiliano Mantione
15911         (massi@ximian.com) with a reworked arch-specific interface,
15912         bsearch implementation and a few bugfixes and memory savings by me.
15913
15914 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
15915
15916         * class.c (mono_class_create_from_typedef): mono would segfault if 
15917         an enum did not have a __value field. It now throws a TypeLoadException
15918         for such cases. Fix bug #82022
15919
15920 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15921
15922         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
15923
15924 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15925
15926         * class.c (mono_class_init): If a class is already inited but has
15927         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
15928
15929 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15930
15931         * class.c: Properly handle the case of an unimplemented interface
15932         method.  Fixes: 81673.
15933
15934 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15935
15936         * class-internals.h, object.c: cleanup patch from massi: use
15937         MonoVTable->interface_bitmap since the vtable interfaces offset array
15938         is going away.
15939
15940 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15941
15942         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
15943         GetMDStreamVersion icall instead.
15944
15945 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15946
15947         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
15948         not use mono_dl_build_path() with a full library name: makes
15949         fallbacks to libgaim and libfam work.
15950
15951 2007-07-06  William Holmes  <billholmes54@gmail.com>
15952
15953         * assembly.c: Added a continue statement in probe_for_partial_name when
15954          parse_assembly_directory_name fails.  Fixes : 82002
15955
15956 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
15957
15958         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
15959         and added a verification  for TYPEDBYREF.
15960         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
15961         make native int interchangeable with int32 and some small cleanup and formating.
15962         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
15963         handle byref of byref.
15964         * verify.c (push_local): handle byref of byref.
15965         * verify.c (do_binop): invalid mix of values is unverifiable
15966         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
15967         added visibility checks
15968         * verify.c (field related method): added visibility checks
15969         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
15970
15971 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
15972
15973         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
15974         string.
15975
15976 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15977
15978         * profiler.c (mono_profiler_load): Fix an off-by-one error.
15979
15980         * marshal.c (emit_marshal_string): When returning a string from managed code,
15981         allways make a copy even for unicode strings. Fixes #81990.
15982
15983 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
15984
15985         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
15986         of byref generic inst types (bug #81997).
15987
15988 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15989
15990         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
15991         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
15992
15993 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * marshal.c (emit_marshal_string): Add support for unicode strings in
15996         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
15997
15998 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
15999
16000         * verify.c: field load/store are now verified, missing only access checks now
16001
16002 2007-06-28  Martin Baulig  <martin@ximian.com>
16003
16004         * mono-debug.c (mono_debug_debugger_version): New public variable.
16005
16006 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16007
16008         * locales.c: When constructing DateTimeFormat or NumberFormat for
16009         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16010         MonoCultureInfo contructed from the current locale is always
16011         read-only and has UseUserOverride set to true. All MonoCultureInfo
16012         instances returned for GetCultures have both IsReadOnly and
16013         UseUserOverride set to true. Fixes part of bug #81930.
16014
16015 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16016
16017        * icall-def.h: Update System.__ComObject icalls
16018        * marshal.c: Avoid managed transition (and object creation)
16019        when looking up COM interface in RCW.
16020        * marshal.h: Ditto.
16021        
16022        Code is contributed under MIT/X11 license.
16023
16024 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16025
16026         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16027         to avoid crashes during assembly unloading.
16028
16029 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16030
16031         Fix MethodInfo.IsGenericMethodDefinition
16032         * reflection.c (mono_reflection_bind_generic_method_parameters):
16033         Rearrange code to ensure we always uses a generic method definition.
16034         * class.c (mono_class_inflate_generic_method_full): Set
16035         'generic_container' field only for generic method definitions.
16036         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16037         Use presense of 'generic_container' field as indication of being a
16038         generic method definition.
16039
16040 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16043
16044         * object-internals.h: Reflect changes in the layout of the managed Delegate
16045         class.
16046         
16047         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16048         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16049         runtime memory used by the dynamic method. Fixes #77146.
16050
16051 2007-06-21  Dick Porter  <dick@ximian.com>
16052
16053         * file-io.h: 
16054         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16055         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16056         81767.
16057
16058 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16059
16060         * reflection.c (method_encode_methodspec): Add a tripwire.
16061         * class.c (inflate_generic_type): The fully open generic type is
16062         not the same as the generic type definition.
16063
16064 2007-06-21  Martin Baulig  <martin@ximian.com>
16065
16066         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16067
16068         * mono-debug-debugger.h
16069         (MonoDebuggerBreakpointInfo): Removed.
16070         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16071         (mono_debugger_remove_breakpoint): Likewise.
16072         (mono_debugger_breakpoint_callback): Likewise.
16073         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16074
16075 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16076
16077         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16078         generic type is not the same as the generic type definition.
16079         * class.c (mono_generic_class_get_class): Likewise.
16080
16081 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16082
16083         * icall.c: The second argument to 
16084         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16085         is a MonoType not a MonoClass.
16086
16087 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16088
16089         * verify.c: support for function pointers in the verifier
16090
16091 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16092
16093         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16094
16095 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16096
16097         * assembly.c: removed Mono.Data.SqliteClient from the list of
16098         forward-compatible assemblies as it breaks the ABI (bug #81899).
16099
16100 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16101
16102         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16103         lookup/update with the loader lock.
16104         * reflection.c (mono_class_bind_generic_parameters): No need to
16105         protect mono_metadata_lookup_* with the loader lock.
16106         * class.c (inflate_generic_type): Likewise.
16107         
16108         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16109         on a generic instantiated type.
16110
16111 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16112
16113         *verify.c: produce meanfull error messages on verification error
16114         *verify.c: fixed some cases of verification errors reported as validation errors
16115         *pedump.c: fixed the error name array, now it shows validation errors properly
16116         *verify.h: fixed the contant that should be used for verification errors
16117
16118 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16119
16120         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16121         for bug #77596, 81858 and 80743 (generics data structures on domain
16122         unload).
16123
16124 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16125
16126         Avoid allocating 'MonoGenericContext' on the heap.
16127         * class-internals (_MonoMethodInflated::context): Make field
16128         inline, not a pointer.
16129         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16130         stack.  Use the context embedded within the inflated method as the
16131         hash key, rather than 'new_context'.
16132         * class.c (inflate_generic_context): Simplify.  Return a struct
16133         rather than allocating on the heap.
16134         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16135         doesn't salt away a copy of the context -- simplifying the
16136         lifetime rules of a 'MonoGenericContext *'.
16137         (mono_method_get_context): Return pointer to embedded context.
16138         (setup_generic_array_ifaces): Allocate temporary context on stack.
16139         * reflection.c (inflate_mono_method): Likewise.
16140         (mono_reflection_bind_generic_method_parameters): Likewise.
16141         Use the context embedded within the inflated method as the hash key.
16142
16143         Avoid a source of allocation of 'MonoGenericContext'.
16144         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16145         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16146         * class.c: Update to changes.
16147         (mono_generic_class_get_context): Simplify drastically.  Now just
16148         returns a pointer to the field.
16149         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16150         argument as a const pointer.
16151         (mono_metadata_generic_context_equal): Likewise.
16152         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16153         Update to changes.
16154
16155 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16156
16157         * verify.c improved the handling of brtrue/brfalse, factored out common code
16158
16159 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16160
16161         Kill MonoGenericMethod.
16162         * class-internals.h (MonoGenericContext::method_inst): Rename from
16163         'gmethod' and convert to a MonoGenericInst.
16164         (MonoGenericMethod): Remove.
16165         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16166         * loader.c (method_from_methodspec): Update to changes.  Use a
16167         MonoGenericContext as the key to the hashtable.
16168         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16169         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16170         (mono_metadata_generic_context_hash): Likewise from
16171         'mono_metadata_generic_method_hash'.  Change hash function.
16172         (mono_metadata_load_generic_params): Update to changes.
16173         (mono_get_shared_generic_method): Remove.
16174         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16175         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16176         (inflate_generic_context): Likewise.
16177         (mono_class_inflate_generic_method_full): Likewise.
16178         (setup_generic_array_ifaces): Likewise.
16179         (mono_class_create_from_typespec): Likewise.
16180         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16181         (method_encode_methodspec): Update callsite.
16182         (reflection_methodbuilder_to_mono_method): Update to changes.
16183         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16184         MonoGenericContext as the key to the hashtable.
16185         (inflate_mono_method): Update to changes.
16186
16187         * class-internals.h (MonoGenericMethod::container): Remove.
16188         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16189
16190 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16191
16192         * profiler-private.h, profiler.c, profiler.h: added API to profile
16193         exception events.
16194
16195 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16196
16197         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16198
16199 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16200
16201         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16202         Fixed overflow and underflow not aborting the verification process.
16203
16204 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16205
16206         * class-internals.h (MonoStats): Added stats entries for dynamic
16207         code allocations.
16208
16209 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16210
16211         * loader.c (mono_free_method): Free header->locals and header->clauses.
16212
16213         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16214         dynamic case.
16215
16216         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16217
16218         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16219
16220 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16221
16222         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16223         the tables.
16224
16225 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16226
16227         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16228
16229 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16230
16231         MonoGenericMethod on a diet
16232         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16233         here ...
16234         (_MonoGenericMethod::reflection_info): ... from here.
16235         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16236         Update to changes.
16237         * reflection.c (inflate_mono_method): Likewise.
16238         (mono_reflection_bind_generic_method_parameters): Likewise.
16239
16240 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16241
16242         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16243         *verify.c: factored long ldarg forms to share code with short forms
16244
16245 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16246
16247         *verify.c: fixed code formating factored some duplicate code
16248         into a new function
16249
16250         *verify.h: fixed binary incompatibility introduced earlier
16251
16252         *pedump.c: fixed formating
16253
16254 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16255
16256         Fix assertion when disassembling Mono.C5.dll
16257         * loader.c (method_from_methodspec): Avoid inflating a method
16258         twice with the same context.  If the methodref is inflated, use
16259         the declaring method instead.
16260
16261         * class.c (mono_class_from_generic_parameter): Fix case similar to
16262         bug #81830 handled below, but for method containers.
16263
16264 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16265
16266         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16267         get_shared_generic_class.  Directly inflate the instance.
16268         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16269         (inflate_generic_class): Delete.
16270         (get_shared_generic_class): Delete.  Move setting of
16271         'cached_class' and 'cached_context' ...
16272         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16273
16274         * metadata.c (mono_metadata_lookup_generic_class): Change
16275         signature to take the components of a MonoGenericClass rather than
16276         an allocated MonoGenericClass.  Change semantics to be intern-like.
16277         * reflection.c (mono_class_bind_generic_parameters): Update to
16278         changes.  Make locking region tighter.
16279         * class.c (inflate_generic_class): Update to changes.
16280         (get_shared_generic_class): Likewise.
16281         * metadata-internals.h: Likewise.
16282
16283         * reflection.c (mono_class_bind_generic_parameters): Take and
16284         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16285         (mono_reflection_bind_generic_parameters): Use
16286         'mono_class_bind_generic_parameters' rather than duplicate the code.
16287         * class.c (mono_bounded_array_class_get): Update to changes.
16288         * object-internals.h: Likewise.
16289
16290         * reflection.c (mono_class_bind_generic_parameters): Only support
16291         parameterizing generic type definitions.  Remove support for other
16292         open types.
16293
16294 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16295
16296         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16297
16298         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16299         in the dynamic case.
16300
16301 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16302
16303         * threads.c: When cleaning up thread, reset the Background bit.
16304         Fixes bug #81720.
16305
16306 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16307
16308        * metadata.c: Move variable declarations to top of scope.
16309        * verify.c: Move variable declarations to top of scope.
16310
16311        Code is contributed under MIT/X11 license.
16312
16313 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16314
16315         * reflection.c (mono_class_bind_generic_parameters): Replace
16316         open-coded loop with mono_metadata_inflate_generic_inst.
16317
16318         * class.c (get_shared_generic_class): Don't call
16319         mono_get_shared_generic_inst.  Use the container's own
16320         'class_inst'.
16321
16322         * metadata.c (mono_metadata_load_generic_params): Move
16323         initialization of 'context' field here from ...
16324         * class.c (mono_class_create_from_typedef): ... here, and ...
16325         * loader.c (mono_get_method_from_token): ... here.
16326
16327         * class.c (get_shared_generic_class): Rename from
16328         mono_get_shared_generic_class and make static.
16329         (mono_get_shared_generic_inst): Move to metadata.c.
16330         * loader.c (mono_get_shared_generic_method): Likewise.
16331         * class-internals.h, metadata-internals.h: Update to changes.
16332
16333         Fix #81830
16334         * class.c (mono_class_from_generic_parameter): Don't assume a
16335         generic container owner exists.  Generic containers from monodis
16336         don't have any.
16337
16338 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16339
16340         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16341         * verify.h: new typedefs to returns the non-verifiable status
16342         * verify.c: initial implementation of generics, stack merging and object compatibility check
16343
16344 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16345
16346         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16347         a MonoInternalHashTable again (fixed bug in internal hash table
16348         code).
16349
16350 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16351
16352         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16353         MonoInternalHashTable again (fixed bug in internal hash table
16354         code).
16355
16356 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16357
16358         * class.c, image.c, class-internals.h, domain.c,
16359         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
16360         changes.  Have to figure out what makes them break the SWF
16361         regression.
16362
16363 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16364
16365         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16366         a MonoInternalHashTable now.
16367
16368 2007-06-04  Mark Probst  <mark.probst@gmail.com>
16369
16370         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16371         MonoInternalHashTable now.
16372
16373 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
16374
16375         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
16376         invoke_impl code.
16377
16378         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
16379
16380         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
16381         dependent trampoline.
16382
16383         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16384
16385         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
16386
16387 2007-05-29  Robert Jordan  <robertj@gmx.net>
16388
16389         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
16390
16391 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
16392
16393         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
16394
16395 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
16396
16397        * marshal.c: Fix interface lookup loops for
16398        cominterop_get_com_slot_for_method and 
16399        cominterop_get_method_interface. Only need to lookup
16400        if type is a class, else use interface type method is on.
16401
16402        Code is contributed under MIT/X11 license.
16403
16404 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
16405
16406         * reflection.c: HasSecurity can be present even if no specially 
16407         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
16408         SecurityAttribute). Fix CAS regression tests on buildbot.
16409
16410 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
16411
16412        * appdomain.c: Add configure checks for header files.
16413        * image.c: Add configure checks for header files.
16414        * file-io.c: Add configure checks for header files.
16415        * debug-mono-symfile.c: Add configure checks for header files.
16416        * threadpool.c: Add configure checks for header files.
16417        * console-io.c: Add configure checks for header files.
16418        * profiler.c: Add configure checks for header files.
16419        * rawbuffer.c: Add configure checks for header files.
16420        * icall.c: Add configure checks for header files.
16421        * rand.c: Add configure checks for header files.
16422        * socket-io.c: Add configure checks for header files.
16423
16424        Code is contributed under MIT/X11 license.
16425
16426 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
16427
16428         * reflection.c (mono_custom_attrs_from_builders): Remove the 
16429         assertion as it breaks the build.
16430         
16431         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
16432
16433         * reflection.c (lookup_custom_attr): Make a copy here too.
16434
16435         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
16436         dynamic images.
16437
16438         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
16439         images.
16440
16441         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
16442         info.
16443
16444 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
16445
16446         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
16447         (load_cattr_value): Ditto.
16448
16449 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
16450
16451         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
16452
16453 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
16454
16455         * threads.c: In "start_wrapper", set apartment_state to MTA if
16456         apartment_state is Unknown and we're running on 2.0 profile or
16457         higher.
16458         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
16459         to main method, then set apartment_state to Unknown on 1.0 profile,
16460         and MTA on 2.0 profile.
16461
16462 2007-05-16  Jb Evain  <jb@nurv.fr>
16463
16464         * class-internals.h (MonoDefaults): Add an attribute_class and
16465           customattribute_data_class.
16466         * domain.c (mono_init_internal): Populate them.
16467         * reflection.c: Use them to remove duplicates. Make a vew
16468         MonoClass variables `static'.
16469
16470 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
16471
16472         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
16473         step in implementing IMT, so that all isinst checks now can go
16474         through the bitmap.
16475         This was needed because vtables for TransparentProxy need to look
16476         like the vtable of the "target" class, so they need to point to
16477         its interface bitmap directly.
16478
16479         * object.c: inside "mono_class_create_runtime_vtable" and
16480         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
16481
16482 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
16483
16484         * object-internals.h
16485           culture-info.h : added territory field in MonoCulture and
16486           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
16487         * locales.c : fill territory field above too.
16488         * culture-info-table.h : regenerated.
16489
16490 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
16491
16492         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
16493         Fixes #81599.
16494
16495 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
16496
16497         * object.c: Always initialize apartment, even if 
16498         there is no custom attributes on entry point.
16499         
16500         Code is contributed under MIT/X11 license.
16501
16502 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
16503
16504         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
16505         * metadata.c: If no encoding is set, check for unicode
16506         on class.
16507         
16508         Code is contributed under MIT/X11 license.
16509
16510 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16511
16512         * threads.c: Handle if mono_thread_current returns NULL 
16513         
16514         Code is contributed under MIT/X11 license.
16515
16516 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
16517
16518         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
16519         in start_wrapper. Added mono_thread_init_apartment_state and
16520         mono_thread_cleanup_apartment_state.
16521         * object.c: Initialize thread apartment state on main thread
16522         by checking for STAThreadAttribute on entry point.
16523         * object-internals.h: Add apartment_state field to MonoThread.
16524         * threads-types.h: Add unmanaged definition of 
16525         System.Threading.ApartmentState, MonoThreadApartmentState.
16526         
16527         Code is contributed under MIT/X11 license.
16528         
16529 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
16530
16531         * class.c: Fix windows build.
16532         * class-internals.h: Fix windows build.
16533         
16534         Code is contributed under MIT/X11 license.
16535
16536 2007-05-08  Robert Jordan  <robertj@gmx.net>
16537
16538         * process.c (CreateProcess_internal):
16539         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
16540         .CreateNoWindow was specified. Fixes #81496.
16541
16542 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16543
16544         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
16545         step in implementing IMT, replaced it with two compact arrays
16546         (interfaces_packed and interface_offsets_packed) and a bitmap that
16547         is used for isinst checks (interface_bitmap).
16548
16549         * class.c: (compare_interface_ids): compare function to pass to
16550         bsearch when looking for an interface with a given id.
16551         (mono_class_interface_offset): reimplemented using bsearch on
16552         interfaces_packed, getting the offset from interface_offsets_packed.
16553         (print_implemented_interfaces): utility debugging function.
16554         (setup_interface_offsets): reworked to initialize interfaces_packed,
16555         interface_offsets_packed and interface_bitmap.
16556
16557         * object.c: replaced all accesses to "MonoClass.interface_offsets"
16558         with uses of interfaces_packed and interface_offsets_packed.
16559
16560 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
16561
16562         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
16563         mono_class_interface_offset prototype to wrap all accesses to
16564         "MonoClass.interface_offsets".
16565
16566         * class.c: Implemented mono_class_interface_offset, and wrapped all
16567         accesses to "MonoClass.interface_offsets".
16568
16569         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
16570         "MonoClass.interface_offsets".
16571
16572 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16573
16574         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
16575         GetMethodFromHandle overloads (bug #78637).
16576
16577 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16578
16579         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
16580         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
16581
16582 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
16583
16584         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
16585         #81498.
16586
16587         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
16588         gracefully.
16589         (mono_custom_attrs_from_index): Ditto.
16590
16591         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
16592         Fixes #81501.
16593
16594 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
16595
16596         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
16597         is now allocated from a mempool.
16598
16599 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
16600
16601         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
16602         caller holds threads_lock, leading to deadlocks. Fixes #81476.
16603
16604 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
16605
16606         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
16607         mono_loader_clear_error () too late. Fixes #81463.
16608
16609 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
16610
16611         * culture-info-table.h : regenerated.
16612
16613 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
16614
16615         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
16616         is missing.
16617
16618 2007-04-25  Dick Porter  <dick@ximian.com>
16619
16620         * Makefile.am: Put the mingw enforced-optimisation back into the
16621         PLATFORM_WIN32 section.
16622
16623 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
16624
16625         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
16626         patch.
16627
16628         * image.c (mono_image_load_module): New API function to load a module reference.
16629
16630         * image.c (load_modules): Load modules lazily. Fixes #80812.
16631
16632         * class.c (mono_class_from_typeref): Use mono_image_load_module.
16633         
16634         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
16635
16636         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
16637         to mono_image_load_module_dynamic.
16638
16639 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
16640
16641         * marshal.c: Fix calling convention for CCW on non-windows
16642         platforms. STDCALL on windows, CDECL everywhere else to work 
16643         with XPCOM and MainWin COM.
16644         
16645         Code is contributed under MIT/X11 license.
16646
16647 2007-04-23  Martin Baulig  <martin@ximian.com>
16648
16649         Fix #80969.
16650
16651         * loader.c
16652         (method_from_memberref): Added `gboolean *used_context' argument.
16653         (mono_get_method_from_token): Likewise.
16654         (mono_get_method_full): Don't insert the method in the cache when
16655         `used_context' is true.
16656
16657 2007-04-23  Raja R Harinath  <rharinath@novell.com>
16658
16659         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
16660
16661         * reflection.c (mono_reflection_bind_generic_parameters): Don't
16662         create new MonoTypes for returned types.
16663         * class.c (mono_generic_class_get_class): Export mono-internal.
16664         * class-internals.h: Update to changes.
16665
16666 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
16667
16668         * threadpool.c, threadpool.h, icall-def.h: patch from
16669         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
16670
16671 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
16672
16673         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
16674         
16675         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
16676
16677         * threads.c (mono_thread_get_stack_bounds): New helper function.
16678
16679         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
16680         Correctly compute stack bounds when attaching. Fixes #81394.
16681
16682 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
16683
16684         * reflection.c: fix handling of doubles in custom attributes
16685         for the arm-fpa format (bug #81368).
16686
16687 2007-04-18  Raja R Harinath  <rharinath@novell.com>
16688
16689         * reflection.c (assembly_add_win32_resources): Mildly relax an
16690         bounds check to let the end pointer point just past the end of the
16691         allocated buffer.  (may fix #81384)
16692
16693 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
16694
16695         * culture-info-table.h : regenerated.
16696
16697 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
16698
16699         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
16700         the thread is aborted early.
16701
16702 2007-04-05  Dick Porter  <dick@ximian.com>
16703
16704         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
16705         FindFirstFile()/FindNextFile() to find entries.  This lets the
16706         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
16707         81038.
16708
16709         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
16710         the parameters of
16711         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
16712
16713 2007-04-04  Martin Baulig  <martin@ximian.com>
16714
16715         * debug-helpers.c
16716         (mono_method_desc_full_match): Add support for nested classes.
16717
16718 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
16719
16720         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
16721
16722 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
16723
16724         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
16725         waiting for too many threads.
16726
16727 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
16728
16729         * environment.c: Fix return value check on uname so we can get the 
16730         executing version on Solaris operating systems.
16731
16732 2007-03-28  Jb Evain  <jbevain@gmail.com>
16733
16734         * class.c (mono_type_get_name_recurse): Complete the
16735         fix for the creation of assembly qualified names for
16736         pointer types. Fixes #81208.
16737
16738 2007-03-27  Dick Porter  <dick@ximian.com>
16739
16740         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
16741         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
16742         changed.
16743
16744         * threads.c
16745         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
16746         the value of ReleaseMutex().
16747
16748 2007-03-27  Dick Porter  <dick@ximian.com>
16749
16750         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
16751         in little-endian order, not network endian, so must be converted
16752         to host endian here.  Fixes bug 80593.
16753
16754 2007-03-22  Jb Evain  <jbevain@gmail.com>
16755
16756         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
16757         qualified names for pointer types. Fixes #81208.
16758
16759 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
16760
16761         * marshal.c: Add support for PreserveSigAttribute. 
16762         
16763         Code is contributed under MIT/X11 license.
16764
16765 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
16766
16767         * process.c: Fix endianness issues. Fixes #81126.
16768
16769         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
16770         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
16771
16772         * image.c (mono_image_lookup_resource): Make this work on big-endian
16773         machines.Change API contract so the caller needs to free the return value.
16774         
16775         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
16776         API change.
16777         
16778 2007-03-14  Martin Baulig  <martin@ximian.com>
16779
16780         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
16781         mono_type_get_desc() as well.
16782
16783 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
16784
16785         * icall.c:  Fix environ access in VS.  
16786         
16787 2007-03-13  Alp Toker  <alp@atoker.com>
16788
16789         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
16790         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
16791         #63841.
16792
16793 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
16794
16795         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
16796         circular references among dynamic methods. Fixes #81091.
16797
16798         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
16799
16800 2007-03-09  Martin Baulig  <martin@ximian.com>
16801
16802         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
16803
16804 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
16805
16806         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
16807         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
16808         
16809         Code is contributed under MIT/X11 license.
16810         
16811 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
16812
16813         * loader.c: Reapply patch for bug #79424.
16814
16815 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16816
16817         * metadata.c (mono_type_to_unmanaged): Only convert object to
16818         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
16819
16820 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
16821
16822         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
16823         (and incorrectly set) is_reference field from MonoGenericInst.
16824
16825 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
16826
16827         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
16828         a little earlier.
16829
16830         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
16831
16832         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
16833
16834 2007-03-05  Miguel de Icaza  <miguel@novell.com>
16835
16836         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
16837         FileOptions.1 value to mean "temporary", map that to
16838         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
16839
16840         Fixes 80688
16841
16842 2007-03-03  Marek Habersack  <mhabersack@novell.com>
16843
16844         * appdomain.c: implement MS .Net style shadow copying. Copies of
16845         the assemblies are made in a subdirectory of the dynamic base
16846         directory, the assembly names are preserved.
16847         Copy .mdb and .config files along with the assemblies being shadowed.
16848
16849 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
16850
16851         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
16852         (emit_marshal_handleref): Ditto.
16853
16854         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
16855         on Visual C++. Fixes #80671.
16856
16857 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16858
16859         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
16860         for clone operations.
16861
16862 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
16863
16864         * marshal.c: Fix warnings.
16865
16866 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
16867
16868         * loader.c: allow case-insensitive matching of the dll name
16869         in dllmap handling when prefixed with "i:".
16870
16871 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
16872
16873         * threads.c: Fix #ifdef for dummy_apc function for VS.
16874
16875 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16876
16877         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
16878
16879 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
16880         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
16881         giving precedence to the methods with a fully qualified name
16882         (InterfaceName.MethodName) when building the interface sections
16883         of the vtable.
16884
16885 2007-02-16  Dick Porter  <dick@ximian.com>
16886
16887         * threadpool.c (append_job): Fix fast-path array handling, so it's
16888         less likely the array will grow exponentially when the load is
16889         heavy.
16890
16891 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
16892
16893         * metadata-internals.h, loader.c: fix dllmap lookup order
16894         for non-function maps, too, and prepare for fallback code.
16895
16896 2007-02-12  Robert Jordan  <robertj@gmx.net>
16897
16898         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
16899         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
16900         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
16901         GlobalFree. Fixes a part of bug #77075.
16902
16903 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
16904
16905         * loader.c: implemented typedef parent in field memberref.
16906
16907 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
16908
16909         * marshal.c: Fix warnings and remember to call Release on
16910         IUnknown of RCW.
16911         
16912         Code is contributed under MIT/X11 license.
16913
16914 2007-02-10  Miguel de Icaza  <miguel@novell.com>
16915
16916         * class-internals.h: Add MonoHandleRef definition, and
16917         handleref_class to mono_defaults. 
16918
16919         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
16920         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
16921
16922         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
16923         (do nothing on this stage)
16924         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
16925         (emit_marshal_handleref): New method, used for argument handling
16926         of HandleRefs. 
16927
16928 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
16929
16930         * class.c (mono_class_setup_parent): Lazily init com types.
16931         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
16932         init com types.
16933         * object.c (mono_remote_class_vtable): Lazily init com types.
16934         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
16935         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
16936         * domain-internals.h: Expose mono_init_com_types.
16937         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
16938         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
16939         Add support for COM Callable Wrapper marshalling.
16940         * marshal.h: Add icall definitions.
16941         * gc.c: Handle freeing of CCWs in finalizer code.
16942         
16943         Code is contributed under MIT/X11 license.
16944
16945 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
16946
16947         * reflection.c: changed all the signature encoding code to use
16948         a variable-sized buffer.
16949
16950 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16951
16952         * marshal.c: locking fixes: never take the loader lock
16953         or other runtime locks when holding the marshal lock
16954         (fixes bug#80664).
16955
16956 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
16957
16958         * marshal.c: make the delegate function pointer mapping
16959         work for the moving GC.
16960
16961 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
16962
16963         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
16964         for bug #80618.
16965
16966 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
16967
16968         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
16969         gmodule.
16970
16971 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16972
16973         * threadpool.c: made the code moving-GC safe.
16974
16975 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
16976
16977         * assembly.c, boehm-gc.c, class-internals.h, class.c,
16978         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
16979         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
16980         warning cleanup.
16981         * reflection.c: warning cleanup, some threading and moving GC fixes.
16982
16983 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
16984
16985         * class.c, loader.c: create the needed Set/Get/Address array methods
16986         as well as the .ctors in mono_class_init (), fixes bug #80567.
16987
16988 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
16991         we doesn't decrease its alignment. Should fix the sparc build.
16992
16993 2007-01-24  Dick Porter  <dick@ximian.com>
16994
16995         * socket-io.c
16996         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
16997         Create the returned object if we need to ignore an unsupported
16998         socket option.  Fixes a segfault reported by Atsushi.
16999
17000 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17001
17002         * class.c, object.c: restrict GC-tracked fields to
17003         UIntPtr fields used inside corlib, so we provide better
17004         type info to the GC and also allow broken packing as in
17005         bug #80580.
17006
17007 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17008
17009         * sgen-gc.c: removed duplicated function.
17010
17011 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17012
17013         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17014         value that means that the value is not supported, but that we
17015         should not return a failure, but instead report this as a
17016         successful operation.
17017
17018 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17019
17020         Fix tests/bug79956.2.il
17021         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17022         (mono_generic_class_get_class): If the generic definition in an
17023         enum, copy over other fields related to it.
17024
17025 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17026
17027         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17028         genericinst enums (bug #79215).
17029
17030 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17031         * class.c: Fix bug 80307.
17032
17033 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17034
17035         * image.c: if the file table is not present, try to load
17036         all the modules, since we don't have info about them
17037         having or not metadata (bug #80517).
17038         * assembly.c: allow mono_assembly_load_references () to
17039         work for netmodules.
17040
17041 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17042
17043         * image.c, metadata-internals.h, object.c: execute module
17044         cctors when running on the 2 runtime if present (bug #80487).
17045
17046 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17047
17048         * icall.c: optimized InitializeArray() on bigendian.
17049
17050 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17051
17052         * icall.c: fix for the broken ARM FPA double format.
17053
17054 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17055
17056         * icall.c: handle endian issues for r4 and r8 types, too, in
17057         the InitializeArray() icall.
17058
17059 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17060
17061         * loader.c (mono_loader_error_prepare_exception): Clear the error
17062         once we have extracted the information from it, do this before we
17063         call into the JIT's class loading mechanisms.
17064
17065         * object.c (mono_class_create_runtime_vtable): Do not clear the
17066         loader error before calling mono_class_get_exception_for_failure
17067         as the loader error is needed inside
17068         mono_class_get_exception_for_failure to throw the error (thinko).
17069
17070         Fixes #80521
17071         
17072 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17073
17074         * reflection.c: align fields rva data so it's faster to load at
17075         runtime.
17076
17077 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17078
17079         Prepare to simplify GenericMethod handling.
17080         * class-internals.h (mono_method_get_context): New accessor function.
17081         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17082         rather than directly accessing '->context' field.
17083
17084         * class-internals.h (_MonoGenericParam.method): Move ...
17085         (_MonoGenericContainer): ... here.  Add into union with klass field.
17086         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17087         Update to changes.
17088
17089 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17090
17091         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17092         the wrapper type enum and reduce relocations.
17093
17094 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17095
17096         * reflection.c (inflate_mono_method): Reuse method instantiation
17097         from the generic method, if available.
17098
17099 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17100
17101         * marshal.c (emit_marshal_variant): Fix conv_arg
17102         type in last commit, based on whether parameter is byref.
17103         
17104 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17105
17106         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17107         marshalling.
17108         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17109         MONO_TYPE_OBJECT back for VARIANT support.
17110
17111 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17112
17113         * marshal.c, marshal.h, icall-def.h: Implement 
17114         Marshal.ReAllocCoTaskMem.
17115
17116 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17117
17118         * marshal.c: memory retention fixes: use the proper
17119         image cache for runtime_invoke method lookups.
17120
17121 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17122
17123         * mempool.c: added code to help debug mempool allocations.
17124
17125 2007-01-11  Dick Porter  <dick@ximian.com>
17126
17127         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17128         support (experimenting with faking it with IP_MTU_DISCOVER for
17129         systems that don't have IP_DONTFRAGMENT.)
17130         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17131         icall.
17132
17133         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17134
17135         * socket-io.h: Add new fields to MonoSocketAsyncResult
17136         corresponding to the new ones in Socket.cs.
17137
17138 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17139
17140         Fix IronPython regression mentioned in #80249
17141         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17142         'cached_context' field, since it may have been initialized as a
17143         side-effect of metadata parsing.
17144
17145         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17146         (_MonoGenericClass.cached_class): Move here and rename from lone
17147         remaining field of ...
17148         (_MonoInflatedGenericClass): ... this.  Remove.
17149         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17150         to changes.
17151
17152         Fix mcs/tests/test-128.cs regression.
17153         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17154         2007-01-10 change below.
17155         [MONO_TYPE_OBJECT]: Recurse into array case.
17156
17157 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17158
17159         * class-internals.h (mono_get_inflated_generic_class): Remove.
17160         * class.c (mono_get_inflated_generic_class): Remove.
17161         (mono_generic_class_get_class): Rename from
17162         mono_class_create_generic.
17163         (mono_class_from_mono_type) [GENERICINST]: Use it.
17164         * reflection.c, metadata.c: Update to changes.  Use
17165         'mono_class_from_mono_type'.
17166
17167 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17168
17169         * reflection.c: use passed type when encoding an array element
17170         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17171
17172 2007-01-09  Robert Jordan  <robertj@gmx.net>
17173
17174         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17175         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17176         Fixes bug #80392.
17177
17178 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17179
17180         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17181
17182         * object.c (set_value): Avoid aliasing between type->data.klass
17183         and type->data.generic_class.
17184
17185         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17186
17187 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17188
17189         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17190         between type->data.klass and type->data.generic_class.
17191
17192 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17193
17194         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17195         value in out parameters.
17196
17197 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17198
17199         Simplify invariant for MonoGenericClass::klass field.
17200         * class.c (mono_class_create_generic): Verify 'klass' is null.
17201         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17202         initialize 'klass' field.
17203
17204 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17205
17206         Ongoing work to avoid redundant data and simplify invariants.
17207         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17208         'generic_class', and change type to a GenericInst.
17209         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17210         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17211
17212 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17213
17214         * class.c : skip io-layer under PLATFORM_WIN32.
17215
17216 2007-01-03  Tor Lillqvist  <tml@novell.com>
17217
17218         Fix #80305: In a bundled executable, look in the bundled exe
17219         assembly to determine the runtime version. Add the possibility to
17220         bundle also the machine.config file.
17221         
17222         * assembly.c (mono_assembly_open_from_bundle): Make
17223         non-static. Allow being called even if we have no bundled
17224         assemblies, and return NULL right away in that case.
17225
17226         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17227         here.
17228
17229         * domain.c (app_config_parse): Take an assembly exe file name as
17230         parameter instead of a config file name. Check for a bundled
17231         config file for that assembly by calling
17232         mono_config_string_for_assembly_file() (see below) before looking
17233         for one in the file system.
17234         (get_runtimes_from_exe): Corrsponding change to call of
17235         app_config_parse().
17236         (get_runtimes_from_exe): Check for bundled assembly exe file first
17237         by calling mono_assembly_open_from_bundle(). If no bundled
17238         assembly exe file is found, call mono_image_open() as before to
17239         look it up in the file system.
17240
17241         * mono-config.c: Add variable bundled_machinec_onfig.
17242         (mono_config_string_for_assembly_file): New function.
17243         (mono_config_for_assembly): Move code snippet that looks for a
17244         bundled assembly .config file into the above new function. Call
17245         it.
17246         (mono_register_machine_config, mono_get_machine_config): New
17247         functions to set and retrieve
17248
17249         * assembly.h: Declare mono_register_machine_config().
17250
17251         * mono-config.h: Declare mono_get_machine_config() and
17252         mono_config_string_for_assembly_file().
17253
17254         * icall.c: No declaration of environ necessary on Win32. It is
17255         declared (as a macro expanding to a function call) in stdlib.h.
17256         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17257         New internal mono function. Returns the value of
17258         mono_get_machine_config() as a Mono string.
17259
17260         * icall-def.h: Add get_bundled_machine_config().
17261
17262 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17263
17264         Remove redundant field
17265         * class-internals.h (_MonoGenericContext.container): Remove field.
17266         * loader.c (mono_method_get_signature_full): Don't parse a
17267         "container" for a signature parse when the signature is inflated
17268         immediately.
17269         (method_from_methodspec): Likewise, for a generic_inst.
17270         * class.c, metadata.c, reflection.c: Update to changes.
17271
17272 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17273
17274         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17275         'cached_context', and change semantics -- it starts off NULL, and
17276         is initialized on demand.
17277         * class.c (mono_generic_class_get_context): New accessor to
17278         replace 'context' field accesses.
17279         (mono_class_get_context): New helper.
17280         (*): Update to changes.
17281         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17282
17283 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17284
17285         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17286         before the memcpy.   Fixes Marshal2 regression.
17287
17288 2007-01-02  Jb Evain  <jbevain@gmail.com>
17289
17290         * blob.h: add a MONO_TYPE_ENUM definition
17291         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17292         fix the encoding of arrays of enums in custom attributes.
17293
17294         Fixes #79666.
17295
17296 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17297
17298         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17299         string is null terminated, but only cut the string short if it
17300         overflows the buffer.   
17301         
17302         (mono_string_to_byvalstr): Also fix this routine.   The code here
17303         was not properly terminating a string (it was only terminated
17304         because of the previous catch-all memset). 
17305
17306         I left the memset, because I do not know if applications expect
17307         the runtime to clear this region. 
17308
17309         Fixes #79944.
17310
17311         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17312         Clear the error before returning to unmanaged code to prevent the
17313         runtime from being confused later on (fixes  80420).
17314         (ves_icall_type_from_name): Always call mono_loader_clear_error
17315         after parsing a type that could have failed.
17316         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17317
17318         * loader.c (mono_loader_clear_error): Fix indentation.
17319
17320 2006-12-28  Martin Baulig  <martin@ximian.com>
17321
17322         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17323
17324 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17325
17326         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17327         getting a token for an EnumBuilder.
17328
17329 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17330
17331         * reflection.c: be more careful in case resource generation
17332         fails to create the data array.
17333
17334 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17335
17336         * sgen-gc.c: write barrier for clone and fix unregister handles.
17337
17338 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17339
17340         * reflection.c: some fixes needed in the generics code for the moving GC.
17341
17342 2006-12-22  Robert Jordan  <robertj@gmx.net>
17343
17344         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17345         account. Fixes bug #80299.
17346
17347 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17348
17349         Fix WaitHandle usage in delegates.
17350         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17351         * object.c (mono_wait_handle_new): Use the property set method to
17352         initialize the handle.
17353         (mono_wait_handle_get_handle): New.
17354         * threadpool.c (mono_async_invoke): Use it.
17355         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17356         Likewise.
17357         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
17358
17359 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
17360
17361         * marshal.c (emit_marshal): Call emit_marshal_variant and
17362         emit_marshal_com_interface when applicable.
17363         (emit_marshal_variant, emit_marshal_com_interface): Add
17364         methods for this case and remove if's from emit_marshal_object.
17365         
17366 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
17367
17368         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
17369
17370 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
17371
17372         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
17373         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
17374         and GlobalFree on Windows. Remove FIXME.
17375
17376 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17377
17378         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
17379         implementation for managed objects.
17380
17381 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
17382
17383         * object.c: implemented code to be used for checking
17384         that no reference field overlaps with non-references.
17385
17386 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17387
17388         * threadpool.c: fix queue code to be compatible with the
17389         moving GC.
17390
17391 2006-12-18  Miguel de Icaza  <miguel@novell.com>
17392
17393         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
17394         in structures by throwing ArgumentNullException.
17395
17396         (emit_marshal_safehandle): Also when they are null parameters.
17397
17398         (emit_marshal_safehandle): Add support for ref
17399         SafeHandles parameters
17400
17401 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17402
17403         * profiler.c: updated to use the mono-dl API instead of
17404         gmodule.
17405
17406 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17407
17408         * profiler.c: updated to use the mono-dl dynamic loading
17409         API instead of gmodule.
17410
17411 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17412
17413         * profiler.c: use readlink, older versions of glib don't have
17414         g_file_read_link ().
17415
17416 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17417
17418         * profiler.c: try to detect the path to mono if libc fails to provide
17419         a useful name (bug #80286).
17420
17421 2006-12-16  Raja R Harinath  <rharinath@novell.com>
17422
17423         Fix #80242
17424         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
17425         instance, use the generic type definition instead.
17426         (ves_icall_Type_GetNestedTypes): Likewise.
17427         * class.c (mono_class_create_generic): Always set the
17428         nested_classes of a generic instance to NULL, even if the generic
17429         type definition has nested types.
17430
17431 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
17432
17433         * marshal.c (mono_string_from_bstr): Revert previous Windows change
17434         and fix on Linux.
17435         
17436 2006-12-15  Miguel de Icaza  <miguel@novell.com>
17437
17438         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
17439         my arguments were in the wrong order.   I also fixed the Windows
17440         version which seems to have had the same issue.
17441
17442         (mono_free_bstr): On Unix, this is g_free.
17443         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
17444         conversions (for the tests in corlib to pass).
17445
17446 2006-12-14  Miguel de Icaza  <miguel@novell.com>
17447
17448         * marshal.c (emit_ptr_to_object_conv): For now, ignore
17449         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
17450         exception if a ref SafeHandle in a struct has changed).
17451         
17452         (emit_struct_conv): Do not perform layout checks for classes
17453         derived from SafeHandle, as those are specially handled. 
17454
17455         (emit_object_to_ptr_conv): Add support for
17456         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
17457
17458         (emit_marshal_safehandle): Implement conversion of return values
17459         of safehandles (MARSHAL_ACTION_CONV_RESULT).
17460         
17461         * threads.c: WaitHandle now is compiled with two different handles
17462         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
17463         for 2.0.
17464         
17465         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
17466         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
17467         these routines to cope with both kinds of fields.
17468
17469 2006-12-12  Miguel de Icaza  <miguel@novell.com>
17470
17471         * metadata.c (mono_type_to_unmanaged): Handle the case where
17472         type->data.klass is a SafeHandle, and in that case, return the
17473         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
17474         MONO_MARSHAL_CONV_SAFEHANDLE. 
17475
17476 2006-12-11  Miguel de Icaza  <miguel@novell.com>
17477
17478         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
17479         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
17480         calling emit_marshal_object.
17481
17482         (emit_marshal_safehandle): Implement marshalling of
17483         SafeHandle parameters (no ref support yet).
17484
17485         (MarshalAction): Document the defines as I implement
17486         them for SafeHandle.
17487
17488         (emit_marshal_object): indentation police.
17489
17490         * class-internals.h: Define MonoSafeHandle.
17491         Add safehandle_class to MonoDefaults type.
17492
17493         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
17494         list of classes to check for fields. 
17495
17496         * domain.c (mono_init_internal): Add SafeHandle to the list of
17497         mono_defaults loaded.
17498
17499 2006-12-15  Raja R Harinath  <rharinath@novell.com>
17500
17501         Fix #80253
17502         * reflection.c (mono_reflection_bind_generic_parameters): If the
17503         generic type definition is a type builder, ensure that it is fully
17504         initialized before instantiating it.  Kill some dead code.
17505
17506 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17507
17508         * object.c: clear the loader_error () before loading
17509         more metadata stuff (bug #80258).
17510
17511 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
17512
17513         * icall.c, icall-defs.h: type modifiers icalls for
17514         parameters and properties.
17515
17516 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
17517
17518         * object.c, icall.c: fixed warnings.
17519
17520 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17521
17522         * marshal.c: fixed a couple of leaks and coding style in a few places.
17523
17524 2006-12-08  Dick Porter  <dick@ximian.com>
17525
17526         * process.c: Cope with NULL ProcessStartInfo arguments on windows
17527         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
17528         80173.
17529
17530 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17531
17532         * process.c: ProcessStartInfo may have only filename set and
17533         arguments can be NULL.
17534
17535 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17536
17537         * icall.c: fix leak found by Robert Jordan.
17538
17539 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17540
17541         * marshal.c, marshal.h: generate managed method to access an element
17542         of a multi-dimensional array.
17543
17544 2006-11-30  Paolo Molaro (lupus@ximian.com)
17545
17546         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
17547
17548 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17549
17550         * icall.c: back out GetFields () fix until the serialization code is
17551         fixed to not depend on the incorrect behaviour.
17552
17553 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17554
17555         * profiler.c: provide defaults if none are set.
17556
17557 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17558
17559         * Makefile.am, attrdefs.h: new public header file with
17560         constants for attributes for use by embedders.
17561
17562 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17563
17564         * icall.c: GetFields () fix for bug #80064.
17565
17566 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
17567
17568         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
17569         removed long unused icalls.
17570
17571 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
17572   
17573         * marshal.c: 
17574                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
17575                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
17576                 can be generated without a delegate class.
17577                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
17578         
17579         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
17580
17581 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17582
17583         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
17584         #80069.
17585
17586 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
17587
17588         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
17589         icall-def.h: added icalls needed by System.GC.
17590
17591 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
17592
17593         * loader.c: ensure the class in catch clauses is handled
17594         correctly for generics methods (fixes bug#79980).
17595
17596 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
17597
17598         * monitor.h, monitor.c: added mono_locks_dump () function
17599         to help debug deadlocks involving managed locks.
17600
17601 2006-11-13  Dick Porter  <dick@ximian.com>
17602
17603         * file-io.c (get_file_attributes): If the file is a symlink try
17604         and get the stat data for the target, but also add the
17605         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
17606         the specs for the windows symlink support, but will probably have
17607         to be reworked when I have test data from a vista machine.  Fixes
17608         bug 79887.
17609
17610 2006-11-13  Dick Porter  <dick@ximian.com>
17611
17612         * gc.c (mono_domain_finalize): 
17613         * marshal.c (mono_delegate_begin_invoke): 
17614         * threadpool.c (socket_io_init, mono_thread_pool_init)
17615         (mono_thread_pool_finish): 
17616         * monitor.c (mono_monitor_try_enter_internal): 
17617         * threads.c (mono_thread_resume, mono_thread_init)
17618         (mono_thread_suspend_all_other_threads)
17619         (mono_thread_execute_interruption): 
17620         * appdomain.c (mono_domain_unload): Check for NULL error returns
17621         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
17622         75733.
17623
17624 2006-11-11  Miguel de Icaza  <miguel@novell.com>
17625
17626         * process.c
17627         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
17628         Only close the handle if the value of the handle is not
17629         INVALID_HANDLE_VALUE.  This just makes the process a bit more
17630         robust.
17631
17632         Improvement for #75733, so that we do not run into this problem. 
17633
17634         
17635         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
17636         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
17637         internal variables.  Fixes #79462 
17638         
17639
17640 2006-11-09  Dick Porter  <dick@ximian.com>
17641
17642         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
17643         Use poll() not select().  Fixes bug 79397.
17644
17645 2006-11-09  Raja R Harinath  <rharinath@novell.com>
17646
17647         Fix #79872
17648         * assembly.c (mono_assembly_load_from_full): Check that the given
17649         image has an assembly manifest.
17650
17651 2006-11-09  Ankit Jain  <jankit@novell.com>
17652
17653         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
17654         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
17655         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
17656
17657 2006-11-07  Dick Porter  <dick@ximian.com>
17658
17659         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
17660         Put the old resolver behaviour back for pre-2.0 profiles.
17661
17662 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
17663
17664         * threadpool.c: precise GC and locking fixes.
17665
17666 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17667
17668         * class.c: don't load types that have an explicit unaligned
17669         managed reference. Provide better info in the TypeLoad exception.
17670         Part of the fix for bug #79744.
17671         * object.c: use the correct check for class type load issues.
17672
17673 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
17674
17675         * class.c: enforce alignment of fields with managed references
17676         even when Pack=1 is forced by the user (bug #77788).
17677
17678 2006-11-03  Dick Porter  <dick@ximian.com>
17679
17680         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
17681         If the address reverse lookup fails, return it as the hostname
17682         anyway.  Fixes bug 79721.
17683
17684 2006-11-03  Dick Porter  <dick@ximian.com>
17685
17686         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
17687         Fix build on Windows.
17688
17689 2006-11-02  Dick Porter  <dick@ximian.com>
17690
17691         * icall-def.h: 
17692         * object-internals.h: 
17693         * exception.c (mono_get_exception_thread_interrupted): 
17694         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
17695         Fixes bug 74525.
17696
17697         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
17698         Check for pending Thread.Interrupt.
17699
17700 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
17701         * loader.c: Fixed bug 79684.
17702
17703 2006-10-27  Dick Porter  <dick@ximian.com>
17704
17705         * file-io.c (get_file_attributes): Force symlinks to directories
17706         to be returned as a regular file.  Fixes bug 79733.
17707 2006-10-26  Dick Porter  <dick@ximian.com>
17708
17709         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
17710         CreateFile to open a directory then we need to set the
17711         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
17712
17713 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
17714
17715         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
17716         friends.
17717
17718 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
17719
17720         * sgengc.c: small cleanup of timer code.
17721
17722 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
17723
17724         * sgen-gc.c: fix some warnings and start adding support for
17725         complete object removal on domain unload.
17726
17727 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
17728
17729         * assembly.c: build_assembly_name should not consider a version
17730         number without build or revision number invalid. Fixes bug #79715.
17731
17732 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
17733
17734         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
17735         call kernel32 function OutputDebugString directly.
17736         
17737         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
17738         
17739 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
17740
17741         * reflection.c: small cleanup, using a function to insert a MonoString
17742         in the string heap.
17743
17744 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
17745
17746         * reflection.c: moving GC fixes.
17747
17748 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
17749
17750         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
17751         all the objects with finalizers belonging to an unloading appdomain.
17752
17753 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
17754
17755         * sgen-gc.c: added ability to allocate even when the nursery is fully
17756         pinned and fixed a couple of bugs.
17757
17758 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
17759
17760         * threads.h: Revert the last change for now.
17761
17762         * threads.h (mono_thread_get_pending_exception): Rename this to
17763         mono_thread_get_undeniable_exception ().
17764
17765 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
17766
17767         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
17768         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
17769         when fname does not refer to valid assembly. This result in a more
17770         meaningful error message.
17771         * exception.c: added mono_get_exception_bad_image_format2 which 
17772         constructs a BadImageFormatException using the ctor taking a custom
17773         message and the file name. Passing in a NULL msg results in a default
17774         message.
17775         * exception.h: define mono_get_exception_bad_image_format2 function.
17776         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
17777         when file name pointed to an invalid IL image. Use 
17778         mono_get_exception_file_not_found2 to construct FileNotFoundException,
17779         as this results in a more meaningful error message.
17780
17781 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
17782
17783         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
17784         #79465.
17785
17786 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
17787
17788         * metadata.c (mono_type_size): Change the align parameter to guint32 for
17789         consistency with the other _size functions.
17790         (mono_type_stack_size): Ditto.
17791
17792         * class.c object.c icall.c: Fix warnings caused by the above change.
17793
17794         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
17795
17796         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
17797
17798         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
17799
17800 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
17801
17802         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
17803         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
17804         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
17805         threadpool.h, threads-types.h: mark more internal functions.
17806
17807 2006-10-11  Dick Porter  <dick@ximian.com>
17808
17809         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
17810         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
17811         reproduce the bug even before applying the fix.)
17812
17813 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
17814
17815         * reflection.c: allow retrieving attributes for arguments in generic
17816         methods (bug #79241).
17817
17818 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * debug-mono-symfile.c: properly check fopen () result (found by
17821         coverity).
17822
17823 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
17824
17825         * reflection.c: make error message clearer and fixed two
17826         issuelets found by Coverity.
17827
17828 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
17829
17830         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
17831
17832 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
17833
17834         * object-internals.h, gc-internal.h, profiler-private.h:
17835         mark internal functions.
17836
17837 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
17838
17839         * reflection.c: put data in the text section.
17840         * icall.c: recognize more types in type_from_typename ().
17841         * process.c, marshal.c: added some GC FIXMEs.
17842
17843 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
17844
17845         * loader.c: check for NULL before initializing.
17846
17847 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
17848
17849         * gc.c (finalizer_thread): Use a non-alertable wait here.
17850
17851         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
17852         until the correct solution is found.
17853
17854 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
17855
17856         * reflection.c (mono_module_get_object): Avoid an assert when operating on
17857         modules with no metadata. Fixes #79596.
17858
17859         * image.c (load_metadata_ptrs): Put back the error message when
17860         the #- heap is encountered since the support is not complete yet.
17861
17862 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
17863
17864         * gc.c: do not allow the user to SuppressFinalize () a
17865         delegate because it would leak the trampoline if present.
17866
17867 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
17868
17869         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
17870         PropertyPtr table.
17871
17872 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
17873
17874         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
17875
17876         * metadata.c (mono_metadata_get_param_attrs): Ditto.
17877
17878         * row-indexes.h: Add definitions for *Ptr tables.
17879
17880         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
17881
17882         * metadata.c (mono_metadata_translate_token_index): New helper function to
17883         translate table indexes used in uncompressed metadata.
17884         (mono_metadata_decode_table_row): Ditto.
17885         (mono_metadata_decode_table_row_col): Ditto.
17886
17887         * metadata.c: Add table schema for *Ptr tables.
17888
17889         * class.c loader.c: Use the new helper function to access the affected metadata
17890         tables.
17891         
17892         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
17893         #38532.
17894         
17895 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
17896
17897         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
17898         sequences which can be unbounded in size. Fixes #79583.
17899
17900 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
17901
17902         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
17903         static initialization.
17904
17905         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
17906
17907         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
17908
17909         * domain.c (mono_domain_free): Free up type_init_exception_hash.
17910
17911         * object.c (mono_runtime_class_init): Implement correct semantics when a static
17912         ctor fails, i.e. throw the same exception on subsequent accesses.
17913         
17914 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
17915
17916         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
17917         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
17918         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
17919         Handle marshalling of interfaces and VARIANTs contained in structs.
17920         
17921         Code is contributed under MIT/X11 license.
17922         
17923 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
17924
17925         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
17926         
17927         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
17928         mempool.
17929
17930 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17931
17932         * console-io.c: ignore previous SIGINT handler.
17933
17934 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
17935
17936         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
17937         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
17938         #79460, #79461, #79485.
17939
17940         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
17941
17942         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
17943         #79217.
17944
17945 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
17946
17947         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
17948         could be generated from it.
17949
17950 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
17951
17952         * rand.c: fix read loop to correctly handle EINTR.
17953
17954 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
17955
17956         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
17957         internal calls are defined to keep methods closer to the declaring
17958         type and allow a significant reduction in runtime relocations and
17959         memory usage.
17960
17961 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
17962
17963         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
17964         exception message to have FileNotFoundException use the default
17965         assembly load error message. Fixes bug #79426.
17966         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
17967
17968 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17969
17970         * threadpool.c: (start_thread_or_queue) use the root domain when
17971         creating the thread instead of the async object one.
17972
17973 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
17974
17975         * class.c, object.c, class-internals.h, reflection.c:
17976         for arrays, store element_size inside MonoClass (speedup
17977         for array object creation).
17978
17979 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
17980
17981         * icall.c: fixed CodeBase to use the file name and not the module
17982         name (bug #79365).
17983
17984 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
17985
17986         * mono-debug.c, mono-debug.h: export find_method as
17987         mono_debug_find_method ().
17988
17989 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
17990
17991         * debug-helpers.c, class-internals.h: added a few functions useful
17992         when debugging under gdb.
17993
17994 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17995
17996         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
17997         characters that need special handling.
17998
17999 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18000
18001         * mono-config.c: make the os/cpu specification more flexible,
18002         allowing lists and negation.
18003
18004 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18005
18006         * marshal.c: COM Interop fixes. Handle case where method->klass.
18007         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18008         calling convention on non-windows platforms. This is for
18009         compatibility with XPCOM and MainWin COM.
18010         
18011         Code is contributed under MIT/X11 license.
18012         
18013
18014 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18015
18016         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18017         correctly. Fixes #79217.
18018
18019         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18020
18021 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18022
18023         * mono-config.c: allow both an os and cpu attribute for dllmap
18024         and dllentry elemnets to enable a single config file to be used
18025         for multiple architectures.
18026
18027 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18028
18029         * loader.c: MonoLoaderError was cleared too soon on load failure.
18030         Fixes bug #79424.
18031
18032 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18033
18034         * icall.c: use the defining class vtable when accessing a
18035         static field, not a pobblibly derived class.
18036
18037 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18038
18039         * icall.c string-icalls.c: Remove references to unicode.h.
18040
18041         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18042
18043         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18044
18045         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18046         indicating the image where custom marshaller types should be looked up.
18047         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18048         custom marshallers, instead of corlib. Fixes #79425.
18049
18050 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18051
18052         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18053
18054 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18055
18056         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18057         Implement Environment.ProcessorCount.
18058         
18059         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18060         Implement Environment.ProcessorCount.
18061         
18062         * icall.c: 
18063         Add Environment.ProcessorCount icall.
18064         
18065         Patch by Jason McFall.
18066
18067 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18068
18069         * assembly.c: don't append .exe/.dll when the filename already contains
18070         one of those extensions.
18071
18072 2006-09-12  Martin Baulig  <martin@ximian.com>
18073
18074         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18075         to array interfaces.
18076
18077 2006-09-11  Martin Baulig  <martin@ximian.com>
18078
18079         * reflection.c (mono_image_build_metadata): Create the
18080         MethodImpl's after emitting all types and methods, so we don't
18081         need another fixup pass for them.
18082
18083 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18084
18085         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18086         change.
18087
18088 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18091         unload.
18092
18093 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18094
18095         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18096         args is not set. Fixes #78926.
18097
18098 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18099
18100         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18101
18102         * image.c (load_class_names): Move this to class.c, and rename it to 
18103         'mono_image_init_name_cache'.
18104         (load_modules): Fix a warning.
18105
18106         * class.c icall.c image.c: Initialize image->name_cache lazily.
18107
18108         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18109         on its name using information in the AOT file.
18110
18111         * class.c (mono_class_from_name): Use the new hook function.
18112
18113 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18114
18115         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18116         correctly.
18117
18118         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18119         Fixes #79289.
18120         
18121 2006-09-06  Martin Baulig  <martin@ximian.com>
18122
18123         * icall.c (mono_lookup_internal_call): Small fix.
18124
18125 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18126
18127         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18128         double g_free.
18129
18130 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18131
18132         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18133         when --debug is specified.
18134
18135 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18136
18137         * class.c (setup_generic_array_ifaces): Fix a warning.
18138
18139 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18140
18141         * Temporarily remove the patch to assemly.c that checks the
18142         assembly versions as it breaks our gacutil.
18143
18144 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18145
18146         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18147
18148         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18149         a net 1.0 runtime.
18150
18151         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18152         created using the default ctor. Fixes #79152.
18153         (mono_string_builder_to_utf16): Ditto.
18154
18155 2006-09-01  Martin Baulig  <martin@ximian.com>
18156
18157         Fix handling of the generic array interfaces.
18158
18159         * class-internals.h
18160         (MonoDefaults): Removed `generic_array_class' and added
18161         `generic_ilist' class.
18162
18163         * class.c
18164         (mono_bounded_array_class_get): Add the new generic array interfaces.
18165         (setup_generic_array_ifaces): New static method; create vtable
18166         entries for each method in the generic array interfaces.
18167
18168         * metadata.c
18169         (select_container): Allow "parent-less" generic methods.
18170
18171         * marshal.c
18172         (mono_marshal_get_generic_array_helper): New public method.
18173
18174         * icall.c
18175         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18176         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18177         moved the interncall into System.Array.
18178
18179 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18180
18181         A few more cases of avoiding work on types with ->byref set.
18182         Has the real fix for #79238
18183         * icall.c (is_generic_parameter): New helper.
18184         (ves_icall_Type_GetGenericParameterPosition): Use it.
18185         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18186         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18187         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18188         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18189         reference types.
18190         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18191         reference types.
18192         (ves_icall_Type_get_IsGenericInstance): Likewise.
18193         (ves_icall_Type_get_IsGenericType): Likewise.
18194
18195 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18196
18197         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18198         class if possible.
18199
18200         * mempool.h (mono_mempool_get_allocated): New helper function.
18201
18202         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18203         change.
18204
18205         * mempool.c: Fix warnings and the calculation of stats.
18206
18207         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18208
18209         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18210
18211         * loader.c (mono_get_method_from_token): Update method_count stat.
18212
18213         * class-internals.h (MonoStats): Add some stats.
18214
18215 2006-08-31 Robert Jordan  <robertj@gmx.net>
18216
18217         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18218         with managed variants.
18219         All code is contributed under the MIT/X11 license.
18220         
18221 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18222
18223         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18224         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18225
18226         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18227
18228         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18229         with cycles in classes.
18230
18231         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18232
18233         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18234         missing a [MarshalAs] directive. Fixes #79203.
18235
18236         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18237         klass->marshal_info. Fixes #79217.
18238
18239 2006-08-30  Martin Baulig  <martin@ximian.com>
18240
18241         Committing a patch from Joachim Ante <joe@otee.dk>:
18242         Add support for binary data symbol stores.
18243
18244         * debug-mono-symfile.c
18245         (mono_debug_open_mono_symbol_file): Renamed into
18246         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18247         arguments.
18248
18249         * mono-debug.c
18250         (mono_debug_open_image): Added `raw_contents' and `size' args.
18251         (mono_debug_init_2_memory): New public function.
18252
18253 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18254
18255         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18256
18257 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18258
18259         * appdomain.c: implement support for ShadowCopyFiles.
18260
18261 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18262
18263         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18264         when value is NULL (and should remove CID #51).
18265
18266 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18267
18268         * image.c: moved 2 functions to ../utils.
18269
18270 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18271
18272         * gc.c: cope with the target object of a GC handle being NULL
18273         (bug #78877).
18274
18275 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18276
18277         * class.c: recursively check parent's explicit implementations
18278         of interface methods (fixes bug #79125).
18279
18280 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18281
18282         * filewatcher.c: Avoid warnings when building, do not redefine
18283         constants that are defined.
18284
18285         Remove warnings.
18286
18287 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18288
18289         * image.c: don't fail when the link points to an absolute path.
18290
18291 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18292
18293         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18294         Fix CID #3.
18295
18296 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18297
18298         * image.c (full_path): A new method used to obtain the actual path
18299         of an assembly even in the presence of symbolic links.  
18300
18301         This is necessary for the case where we are running a binary that
18302         has been GACed, but we are using the "published" path name
18303         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18304         file in the GAC.
18305
18306         This was the source of the failure for the `xsp' command with the
18307         recent AppDomain changes, as far as the runtime was concerned,
18308         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18309         $prefix/mono/gac/blah/version/blah.exe.
18310
18311         (do_mono_image_open): use full path
18312
18313 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18314
18315         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18316
18317 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18318
18319         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18320         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18321
18322 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18323
18324         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18325         small structures. Fixes #78990.
18326
18327 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18328
18329         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18330
18331         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18332
18333 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18334
18335         * appdomain.c:
18336         * marshal.c: don't load all the assemblies from a domain into newly
18337         created ones. The new domains might have different rules and load
18338         assemblies from different locations. Fixes bug #76757.
18339
18340         Patch by Lluis. Conflicts resolved by Brian Crowell.
18341
18342 2006-08-16  Alp Toker  <alp@atoker.com>
18343
18344         * socket-io.c: First half of the fix for #79084.
18345         Set sa_size to the length of the content, not that of the struct.
18346         Don't add NULL suffix to the content, this should be done in
18347         managed code if needed.
18348
18349 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18350
18351         Fix part of #79012
18352         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18353         mono_metadata_parse_type returns NULL.
18354
18355 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18356
18357         * normalization-tables.h : new file for string normalization data.
18358         * locales.c, locales.h, icall.c :
18359           added load_normalization_resource() for string normalization,
18360           and icall as well.
18361         * Makefile.am : added normalization-tables.h to the sources.
18362
18363 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
18364
18365         * marshal.c: Add more helper functions to reduce code duplication and use them
18366         everywhere.
18367
18368 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
18369
18370         * marshal.c: Fix non-x86 stdcall warnings.
18371         
18372         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
18373         them everywhere.
18374
18375 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
18376
18377         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
18378         type check on multi-dimensional arrays. Fixes #79000.
18379
18380 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
18381
18382         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
18383         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
18384         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
18385         * class-internals.h: add is_com_object to class structure.
18386         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
18387         null checks to COM object marshalling. Fix .ctor call on RCW.
18388         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
18389         
18390         All code is contributed under the MIT/X11 license.
18391
18392 2006-08-09  Dick Porter  <dick@ximian.com>
18393
18394         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
18395         racing mono_monitor_allocator_lock() somewhere, so don't delete
18396         the critical section for now.  Found by running and exiting
18397         monodevelop.
18398
18399 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
18400
18401         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
18402         (ves_icall_System_ComObject_FindInterface): Ditto.
18403         (ves_icall_System_ComObject_CacheInterface): Ditto.
18404
18405         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
18406         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
18407
18408 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18409
18410         * threadpool.c: treat pipes from process asynchronous reads as sockets
18411         when reading from them, so we get select/poll or epoll to wait for
18412         data.
18413
18414 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
18415
18416         * loader.c: Fix a typo (CID #233) in the null check.
18417
18418 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
18419
18420         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
18421         Hopefully fixes #78949.
18422         
18423         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
18424         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
18425         bytes. Fixes #78972.
18426
18427 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18428
18429         * filewatcher.c: we need to set errno here.
18430
18431 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18432
18433         * filewatcher.c: let Win32Exception get the error value.
18434
18435 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18436
18437         * filewatcher.c: translate errno into win32 errors for Win32Exception
18438         to know what happened.
18439
18440 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
18441
18442         * threadpool.c: Fix more warnings.
18443
18444         * assembly.c (search_loaded): Fix warnings.
18445
18446         * threadpool.c (mono_thread_pool_finish): Fix warnings.
18447         (mono_async_invoke): Ditto.
18448
18449 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
18450
18451         * object.c (mono_remote_class_vtable): Need to create proxy vtable
18452         entries for __ComObject type in addition to ComImport types.
18453         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
18454         about hash table.
18455         
18456         All code is contributed under the MIT/X11 license.
18457
18458 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18459
18460         * image.c: avoid tentative loading of modulerefs that contain
18461         no metadata (P/Invoke library names).
18462
18463 2006-07-28  Dick Porter  <dick@ximian.com>
18464
18465         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
18466         mono_loader_lock() somewhere, so don't delete the critical section
18467         for now.  Found by running and exiting monodevelop.
18468
18469 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18470
18471         * filewatcher.c: define the inotify syscalls when we're building on
18472         linux and have sys/syscall.h. The build system might not have support
18473         for inotify but the target system might have it.
18474
18475 2006-07-26  Miguel de Icaza  <miguel@novell.com>
18476
18477         * domain.c: Documentation updates.
18478
18479         * loader.c (mono_free_method): Do not release the method
18480         information if we are being profiled, as profilers will use this
18481         information at shut down to present some data to the user.
18482
18483         This is needed so that the profiler does not crash, as the
18484         profiler tends to keep MonoMethods around, and they might become
18485         invalid if we free these.
18486
18487         (mono_get_method_constrained): Return the original CIL stream
18488         method as well, so verification can be performed against it.
18489
18490 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18491
18492         * filewatcher.[ch]: support for inotify file system watcher.
18493         * icall.c: add new internal calls for the inotify file system watcher.
18494
18495 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18496
18497         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
18498         #78888.
18499
18500 2006-07-20  Dick Porter  <dick@ximian.com>
18501
18502         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
18503         warning.
18504
18505 2006-07-20  Dick Porter  <dick@ximian.com>
18506
18507         * threads.c (start_wrapper): Do the thread cleanup while we still
18508         hold a reference to its object.  Fixes bug 78123.
18509
18510 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
18511
18512         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
18513         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
18514           "managed-to-managed".
18515         * icall.c: Redirect string constructors that take sbyte* to
18516           ves_icall_System_String_ctor_RedirectToCreateString.
18517         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
18518           to CreateString () methods with matching signature.
18519         * reflection.c: Use original security informations for
18520           MONO_WRAPPER_MANAGED_TO_MANAGED.
18521         * security-manager.c: Use original security informations for
18522           MONO_WRAPPER_MANAGED_TO_MANAGED.
18523         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
18524           that is a placeholder and only its address should be used.
18525         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
18526           that is a placeholder and only its address should be used.
18527
18528 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
18529
18530         Begin implementing COM Interop.
18531         * appdomain.c: Increment corlib version.
18532         * class.c: Set ComImport classes' parent to __ComObject.
18533         * loader.c: Mark cominterop methods as such.
18534         * domain.c: Add __ComObject class to MonoDefaults structure.
18535         * image.c: Add 2 hashtables to the image for COM Interop related methods
18536         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
18537         using the mempool allocator
18538         
18539         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
18540         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
18541         declaration for mono_metadata_type_dup_mp.
18542         
18543         * debug-helpers.c: Added strings for two additional wrapper types
18544         * object.c: Create proxy objects for ComImport classes
18545         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
18546         and added __ComObject class to MonoDefaults structure.
18547         
18548         * object-internals.h: Finish MonoRealProxy definition, and add definition of
18549         MonoComInteropProxy and MonoComObject.
18550         
18551         * marshal.c: Added support for COM Interop
18552         (signature_cominterop): Converts managed signature to corresponding
18553         unmanaged COM signature.
18554         (cominterop_get_function_pointer): gets unmanaged function pointer via
18555         COM object vtable
18556         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
18557         (cominterop_get_method_interface): returns interface type that method is defined on
18558         (mono_mb_emit_cominterop_call): emits native call to function pointer
18559         gotten from vtable
18560         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
18561         that matches signature of unmanaged function.
18562         (cominterop_get_native_wrapper): wrapper around adjusted method call.
18563         (cominterop_get_invoke): forwards call from proxy to __ComObject
18564         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
18565         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
18566         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
18567         
18568         * marshal.h: Added Marshal icall declarations.
18569         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
18570         so we can access them in finalizer
18571         
18572 2006-07-14  Dick Porter  <dick@ximian.com>
18573
18574         * object.c (mono_type_initialization_cleanup): Fix a race
18575         condition by temporarily commenting out the critical section
18576         deletion.
18577
18578 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
18579
18580         * reflection.c (create_custom_attr): Fix some warnings.
18581         (create_custom_attr_data): Ditto.
18582         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
18583         types. Fixes #78855.
18584
18585 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
18586
18587         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
18588
18589         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
18590
18591 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
18592
18593         * reflection.c (resolve_object): Add support for DynamicMethod.
18594
18595         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
18596         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
18597
18598 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
18599
18600         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
18601         don't leak GPtrArray's pdata has we have no use (nor free) for it.
18602
18603 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
18604
18605         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
18606         Fixes #77888.
18607
18608 2006-06-30  Raja R Harinath  <rharinath@novell.com>
18609
18610         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
18611         slightly: remove a shadow local variable.
18612
18613 2006-06-29  Raja R Harinath  <rharinath@novell.com>
18614
18615         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
18616         definition that introduces the virtual function slot.
18617         Also fix Coverity #105.
18618
18619 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
18620
18621         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
18622         for dynamic assemblies. Fixes #78724.
18623
18624 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
18625
18626         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
18627         Fixes #78722.
18628
18629 2006-06-21  Martin Baulig  <martin@ximian.com>
18630
18631         * reflection.c
18632         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
18633         fixes #76484.
18634
18635 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
18636
18637         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
18638
18639 2006-06-20  Raja R Harinath  <rharinath@novell.com>
18640
18641         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
18642         nor TYPEREFs.
18643         * class.c (mono_class_create_from_typespec): Add 'context' argument.
18644         Inflate result if necessary.
18645         (mono_class_get_full): Remove old version.  Rename from
18646         'mono_class_get' and add 'context' argument.  Pass it to
18647         ..._create_from_typespec.
18648         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
18649         (mono_ldtoken): Revert change below.
18650
18651 2006-06-20  Martin Baulig  <martin@ximian.com>
18652
18653         * class.c (mono_ldtoken): Don't pass the generic context to
18654         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
18655
18656 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
18657
18658         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
18659         and later freeing it. Fixes #78638.
18660
18661 2006-06-15  Miguel de Icaza  <miguel@novell.com>
18662
18663         * icall.c (mono_class_get_throw): Revert over-zealous error
18664         throwing, the caller for mono_class_get_throw will cope with
18665         errors when classes are not properly initialized already.
18666
18667         The code still copes with loader exceptions though.
18668
18669         Fixes the regression in reftype1 and reftype3 from the CAS tests.
18670         
18671 2006-06-14  Miguel de Icaza  <miguel@novell.com>
18672
18673         Fixes the `make run1' version of RuntimeAbort (to be commited,
18674         source is in Bugzilla).
18675         
18676         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
18677         FALSE on class loading failure instead of returning true.
18678
18679         * class.c (mono_class_create_from_typedef): It is possible for
18680         mono_metadata_interfaces_from_typedef_full to fail if a class is
18681         not found, cope with this.
18682         
18683
18684 2006-06-14  Dick Porter  <dick@ximian.com>
18685
18686         * socket-io.c: 
18687         * process.c: Fix a bunch of signed/unsigned warnings from gcc
18688         4.1.1
18689
18690 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
18691
18692         * culture-info-table.h : oops, forgot to make it nsync with r61548.
18693
18694 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
18695
18696         * icall.c: Another fix for building mono in Visual Studio.
18697
18698 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
18699
18700         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
18701         
18702 2006-06-09  Martin Baulig  <martin@ximian.com>
18703
18704         * debug-mono-symfile.c: Put this back and really fix it this
18705         time. Sorry for all the trouble.
18706
18707 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
18708
18709         * icall.c (mono_class_get_throw): Fix a warning.
18710         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
18711         ReflectionTypeLoadException if needed. Fixes #78606.
18712
18713         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
18714         (mono_class_init): Ditto.
18715
18716         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
18717         ref_only exceptions.
18718         (mono_loader_clear_error): Make this work even if there is no error.
18719
18720 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
18721
18722         * object-internals.h marshal.c marshal.h icall.c: Implement method 
18723         Marshal.GetComSlotForMethodInfo using internal call.
18724
18725 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
18726
18727         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
18728         a function for signalling it.
18729
18730         * class.c (mono_class_from_typeref): Use the new kind of loader error when
18731         a referenced assembly is not found.
18732
18733         * loader.c (mono_loader_error_prepare_exception): Add support for 
18734         LOADER_ERROR_ASSEMBLY. Fix formatting.
18735
18736 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
18737
18738         * domain.c appdomain.c class-internals.h marshal.c: Add support 
18739         for VARIANT marshalling on windows and increment corlib version
18740         since Variant struct was added.
18741
18742 2006-06-03  Miguel de Icaza  <miguel@novell.com>
18743
18744         * debug-mono-symfile.c: Revert Martin's previous patch which broke
18745         stack trace line information:
18746
18747         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
18748         (Martin) when looking up B which is between A and C, return A not C.
18749
18750         Bug is #78573.
18751
18752         Thanks to Alexander Olk for tracking this down.
18753
18754 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
18755
18756         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
18757         
18758         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
18759         avoid clobbering its value.
18760         (mono_string_to_lpstr): Fix a warning on windows.
18761
18762 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
18763
18764         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
18765
18766         * reflection.c loader.c: Removed references to 'dummy' flag.
18767
18768         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
18769
18770         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
18771         it gets GC tracking.
18772
18773         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
18774         GC tracking.
18775         
18776         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
18777
18778         * marshal.c threadpool.c: Update callers of mono_async_result_new.
18779
18780         * appdomain.c: Bump corlib version.
18781
18782 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
18783
18784         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
18785         CEE_STIND_REF when working with object references.
18786
18787 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
18788
18789         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
18790         Fixes #78539.
18791
18792 2006-05-30  Miguel de Icaza  <miguel@novell.com>
18793
18794         * loader.c (method_from_memberref): Fix argument value for
18795         mono_loader_set_error_method_load (I was passing the MonoClass
18796         instead of the class name char *).
18797
18798 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
18799
18800         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
18801         CEE_STIND_REF when working with object references.
18802
18803 2006-05-30  Martin Baulig  <martin@ximian.com>
18804
18805         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
18806         mono_method_full_name() change and replace the ':' with a '.'
18807         here.
18808
18809 2006-05-30  Martin Baulig  <martin@ximian.com>
18810
18811         * debug-mono-symfile.c
18812         (mono_debug_symfile_lookup_location): Fix the algorithm:
18813         when looking up B which is between A and C, return A not C.
18814
18815 2006-05-29  Martin Baulig  <martin@ximian.com>
18816
18817         * mono-debug.h
18818         (MonoDebugMethodInfo): Make the typedef public.
18819         (MonoDebugSourceLocation): New public struct.
18820
18821         * mono-debug.c
18822         (mono_debug_source_location_from_address): Removed.
18823         (mono_debug_source_location_from_il_offset): Removed.
18824         (mono_debug_il_offset_from_address): Removed.
18825         (mono_debug_address_from_il_offset): Removed.
18826         (mono_debug_lookup_method): New public function.
18827         (mono_debug_lookup_source_location): New public function; replaces
18828         the old mono_debug_source_location_from_*() functions; see the
18829         inline documentation.
18830         (mono_debug_free_source_location): New public function.
18831         (mono_debug_print_stack_frame): New public function; see the
18832         inline documentation.
18833
18834         * debug-mono-symfile.c
18835         (mono_debug_find_source_location): Renamed into
18836         mono_debug_symfile_lookup_location(); only take a
18837         `MonoDebugMethodInfo *' and an `offset' argument; added inline
18838         documentation.
18839         (mono_debug_find_method): Renamed into
18840         mono_debug_symfile_lookup_method().
18841
18842 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
18843
18844         * assembly.c (mono_assembly_open_full): Dont overwrite the status
18845         returned by mono_image_open_full ().
18846
18847         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
18848         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
18849         #78517.
18850
18851         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
18852         #78518.
18853
18854 2006-05-27  Miguel de Icaza  <miguel@novell.com>
18855
18856         * class.c (mono_class_from_typeref): handle missing images
18857         earlier, deals with bug #78418.   Refactor code; 
18858
18859         Fix a warning introduced in my previous commit (some stale code
18860         from before I revisited my patch).
18861
18862         * class.c (mono_class_create_from_typedef): On failure, remove the
18863         class from the MonoImage->class_cache as the class is not
18864         initialized;   Fixes the leak pointed out by Paolo.
18865
18866 2006-05-25  Dick Porter  <dick@ximian.com>
18867
18868         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
18869         DeleteCriticalSections until I figure out which one may still be
18870         sometimes locked when mono_thread_cleanup is called.
18871
18872 2006-05-24  Dick Porter  <dick@ximian.com>
18873
18874         * threads.c (mono_thread_cleanup): Move the threading cleanup out
18875         of mono_thread_manage and back into its own function, so it can be
18876         called after the finalizer thread has finished.
18877
18878         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
18879
18880 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
18881
18882         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
18883         Fixes #78495.
18884
18885         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
18886         with non-blittable elements.
18887         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
18888
18889 2006-05-24  Martin Baulig  <martin@ximian.com>
18890
18891         * mono-debug-debugger.h (MonoDebuggerEvent): Added
18892         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
18893
18894         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
18895         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
18896         `mono_debugger_event_handler' to NULL.
18897
18898 2006-05-24  Martin Baulig  <martin@ximian.com>
18899
18900         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
18901
18902 2006-05-24  Martin Baulig  <martin@ximian.com>
18903
18904         * mono-debug-debugger.h
18905         (mono_debugger_create_notification_function): Added
18906         `MonoCodeManager *' argument.
18907
18908 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
18909
18910         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
18911
18912 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
18913
18914         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
18915         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
18916         implementation.
18917
18918 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
18919
18920         * icall.c: precise GC support: objects can't be stored in unmanaged
18921         memory anymore, even if they are kept alive by other references: since
18922         they can move the GC needs to be able to always find them.
18923
18924 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18925
18926         * object.c: precise GC support for static fields. Support
18927         for moving GCs: write barriers and pinned allocation for interned
18928         strings.
18929
18930 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18931
18932         * domain.c, domain-internals.h: precise GC support for the MonoDomain
18933         structure.
18934
18935 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18936
18937         * class.c, gc.c: sgen and precise GC updates.
18938
18939 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
18940
18941         * marshal.h, marshal.c: added write barrier wrapper and precise type
18942         fixes.
18943
18944 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
18945
18946         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
18947         support.
18948
18949 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
18950
18951         * reflection.c: precise and sgen GC updates.
18952
18953 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
18954
18955         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
18956
18957 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
18958
18959         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
18960
18961 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
18962
18963         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
18964         MONO_TYPE_OBJECT. Fixes #78462.
18965
18966 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
18967
18968         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
18969         and blittable types.
18970
18971 2006-05-17  Miguel de Icaza  <miguel@novell.com>
18972
18973         * class.c (mono_class_get_exception_for_failure): Implement parts
18974         of a TODO: if the loader error is set (instead of the class
18975         error), we return a Loader exception that can be properly thrown
18976         elsewhere.
18977
18978         This was exposed by some Winforms 2.0 code that I tried to run
18979         (Atsushi pointed me to it).
18980
18981 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
18982
18983         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
18984         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
18985         
18986         * marshal.c (emit_marshal_vtype): Add limited support for 
18987         UnmanagedType.LPStruct. Fixes #78427.
18988
18989         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
18990         Applied a patch from kangaroo to fix #77523.
18991
18992 2006-05-17  Martin Baulig  <martin@ximian.com>
18993
18994         * threads.c
18995         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
18996         (debugger_thread_created): Removed.
18997         (debugger_thread_exited): Removed.
18998
18999 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19000
19001         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19002
19003         * object-internals.h (MonoReflectionResource): Sync with managed version.
19004
19005 2006-05-12  Wade Berrier <wberrier@novell.com>
19006
19007         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19008
19009 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19010
19011         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19012         functions try to allocate from the image mempool.
19013
19014 2006-05-12  Dick Porter  <dick@ximian.com>
19015
19016         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19017
19018 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19019
19020         * object.c: The FieldGetter and FieldSetter methods require the full
19021         name of the class, not only the name. Fixes bug #78277.
19022
19023 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19024
19025         * loader.c (method_from_memberref): Do not pass the NULL klass to
19026         mono_loader_set_error_() methods.  Pass the non-NULL value
19027         (class). 
19028
19029 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19030
19031         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19032         (mono_assembly_close): Null out assembly->image->references after freeing it.
19033
19034         * image.c (mono_image_close): Free image->references.
19035         
19036         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19037
19038 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19039
19040         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19041         before checking if it's NULL (g_assert).
19042
19043 2006-05-10  Martin Baulig  <martin@ximian.com>
19044
19045         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19046         I thought I already killed that two months ago, but now it somehow reappeared.
19047
19048 2006-05-10  Martin Baulig  <martin@ximian.com>
19049
19050         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19051
19052 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19053
19054         * reflection.c: Allocate memory for dynamically created methods in the image
19055         mempools.
19056
19057 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19058
19059         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19060         don't use the ad pointer before checking if it's NULL (g_assert).
19061
19062 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19063
19064         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19065         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19066
19067         * marshal.c: Allocate all signatures from mempools.
19068
19069         * marshal.c: Allocate some more signatures from mempools.
19070
19071 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19072
19073         * object.c (mono_load_remote_field): The code used to provide a
19074         temporary variable for returning results if the user did not
19075         provide a result pointer.  But our temporary variable was allocted
19076         on the satck.
19077
19078         Fix calling code to always pass a result area.   Coverity ID 103.
19079
19080 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19081
19082         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19083         value, not the old. Fixes #78312.
19084         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19085
19086         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19087         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19088         per-image cache.
19089
19090         * assembly.c (mono_assembly_close): Free image->references.
19091
19092         * assembly.c (mono_assembly_names_equal): Fix a warning.
19093         (mono_assemblies_cleanup): Cleanup more global data.
19094
19095         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19096
19097         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19098         ptr_cache and image->modules.
19099
19100         * image.c (mono_image_init): Allocate array_cache lazily.
19101         
19102 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19103
19104         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19105         behavior was changed recently and has bad side effects.
19106
19107 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19108
19109         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19110         
19111         * assembly.c (mono_assembly_close): Remove a debug printf.
19112
19113         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19114
19115         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19116         to also allow for temporary references between mono_image_open ()/close ().
19117
19118         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19119
19120 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19121
19122         * marshal.c: Fix support for dynamic methods.
19123
19124         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19125
19126         * marshal.c (mono_marshal_cleanup): New cleanup function.
19127
19128         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19129         image mempools.
19130
19131         * class.c (mono_class_init): Fix leaking class->nested_classes.
19132
19133         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19134
19135         * image.c (mono_image_init): Initialize the new cashes.
19136
19137         * image.c (mono_image_close): Destroy the new cashes.
19138
19139         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19140
19141         * mempool.c (mono_mempool_strdup): New helper function.
19142
19143         * class-internals.h: Add prototype for mono_loader_unlock ().
19144
19145         * domain.c (mono_jit_info_table_find): Fix a warning.
19146         (mono_debugger_check_runtime_version): Ditto.
19147
19148         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19149         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19150         functions to these modules.
19151
19152         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19153         metadata modules.
19154         
19155         * marshal.c (mono_free_bstr): Fix a warning.
19156
19157         * assembly.c (mono_assembly_open_full): Fix another small leak.
19158
19159         * object.c: Fix some unload leaks in the remoting code.
19160
19161         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19162         function.
19163
19164         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19165
19166         * reflection.c: Fix some unload leaks in dynamic assemblies.
19167
19168 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19169
19170         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19171         * marshal.h: Add BSTR support on Win32
19172         * icall.c: Add BSTR icalls
19173         * metadata.h: Add BSTR enums
19174
19175 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19176
19177         Work to catch the crash from #76795 and turn it into an
19178         exception.   As I stubbed out pieces of the VisualBasic support,
19179         I found a number of places where the code was failing and I added
19180         checks to those places. 
19181         
19182         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19183         function return a status code.  If we fail to parse the signature
19184         from mono_metadata_parse_generic_inst, return FALSE.
19185
19186         * loader.c (mono_get_method_from_token): If we fail to load the
19187         method (mono_class_get) return NULL.   
19188
19189         * (method_from_memberref): Return NULL if we are unable to parse
19190         the method signature
19191
19192         (mono_loader_error_prepare_exception): Since we now use the
19193         loader_error flag internally to stop processing, and obtaining
19194         exceptions that might be thrown will walk this code path the
19195         proper way of going from a MonoLoaderError into a
19196         MonoException was convoluted.   This new routine encapsulates the
19197         process of turning the error into an exception and *clearing* the
19198         error afterwards.
19199         
19200 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19201
19202         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19203         with missing assemblies), and to cope with:
19204
19205                 * Missing fieldref from a non-existing assembly.
19206                 * Missing methodref from a non-existing assembly.
19207
19208         The first batch of work to address *some* of the issues from 76661.
19209         
19210         * object.c (mono_class_create_runtime_vtable): If we fail to
19211         initialize the class raise the exception here. 
19212
19213         * metadata.c (mono_class_get_overrides_full): If any methods fail
19214         to load return the failure to the caller.
19215
19216         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19217         flagging assemblies that failed to load.   
19218
19219         Do not crash if we are unable to load the assembly.
19220
19221         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19222         assemblies. 
19223
19224         * loader.c (mono_loader_set_error_type_load): Change the
19225         convention to always pass unallocated strings, so we make our own
19226         copies (I know our own code had duplicated strings before, but
19227         this keeps the normal conventions).
19228         (method_from_memberref): Call mono_loader_set_error_method_load
19229         for all possible failures of loading the class. 
19230         Remove assert, turn into a loader error.
19231
19232         (mono_loader_error_to_exception): Move this routine from mini
19233         (mini_loader_error_to_exception) there was no need to have that in
19234         mini. 
19235
19236         * class.c (mono_class_from_typeref): If we were not able to load
19237         the assembly with mono_assembly_load_reference, call the
19238         mono_loader_set_error_type_load to register the problem.
19239
19240         (mono_class_setup_fields): If we fail to load the type from
19241         mono_metadata_parse_type_full, call mono_class_set_failure and
19242         break from the loop.
19243
19244         If class->exception_type is set, we do not layout the fields as
19245         that might crash the runtime, and instead return (from breaking
19246         from the previous loop).
19247
19248         (mono_class_setup_vtable): This now returns a boolean indicating
19249         whether the table was properly setup.   The decision is driven by
19250         mono_class_get_overrides_full which might run into non-existing
19251         methods. 
19252         
19253         (mono_class_init): Returns TRUE on success or FALSE if there was a
19254         problem in loading the type (incorrect assemblies, missing
19255         assemblies, methods, etc).
19256
19257         When we call mono_class_setup_fields we also check for a potential
19258         error inside this call (either a class exception or a general
19259         loader exception).
19260
19261         (mono_class_create_from_typedef): If the parent fails to load
19262         (calling mono_class_get_full) return NULL.
19263         
19264         ** Important **
19265
19266         calls to mono_metadata_parse_type_full should be checked
19267         everywhere and set the mono_class_set_failure
19268         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19269
19270         The current patch checks the places where my manually constructed
19271         tests show the errors are showing up, but we should do it
19272         everywhere. 
19273
19274         ** Important2 **
19275
19276         mono_class_init return values should be tested everywhere, like
19277         the previous case this is something that we should audit
19278         everywhere and not only on the cases exposed by the tests I
19279         created. 
19280
19281 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19282
19283         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19284         boolean parameter and instead pass the information on `options'
19285         parameter (FileOptions).
19286
19287         * icall.c: Register the new signature for MonoIO.Open.
19288
19289         * debug-helpers.c (dis_one): Trying to understand how coverity
19290         works.  Fix Run 5, item 78.
19291
19292 2006-04-26  Dick Porter  <dick@ximian.com>
19293
19294         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19295         dereference.
19296
19297 2006-04-25  Martin Baulig  <martin@ximian.com>
19298
19299         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19300
19301         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19302         debugger_thread_created().
19303         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19304         special way.
19305         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19306         (mono_debugger_finalize_threads): New function; undo the effects
19307         of mono_debugger_init_threads().
19308         (mono_debugger_create_all_threads): Removed.
19309
19310 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19311
19312         * image.c (mono_image_close): Tidy up trace messages.
19313
19314         * assembly.c (mono_assembly_close): Ditto.
19315
19316         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19317         no longer references an already freed assembly. Fixes #78168.
19318
19319 2006-04-21  Dick Porter  <dick@ximian.com>
19320
19321         * threads.c (mono_thread_detach): Fix reference counting when
19322         detaching threads.
19323
19324 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19325
19326         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19327         #78155.
19328
19329 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19330
19331         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19332         (mono_type_to_stind): Ditto.
19333
19334         * marshal.c: Use the new helper functions to simplify code.
19335
19336         * image.c (mono_image_close): Add some code for help debug assembly unloading
19337         problems.
19338
19339         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19340         image mempool.
19341
19342         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19343         assembly was already loaded in another appdomain. Fixes #78083.
19344
19345 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19346
19347         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19348         referenced assemblies.
19349         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19350
19351         * domain.c (mono_domain_free): Add a trace message.
19352
19353         * appdomain.c (add_assemblies_to_domain): Ditto.        
19354
19355         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19356         field.  
19357
19358 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19359
19360         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
19361
19362 2006-04-12  Martin Baulig  <martin@ximian.com>
19363
19364         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
19365         `USE_INCLUDED_LIBGC'.   
19366
19367 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
19368
19369         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
19370         the patch contains ../ and a small directory name later. Hopefully fixes
19371         #78035.
19372
19373 2006-04-10  Martin Baulig  <martin@ximian.com>
19374
19375         Clean up the debugger's thread-handling code.
19376
19377         The debugger's thread-handling code has been moved from
19378         ../mini/debug-debugger.c to threads.c.  We now iterate directly
19379         over the `threads' hash, keep track of exiting threads and also
19380         use proper locking.
19381
19382         We can now debug XSP and XSP based applications with the debugger.
19383
19384         * object-internals.h (MonoThread): Added `gpointer end_stack'.
19385
19386         * threads.h
19387         (MonoThreadCallbacks): Removed; this was only used by the debugger.
19388         (mono_install_thread_callbacks): Likewise.      
19389
19390         * threads.c (mono_thread_callbacks): Removed.
19391         (debugger_thread_created, debugger_thread_exited): New static functions.
19392         (start_wrapper): Call debugger_thread_created().
19393         (thread_cleanup): Call debugger_thread_exited().
19394         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
19395         (mono_debugger_init_threads): New public function.
19396         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
19397         iterate directly over the `threads' hash and also use proper locking.
19398
19399         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
19400
19401         * mono-debug-debugger.h
19402         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
19403
19404 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
19405
19406         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
19407         argument type=array. Fixes #78057.
19408
19409 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
19410
19411         * culture-info-table.h : regenerated. Fixed bug #69652.
19412
19413 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
19414
19415         * loader.c metadata.c: Reapply a variant r59116.
19416         
19417         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
19418
19419         * class.c (mono_class_setup_interface_offsets): New internal function.
19420
19421         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
19422         interfaces too. Fixes #77398.
19423
19424         * reflection.c (encode_cattr_value): Add support for 
19425         parameter type=object, argument type=array.
19426         (load_cattr_value): Ditto. Fixes #77916.
19427
19428         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
19429         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
19430
19431         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
19432         a byval char array and CharSet is Ansi.
19433
19434         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
19435
19436 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
19437
19438         * metadata.c: Add some locking comments.
19439         
19440         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
19441         mempool.
19442         (mono_metadata_free_method_signature): Don't free the signature itself.
19443
19444         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
19445
19446         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
19447         reference the same MonoImage.
19448         (mono_assembly_load_from_full): Add an assert.
19449
19450 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
19451
19452         * image.c (mono_image_close): Don't put the image we are about to free into the
19453         loaded_images_guid_hash.
19454
19455         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
19456         to reduce code duplication.
19457
19458         * marshal.c: Register the native functions called by this module as icalls, to
19459         somewhat centralize the creation of MonoMethodSignature's.
19460
19461         * loader.c (mono_method_signature): Add a cache for method signatures.
19462
19463         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
19464         the parameter attributes of a method.
19465         (mono_metadata_parse_method_signature_full): Refactored the computation of
19466         parameter attributes into a separate function. Also avoid one allocation in
19467         most cases.
19468
19469         * assembly.c (mono_assembly_close): Ditto.
19470
19471         * image.c (mono_image_close): Log trace messages with INFO level.
19472
19473         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
19474
19475         * image.c reflection.c: Correct reference counting of image modules.
19476         
19477         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
19478         of this function from the image mempool.
19479         
19480         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
19481         to allow more cached types to be used.
19482
19483         * mono-debug.c (mono_debug_add_method): Appled patch from
19484         David S. Miller  <davem@sunset.davemloft.net>: Access 
19485         minfo->lexical_blocks[] entry elements using read32().
19486
19487 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
19488
19489         * loader.c (mono_free_method): No longer free the method header for non-dynamic
19490         methods as it is allocated from the mempool.
19491
19492         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
19493         image mempool.
19494
19495         * metadata-internals.h: Add comments describing the reference counting scheme
19496         used for MonoImage and MonoAssembly.
19497
19498         * image.c assembly.c reflection.c: Rework reference counting of images and 
19499         assemblies so they are freed when the runtime is shut down. Free some 
19500         additional memory structures when an image is unloaded.
19501         
19502 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
19503
19504         * class.c loader.c reflection.c: Allocate more data structures in
19505         the image mempool.
19506
19507 2006-03-31  Miguel de Icaza  <miguel@novell.com>
19508
19509         * icall.c
19510         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
19511         build on pre glib 2.4 systems.
19512
19513 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
19514
19515         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
19516
19517         * icall.c: Fix some warnings.
19518
19519 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
19520
19521         * culture-info-table.h : regenerated.
19522
19523 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
19524
19525         * threads.c, object-internals.h, verify.c: changed the culture caching
19526         code to use a normal MonoArray for storage so the GC can keep track of
19527         them easily. Fixed bits of the cache logic, too and simplified the
19528         code.
19529
19530 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
19531
19532         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
19533         thread for non-Boehm GCs.
19534
19535 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
19536
19537         * domain.c, object.c, domain-internals.h: reduce the amount of memory
19538         needed to keep track of the data for static fields.
19539
19540 2006-03-29  Raja R Harinath  <rharinath@novell.com>
19541
19542         Fix #75172
19543         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
19544         for interface classes.  Use 'num_methods' instead.
19545         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
19546         before using '->vtable_size' field.
19547
19548 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
19549
19550         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
19551         doesn't contain managed pointers, so use a normal hashtable.
19552
19553 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
19554
19555         * reflection.c, class-internals.h, domain.c: fixed handling of types
19556         used as values for objects in custom attributes (bug #77915):
19557
19558 2006-03-24  Martin Baulig  <martin@ximian.com>
19559
19560         * class.c (mono_class_setup_fields): Added support for generic
19561         instances; fixes #77580.
19562
19563 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19564
19565         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
19566
19567 2006-03-24  Dick Porter  <dick@ximian.com>
19568
19569         * file-io.c (get_file_attributes): More stat macro breakage.
19570         Fixes bug 77759.
19571
19572 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
19573
19574         * profiler.c: added the file=filename option in the default profiler
19575         to output the profile data to filename.
19576
19577 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19578
19579         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
19580         bug #77877.
19581
19582 2006-03-22  Martin Baulig  <martin@ximian.com>
19583
19584         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
19585         allocated `MonoClassField *' in `fb->handle'.
19586
19587 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
19588
19589         * class.c, image.c, metadata-internals.h: implemented new mechanism to
19590         allocate interface ID to save memory and allow better ID reuse on
19591         appdomain unload. setup_generic_vtable () removal from Martin.
19592
19593 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
19594
19595         * object.h, appdomain.c, domain.c, exception.c, icall.c,
19596         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
19597         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
19598         write barriers for reference stores with managed objects accessed with
19599         C structures in the runtime and in embedding programs.
19600
19601 2006-03-20  Raja R Harinath  <rharinath@novell.com>
19602
19603         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
19604         'interface_id' and 'max_interface_id' fields of MonoClasses
19605         representing open generic types.
19606
19607 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
19608
19609         * object.h, object.c, icall.c: added functions to deal with
19610         storing valuetypes that contain references in managed objects.
19611         * reflection.c, string-icalls.c, threads.c, marshal.c: small
19612         fixes and comments around uses of mono_array_addr ().
19613
19614 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
19615
19616         * object.h, icall.c, monitor.c: object.GetHashCode ()
19617         implementation that supports the moving garbage collector.
19618
19619 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
19620
19621         * icall.c, threads-types.h, threads.c: implemented finalizer for
19622         LocalDataStoreSlot.
19623
19624 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
19625
19626         * metadata.c (mono_type_size): Add a fixme.
19627         (mono_type_stack_size): Ditto.
19628
19629         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
19630         'type_forwarders' field.
19631
19632         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
19633         attribute from net 2.0.
19634
19635         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
19636         from class.c.
19637
19638         * class.c (mono_class_setup_fields): Fix a warning.
19639         
19640         * class.c (mono_class_from_name): Add support for assemblyref entries
19641         in the EXPORTEDTYPE table.
19642
19643         * reflection.c: Add support for handling type forwarders under net 2.0.
19644
19645         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
19646         
19647 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
19648
19649         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
19650         overwriting entries in ModuleBuild->types, also clean up the code
19651         a little. Fixes #77774.
19652
19653 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
19654
19655         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
19656         load friend assembly info when present.
19657
19658 2006-03-14  Raja R Harinath  <rharinath@novell.com>
19659
19660         Fix crasher on gtest-158.cs.
19661         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
19662         the return value if the MonoClass we want is yet in an
19663         inconsistent state.
19664         * class.c (mono_class_create_from_typedef): Add an comment
19665         explaining an order dependency between mono_class_setup_parent and
19666         mono_class_setup_mono_type.
19667
19668 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
19669
19670         * class.c: documentation updates and events bug fix.
19671
19672 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
19673
19674         * class.c: some cleanup, locking fixes.
19675
19676 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
19677
19678         * class.c: fix the generics code to setup nested
19679         type info to the instantiated type (bug #77770).
19680
19681 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
19682
19683         * marshal.c: fixed a few type correctness issues.
19684
19685 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
19686
19687         * loader.c: the Set/Get/Addrtess array methods should be public.
19688
19689 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
19690
19691         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
19692         
19693         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
19694         info->wrapper.
19695
19696 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
19697
19698         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
19699
19700         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
19701
19702         * mempool.c (mono_mempool_alloc): Speed this up a bit.
19703         (mono_mempool_alloc0): Ditto.
19704
19705 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19706
19707         * socket-io.c:
19708         (create_object_from_sockaddr): it was allocating 4 extra bytes
19709         for the AF_UNIX data. Fixes bug #77747.
19710
19711 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
19712
19713         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
19714
19715 2006-03-09  Dick Porter  <dick@ximian.com>
19716
19717         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
19718         Fixes bug 76966 again.
19719
19720 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
19721
19722         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
19723         names from r57532
19724         * appdomain.c: Bumped corlib version to 48 (due to r57532)
19725
19726 2006-03-07  Martin Baulig  <martin@ximian.com>
19727
19728         * object.c
19729         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
19730
19731 2006-03-07  Martin Baulig  <martin@ximian.com>
19732
19733         * class.c
19734         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
19735         regression introduced in r56970; see gtest-252.cs.
19736
19737         * loader.c (mono_get_method_constrained): Correctly handle generic
19738         methods; see gtest-253.cs.
19739
19740 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
19741
19742         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
19743
19744 2006-03-04  Martin Baulig  <martin@ximian.com>
19745
19746         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
19747         compute the parent type at runtime, just like we're already doing
19748         it for interfaces.
19749
19750         * reflection.c
19751         (mono_reflection_bind_generic_parameters): Don't compute the
19752         parent type anymore.
19753
19754         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
19755
19756 2006-03-04  Martin Baulig  <martin@ximian.com>
19757
19758         * mono-debug-debugger.h
19759         (mono_debugger_create_notification_function): Allocate memory at
19760         runtime and return a pointer to it.
19761
19762 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
19763
19764         * assembly.c: Fix windows build.
19765         
19766         * assembly.c: Fix build.
19767
19768         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
19769
19770         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
19771         
19772 2006-03-03  Dick Porter  <dick@ximian.com>
19773
19774         * process.c
19775         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
19776         Check parameters before dereferencing them.  Fixes Aaron's part of
19777         bug 77393.
19778
19779 2006-03-03  Raja R Harinath  <rharinath@novell.com>
19780
19781         Fix performance regression.
19782         * loader.c (find_method_in_class): Add 'from_class' argument.
19783         Rename 'klass' argument to 'in_class'.  The signature is compared
19784         against the method in 'in_class', and the corresponding method is
19785         returned from 'from_class'.
19786         (find_method): Walk both 'in_class' and 'from_class' in parallel.
19787         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
19788         type definition and generic instantiation in parallel.
19789         (mono_get_method_constrained): Update to changes.
19790
19791 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
19792
19793         * threads.c: make sure the domain is correct, too when doing
19794         mono_thread_attach ().
19795
19796 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
19797
19798         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
19799         windows. Fixes #77683.
19800
19801 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
19802
19803         * object.h, *: introduced specific way to set elements of an array
19804         of references to be used as write barrier. Still need to audit the
19805         uses of mono_array_addr.
19806
19807 2006-03-01  Miguel de Icaza  <miguel@novell.com>
19808
19809         * object-internals.h: New field to cache the assmebly name, patch
19810         from Tambet Ingo (tambet@ximian.com)
19811
19812 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
19813
19814         * decimal.h, class-internals.h, metadata-internals.h,
19815         file-io.h: mark a few function declarations as internal, to
19816         reduce the number of PLT entries.
19817
19818 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19819
19820         * file-io.c: fix typo in warning message.
19821
19822 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
19823
19824         * loader.c: on unix, lookup the "*A" version of a function
19825         if charset is auto as a second option before failing.
19826
19827 2006-02-28  Raja R Harinath  <rharinath@novell.com>
19828
19829         * class.h (mono_class_inflate_generic_method): Revert to two
19830         argument version.
19831         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
19832         (mono_class_inflate_generic_method_full): Add.
19833         * class.c (mono_class_inflate_generic_method_full): Rename from
19834         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
19835         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
19836         * loader.c, reflection.c: Update to changes.
19837
19838 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
19839
19840         * icall.c: const fixes and small improvements.
19841
19842 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19843
19844         * threadpool.c: for asynchronous connect(), enable the same workaround
19845         for BSD 6 as for the Mac. Fixes bug #77637.
19846
19847 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
19848
19849         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
19850         formatted classes. Fixes #77524.
19851
19852 2006-02-24  Raja R Harinath  <rharinath@novell.com>
19853
19854         * class.c (inflate_generic_type): Add a couple more
19855         micro-optimizations.
19856         (inflate_generic_context): Don't use the 'gmethod' from
19857         'inflate_with'.
19858         (mono_class_inflate_generic_method): If the method has generic
19859         parameters, but the passed-in context doesn't have a 'gmethod',
19860         create one.  Use the possibly simplified generic instantiation
19861         from the declaring class instead of the one passed in.
19862
19863 2006-02-24  Raja R Harinath  <harinath@gmail.com>
19864
19865         Make generic method signature and method header handling lazy.
19866         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
19867         (inflate_generic_header): Likewise.
19868         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
19869         parameter to avoid inflating types.
19870         (mono_get_inflated_method): Empty out.
19871         * class.h (mono_class_inflate_generic_method): Update to changes.
19872         * loader.c (mono_get_method_from_token): Don't parse signature for
19873         generic methods, nor methods of generic classes.
19874         (mono_method_signature): Rename from 'mono_method_signature'.
19875         Inflate signature on demand.
19876         (mono_method_get_header): Inflate method header on demand.
19877         * reflection.c: Update to changes.
19878
19879 2006-02-23  Raja R Harinath  <rharinath@novell.com>
19880
19881         * metadata.c (mono_metadata_inflate_generic_inst): If the
19882         instantiation is closed, don't bother expanding it in the new
19883         context.
19884         * class.c (inflate_generic_class): If the generic instantiation
19885         doesn't change after inflation, return the argument itself.
19886         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
19887         Add bounds checks.
19888         (inflate_generic_context): If neither the generic class nor the
19889         generic method instantiations change, return the original context.
19890         * reflection.c (mono_method_get_object): Do
19891         'mono_get_inflated_method' before accessing the ->klass field.
19892         (inflate_mono_method): Don't create a MonoGenericMethod unless
19893         necessary.
19894         (inflate_method): Don't pass a constructed type as the declaring
19895         type of a methodbuilder.
19896
19897 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
19898
19899         * object.c: fix memory overwrite.
19900
19901 2006-02-22  Dick Porter  <dick@ximian.com>
19902
19903         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
19904         it doesn't work any more.
19905         (mono_threads_request_thread_dump): Fix unused variable warnings.
19906
19907 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
19908
19909         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
19910         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
19911         the public header file.
19912
19913 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
19914
19915         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
19916
19917 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
19918
19919         * class-internals.h, object.c: reduce the size of MonoVTable
19920         and store the interface_offsets array at negative offsets.
19921
19922 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
19923
19924         * metadata.c: tweak table descriptors data structures to reduce
19925         size and runtime relocations.
19926
19927 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
19928
19929         * marshal.c: fix some types and opcodes to be type-safe
19930         in marshaling wrappers.
19931
19932 2006-02-21  Ankit Jain  <jankit@novell.com>
19933
19934         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
19935
19936 2006-02-21  Raja R Harinath  <rharinath@novell.com>
19937
19938         * metadata.c (get_constraints): Relax debugging checks for monodis.
19939
19940 2006-02-21  Ankit Jain  <jankit@novell.com>
19941
19942         * metadata.c (mono_metadata_load_generic_params): Move the code
19943         checking for ambiguous generic params from here to mono/dis/get.c
19944         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
19945
19946 2006-02-21  Raja R Harinath  <harinath@gmail.com>
19947
19948         Fix assertion triggered when compiling nemerle.
19949         * class.c (mono_get_shared_generic_inst): Rename from
19950         get_shared_inst and make non-static.
19951         * loader.c (mono_get_shared_generic_method): New.  Used to create
19952         the MonoGenericContext-equivalent of a MonoGenericContainer.
19953         (mono_get_method_from_token): Initialize the 'context' field of
19954         the created MonoGenericContainer.
19955         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
19956         * metadata.c (get_constraints): Add sanity check.
19957         * class-internals.h: Add new internal methods.
19958
19959         * reflection.c (verify_safe_for_managed_space): New sanity check.
19960         Currently checks that owner-less generic parameters aren't allowed
19961         in managed space.
19962         (mono_type_get_object): Use it.
19963         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
19964         that are now in mono_type_get_object.
19965         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
19966
19967 2006-02-19  Raja R Harinath  <harinath@gmail.com>
19968
19969         * metadata.c (mono_type_create_from_typespec): Rename from
19970         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
19971         argument and caching of types in the generic container.
19972         (unwrap_arrays, find_generic_param): Remove.
19973         * metadata-internals.h: Update.
19974         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
19975
19976 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
19977
19978         * class.c (mono_class_get_exception_for_failure): Fix a warning.
19979
19980         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
19981         return values. Fixes #77581.
19982
19983         * class.c (mono_fnptr_class_get): Switch name and name_space.
19984
19985         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
19986         classes and add support for [In, Out] attributes.
19987         (mono_marshal_free_asany): Ditto. Fixes #77524.
19988
19989 2006-02-18  Raja R Harinath  <harinath@gmail.com>
19990
19991         * class.c (mono_class_from_generic_parameter): Make more robust to
19992         incomplete MonoGenericContainers from monodis.
19993
19994 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
19995
19996         * class-internals.h: added some more exception types.
19997         * class.c, metadata.c: added a few checks to handle missing
19998         types.
19999
20000 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20001
20002         Use owner-less generic-params some more.
20003         * class.c (my_mono_class_from_generic_parameter): Remove.
20004         (mono_class_from_generic_parameter): Handle null image,
20005         param->name and param->owner.
20006         (mono_class_from_mono_type): Update.
20007         (mono_class_create_from_typespec): Remove 'container' parameter.
20008         If that parameter is non-null, the result is always inflated by
20009         'mono_class_get_full' anyway.
20010         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20011         parameter.
20012         (mono_class_get_full): Update.
20013
20014         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20015         instance is not open, don't bother inflating.
20016         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20017         parse metadata for inflated classes.
20018         (_mono_class_get): Change GenericContext* parameter to
20019         GenericContainer*.
20020         (mono_class_create_from_typespec): Likewise.  Simplify, and
20021         implement trivially.  All the cases are handled in
20022         mono_class_from_mono_type.  Don't inflate returned class.
20023         (mono_class_get_full): Delegate GENERICINST optimization to
20024         inflate_generic_type.
20025         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20026
20027 2006-02-16  Dick Porter  <dick@ximian.com>
20028
20029         * socket-io.c (create_object_from_sockaddr): Fix typo.
20030         (create_sockaddr_from_object): Check array lengths before
20031         potentially accessing items off the end.
20032         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20033         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20034         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20035         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20036         length checks to avoid wraparound overflows.
20037         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20038         contents of the array of sockets
20039         (hostent_to_IPHostEntry2)
20040         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20041         Check return value of inet_ntop ().
20042         (addrinfo_to_IPHostEntry): Fix typo
20043
20044 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20045
20046         Type metadata parsing doesn't use generic-instantiation information.
20047         * metadata.c (mono_metadata_parse_array_full): Change
20048         MonoGenericContext* parameter to MonoGenericContainer*.
20049         (mono_metadata_parse_type_full): Likewise.
20050         (mono_type_create_from_typespec_full): Likewise.
20051         (mono_metadata_parse_mh_full): Likewise.
20052         (mono_metadata_parse_generic_inst): Likewise.
20053         (do_mono_metadata_parse_generic_class): Likewise.
20054         (do_mono_metadata_parse_type): Likewise.
20055         * metadata-internals.h: Update to changes.
20056         * class.c (mono_class_find_enum_basetype): Likewise.
20057         (mono_class_setup_fields): Likewise.
20058         (mono_class_create_from_typespec): Likewise.
20059         * loader.c (method_from_methodspec): Likewise.
20060         (mono_get_method_from_token): Likewise.
20061         (mono_method_get_header): Likewise.
20062
20063 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20064
20065         * marshal.c: handle additional GENERICINST case (patch from
20066         Thong Nguyen <tum@veridicus.com>).
20067         Fix a few cases where LDIND_I/STIND_I was used for references.
20068
20069 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20070
20071         * reflection.c (mono_reflection_get_token): Remove unused variable.
20072
20073 2006-02-16  Martin Baulig  <martin@ximian.com>
20074
20075         * reflection.c (mono_reflection_get_token): Add support for fields
20076         in instantiated generic types.
20077
20078         * icall.c
20079         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20080
20081 2006-02-15  Martin Baulig  <martin@ximian.com>
20082
20083         * icall.c
20084         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20085         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20086         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20087         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20088
20089 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20090
20091         * class.c, metadata.c, metadata.h, object.c, icall.c,
20092         marshal.c: changed mono_type_get_underlying_type () to do
20093         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20094         Fixed handling of instantiated generic valuetypes (bug #75479).
20095
20096 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20097
20098         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20099         Delegate to mono_metadata_decode_value, and work on the returned value.
20100
20101         * icall.c (ves_icall_MonoType_GetGenericArguments):
20102         Add consistency check here too.
20103         
20104 2006-02-15  Ankit Jain  <jankit@novell.com>
20105
20106         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20107         char/short etc.
20108
20109 2006-02-15  Ankit Jain  <jankit@novell.com>
20110
20111         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20112         signed values, used only for representing lower bounds of arrays.
20113         (mono_metadata_parse_array_full): Use new
20114         mono_metadata_decode_signed_value to decode lower bounds.
20115
20116 2006-02-14  Martin Baulig  <martin@ximian.com>
20117
20118         * reflection.c
20119         (mono_reflection_get_token): Support "MonoGenericMethod" and
20120         "MonoGenericCMethod" and allow generic instances / methods.
20121
20122 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20123
20124         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20125         to obtain the terminal size using an ioctl.
20126
20127         * object.c (mono_nullable_init): Revert this as nullable reference
20128         types are not valid.
20129         (mono_nullable_box): Ditto.
20130
20131 2006-02-09  Dick Porter  <dick@ximian.com>
20132
20133         * threads.c (mono_thread_detach): Drop a reference to the thread
20134         we're detaching.
20135
20136 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20137
20138         * object.c (mono_nullable_init): Handle nullable reference types.
20139         (mono_nullable_box): Ditto. Fixes #77446.
20140
20141 2006-02-07  Martin Baulig  <martin@ximian.com>
20142
20143         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20144
20145 2006-02-07  Ankit Jain  <jankit@novell.com>
20146
20147         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20148         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20149         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20150         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20151         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20152         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20153
20154 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20155
20156         * class.c (mono_class_create_generic): Set type_token as well.
20157
20158         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20159         compatible with MS.
20160
20161 2006-02-02  Martin Baulig  <martin@ximian.com>
20162
20163         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20164         has never been used so far.
20165
20166 2006-02-02  Martin Baulig  <martin@ximian.com>
20167
20168         * mono-debug-debugger.h: Changed comment at the top of this file;
20169         the header is not installed, but it's safe to #include it from
20170         within the JIT.
20171
20172         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20173         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20174
20175 2006-02-02  Martin Baulig  <martin@ximian.com>
20176
20177         * mono-debug.h
20178         (MonoSymbolTable): Removed the `metadata_info' field.
20179
20180         * mono-debug.c
20181         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20182
20183         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20184         (mono_debugger_add_builtin_types): Removed.
20185         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20186         (mono_debugger_create_notification_function): We now operate on a
20187         pre-allocated area; take a `gpointer' and return `void'.
20188
20189         * mono-debug-debugger.c
20190         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20191         (mono_debugger_add_builtin_types): Removed.
20192
20193 2006-02-02  Martin Baulig  <martin@ximian.com>
20194
20195         * threads.c (mono_debugger_create_all_threads): New public method.
20196
20197 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20198
20199         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20200         breaks on several platforms.
20201
20202 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20203
20204         * assembly.c: the VS.NET build doesn't supply default values for
20205         MONO_ASSEMBLIES and MONO_CFG_DIR.
20206
20207 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20208
20209         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20210         helper function.
20211
20212         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20213
20214         * loader.c (method_from_memberref): Fix a warning.
20215
20216         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20217
20218         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20219         with explicit layout. Fixes #77433.
20220
20221 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20222
20223         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20224         max_interface_id is initialized before using it. Fixes #77398.
20225         (ves_icall_Type_GetInterfaces): Ditto.
20226
20227 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20228
20229         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20230         allocate memory for parameter attributes when parsing memberref
20231         signatures.
20232         * loader.c (mono_loader_set_error_method_load): Don't warn.
20233         (method_from_memberref): Ensure MissingMethodException gets thrown
20234         if method is not found.  Make warning more informative.
20235
20236 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20237
20238         Fix #77397
20239         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20240         return true if is byref.
20241         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20242         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20243         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20244
20245 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20246
20247         Fix tests/find-method.2.il
20248         * loader.c (find_method, find_method_in_class): Remove is_inflated
20249         argument.  Revert 2006-01-18 change.
20250         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20251         is generic, search for method in its generic definition.
20252         * class.c (mono_class_setup_vtable_general): Print generic
20253         arguments of generic types in debugging printf.
20254
20255 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20256
20257         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20258
20259         * threads.c (mono_threads_request_thread_dump): New helper function.
20260
20261 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20262
20263         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20264
20265 2006-01-25  Ankit Jain  <jankit@novell.com>
20266
20267         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20268         move definition to ..
20269         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20270         
20271 2006-01-25  Ankit Jain  <jankit@novell.com>
20272             Raja R Harinath  <rharinath@novell.com>
20273
20274         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20275         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20276         as necessary.
20277
20278 2006-01-25  Martin Baulig  <martin@ximian.com>
20279
20280         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20281         `MonoDebuggerThread' into debug-debugger.c.
20282
20283 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20284
20285         * profiler.c: fix printing of data.
20286
20287 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20288
20289         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20290           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20291
20292 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20293
20294         * object.c: fix deadlock related to string interning.
20295
20296 2006-01-23  Martin Baulig  <martin@ximian.com>
20297
20298         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20299
20300         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20301
20302 2006-01-23  Martin Baulig  <martin@ximian.com>
20303
20304         * mono-debug.h: Moved the prototypes of some functions which are
20305         used by the JIT here from mono-debug-debugger.h.
20306
20307 2006-01-21  Martin Baulig  <martin@ximian.com>
20308
20309         * Makefile.am: Don't install mono-debug-debugger.h.
20310
20311 2006-01-21  Martin Baulig  <martin@ximian.com>
20312
20313         * mono-debug-debugger.h: Enforce the private status of this header
20314         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20315         Moved some stuff from mono-debugger-jit-wrapper.h here.
20316
20317 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20318
20319         * class.c (mono_class_from_typeref): Add a sanity test to help
20320         catch lack of assembly load/search hooks.
20321
20322 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20323
20324         * marshal.c (emit_struct_conv): Relax the fields with same offset
20325         check even more. Fixes #77230.
20326
20327 2006-01-18  Martin Baulig  <martin@ximian.com>
20328
20329         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20330         argument; if false, we compare the uninstantiated signatures.
20331         (method_from_memberref): Compare the uninstantiated signatures;
20332         fixes #76417.
20333
20334 2006-01-18  Robert Jordan  <robertj@gmx.net>
20335
20336         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20337         Clear the weak link. Fixes bug #77170.
20338
20339         * gc.c (mono_gchandle_free):
20340         Reflect *-gc.c changes (tiny optimization).
20341
20342 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20343
20344         * metadata.c (mono_metadata_signature_dup): Applied patch from
20345         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20346         Fixes #77288.
20347
20348 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20349
20350         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20351         marshalling from native to managed code. Fixes #77230.
20352
20353 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20354
20355         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20356         connect. Fixes bug #77020.
20357
20358 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
20359
20360         * class.c: fixed id assignement for nested interfaces (bug #77275).
20361         Added also better info for --print-vtable debugging.
20362
20363 2006-01-12  Martin Baulig  <martin@ximian.com>
20364
20365         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
20366         interfaces on-the-fly; fixes #76625.
20367
20368         * class-internals.h
20369         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
20370         don't need that anymore.
20371
20372 2006-01-12  Miguel de Icaza  <miguel@novell.com>
20373
20374         * socket-io.c
20375         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20376         To avoid initing the nested_classes when not needed I turned the
20377         PeerCredData as a toplevel internal class, as it has to be shared
20378         anyways. 
20379
20380         Fixes the CASA issue.
20381
20382 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
20383
20384         * domain.c: Accessors for MonoJitInfo
20385
20386         * profiler-private.h: Add jitinfo to the end jit hook
20387
20388         * profiler.[ch]: Define new hooks, called after jitting which give
20389         the MonoJitInfo that was compiled
20390
20391 2006-01-10  Martin Baulig  <martin@ximian.com>
20392
20393         * class.c (mono_class_setup_events): Add support for generic
20394         classes; fixes #76440.
20395
20396 2006-01-06  Raja R Harinath  <rharinath@novell.com>
20397
20398         Fix #77160.
20399         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
20400         on passed-in method.
20401
20402 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20403
20404         * object.c (mono_runtime_invoke_array): Add Nullable support.
20405
20406         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
20407
20408 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
20409
20410         * file-io.c: Don't consider sockets as directory and avoid an endless
20411         loop. Fix bug #76966.
20412
20413 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
20414
20415         * object.c (mono_nullable_init): New helper function.
20416         (mono_nullable_box): Ditto.
20417
20418         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
20419
20420         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
20421
20422         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
20423         
20424 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
20425
20426         * class.c (mono_class_is_assignable_from): Make T assignable to 
20427         Nullable<T>.
20428
20429 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
20430
20431         * appdomain.c: Bump corlib version to 46.
20432         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
20433         serialization purpose) and changed ves_icall_System_Reflection_
20434         Assembly_get_code_base signature to accept a boolean (to escape, or 
20435         not, the assembly code base).
20436
20437 2005-12-23  Dick Porter  <dick@ximian.com>
20438
20439         * icall.c: 
20440         * threads-types.h: 
20441         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
20442         CreateEvent icall now returns "created" boolean parameter.
20443
20444 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
20445
20446         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
20447         #76967.
20448
20449         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
20450         when attr_klass is an interface. Fixes #77045.
20451
20452 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
20453
20454         * marshal.c (emit_struct_conv): Fix previous patch.
20455         
20456         * marshal.c (emit_struct_conv): Add a check for fields with the same
20457         offset.
20458
20459 2005-12-20  Raja R Harinath  <rharinath@novell.com>
20460
20461         Fix regression in Mono.C5.
20462         * class.c (mono_class_create_generic): If 'klass' is an interface
20463         set up the interface offsets.
20464         (mono_class_is_assignable_from): Don't throw away generic arguments.
20465
20466 2005-12-19  Raja R Harinath  <rharinath@novell.com>
20467
20468         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
20469         type parameters.
20470
20471 2005-12-15  Raja R Harinath  <rharinath@novell.com>
20472
20473         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
20474         dead store.
20475         (do_mono_metadata_parse_generic_class): Don't pass the current
20476         generic context when parsing the type being instantiated: it
20477         cannot use it, anyway.
20478
20479         * loader.c (method_from_memberref): Don't inflate a signature if
20480         it doesn't contain any type parameters.
20481
20482 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
20483
20484         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
20485
20486 2005-12-14  Martin Baulig  <martin@ximian.com>
20487
20488         * class.c
20489         (mono_type_get_name_recurse): Don't return null for type
20490         parameters and open generic classes.
20491         (mono_class_setup_methods): Don't exclude generic instances.
20492         (mono_get_unique_iid): Use different IDs for different
20493         instantiations of the same generic type.
20494         (mono_class_setup_vtable): Only use setup_generic_vtable() for
20495         open generic instances; create a normal vtable for closed generic
20496         instances.
20497         (mono_class_setup_vtable_general): We're now also called for
20498         closed generic instances.
20499
20500         * reflection.c
20501         (mono_reflection_bind_generic_parameters): Correctly use
20502         mono_metadata_lookup_generic_inst() everywhere.
20503
20504 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
20505
20506         * object.c (mono_class_create_runtime_vtable): Call 
20507         mono_class_setup_vtable ().
20508
20509         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
20510         function.
20511         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
20512         #76959.
20513
20514         * loader.c (mono_loader_set_error_type_load): Print the type load
20515         warnings to the console so they are more visible to the user.
20516         (mono_loader_set_error_method_load): Ditto.
20517
20518         * reflection.c (ensure_runtime_vtable): Revert the last change as it
20519         is still broken.
20520         
20521         * reflection.c (ensure_runtime_vtable): Fix build.
20522
20523         * reflection.c (ensure_runtime_vtable): Disable an optimization which
20524         doesn't work in all cases.
20525
20526 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
20527
20528         * object.c (mono_array_new_full): Treat a single dimensional array
20529         with 0 lower bounds as an szarray. Fixes #76973.
20530
20531         * reflection.c (custom_attr_visible): Really fix this.
20532
20533 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
20534
20535         * reflection.c (custom_attr_visible): Allow nested public attributes
20536         as well.
20537
20538         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
20539         interface check.
20540
20541 2005-12-12  Raja R Harinath  <harinath@gmail.com>
20542
20543         * class.c (set_generic_param_owner): Delete.
20544         (mono_class_create_from_typedef): Don't set ->owner field of
20545         generic parameters to "param containers" of enclosing classes.
20546         * reflection.c (mono_reflection_initialize_generic_parameter):
20547         Likewise.
20548
20549 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
20550
20551         * reflection.c (custom_attr_visible): Fix build.
20552
20553 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
20554
20555         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
20556         private attributes.
20557         
20558         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
20559         handling of null parameter defaults.
20560
20561 2005-12-09  Raja R Harinath  <rharinath@novell.com>
20562
20563         * class.c (mono_class_from_generic_parameter): Don't set
20564         klass->generic_container.
20565         (my_mono_class_from_generic_parameter): Likewise.
20566
20567 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
20568
20569         * reflection.c (load_public_key): Fix a warning.
20570         (method_encode_code): Fix unaligned accesses.
20571
20572 2005-12-07  Martin Baulig  <martin@ximian.com>
20573
20574         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
20575
20576         * reflection.c
20577         (write_generic_param_entry): Encode our custom attrs.
20578
20579         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
20580
20581 2005-12-07  Martin Baulig  <martin@ximian.com>
20582
20583         * reflection.c (encode_new_constraint): Removed; we don't use the
20584         `NewConstraintAttribute' anymore.
20585
20586 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
20587
20588         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
20589         not fire a TypeResolve event when Assembly.GetType () is called.
20590
20591 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
20592
20593         Beginning of support for nullable types in the runtime. Parts of
20594         this patch are from Martin.
20595
20596         * appdomain.c (MONO_CORLIB_VERSION): Bump
20597
20598         * domain.c (mono_init_internal): get the nullable type
20599
20600         * class.c (mono_class_is_nullable): New method
20601         (mono_class_get_nullable_param): New mehod
20602         (mono_class_create_generic): In types T? set cast_class to T
20603
20604         * class-internals.h (MonoDefaults): new nullable default class
20605         (mono_class_get_nullable_param, mono_class_get_nullable_param):
20606         new methods.
20607
20608 2005-12-05  Raja R Harinath  <rharinath@novell.com>
20609
20610         * metadata.c (select_container): New.  Refactor code to select the
20611         appropriate GenericContainer given the type of generic parameter
20612         we are looking for.
20613         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
20614         not a MonoGenericContext.  Use select_container.  Update parameters.
20615         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
20616         and MONO_TYPE_MVAR.
20617         (unwrap_arrays): Remove duplicate tests.
20618         (find_generic_param): Rename from 'has_same_context'.  Now walks a
20619         generic instantiated class to find any arguments that are generic
20620         parameters.
20621         (mono_type_create_from_typespec_full): Use find_generic_param to
20622         avoid evicting some generic instantiations from the typespec
20623         cache.
20624
20625 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
20626
20627         * reflection.c: fixed writing of doubles on ARM FPA.
20628
20629 2005-12-02  Robert Jordan  <robertj@gmx.net>
20630
20631         * icall.c: Fixed EventInfo.ReflectedType (#76829).
20632
20633 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20634
20635         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
20636         least on SUSE 10 they are not the same (on debian, they are just the
20637         same thing).
20638
20639 2005-12-01  Raja R Harinath  <rharinath@novell.com>
20640
20641         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
20642         DeclaringType for VARs and MVARs.
20643         * class.c (set_generic_param_owner): Fix initialization of owner
20644         fields.
20645
20646 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
20647
20648         * icall.c: fixed Enum.ToObject() to correctly convert the values.
20649
20650 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20651
20652         * threadpool.c: workaround for a bug that shows up on the Mac:
20653         select()+connect() on a blocking socket is not like it should
20654         be, so we proceed to connect() in that case, wasting the I/O
20655         threadpool thread until connect succeedes. Fixes bug #75436.
20656
20657 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20658
20659         * threadpool.c: fix typo when setting file descriptor states.
20660
20661 2005-11-28  Raja R Harinath  <rharinath@novell.com>
20662
20663         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
20664         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20665         create a temporary signature container.
20666         (mono_metadata_parse_generic_param): Update to changes.
20667         (mono_type_create_from_typespec_full): Update to changes.
20668         * loader.c (method_from_memberref): Don't use a
20669         MonoGenericContainer while parsing a memberref signature.
20670         (method_from_methodspec): Remove dead-store of the 'container'
20671         variable.  It's overwritten before use.
20672
20673         * metadata.c (mono_type_create_from_typespec_full): Make debugging
20674         checks tighter.
20675         (mono_metadata_parse_generic_param): Likewise.
20676         * loader.c (find_method_in_class): Does not need a
20677         MonoGenericContainer.  Use 'mono_method_signature' rather than
20678         'mono_method_signature_full'.
20679         (find_method, mono_get_method_constrained, method_from_memberref):
20680         Update to changes.
20681
20682         * metadata.c (mono_type_create_from_typespec_full): Ensure that
20683         owner-less generic-parameters are never evicted from the typespec
20684         cache.
20685
20686         * loader.c (method_from_memberref): Don't use the current context
20687         when parsing signatures.
20688         (method_from_methodspec, mono_get_method_from_token): Update to changes.
20689
20690         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
20691         side-effects in g_assert.
20692         * loader.c (mono_get_method_from_token): Resolve klass earlier so
20693         that we don't potentially lose information.
20694
20695 2005-11-26  Dick Porter  <dick@ximian.com>
20696
20697         * icall.c:
20698         * threads.c: icalls to implement basic (ie, not named)
20699         System.Threading.Semaphore.
20700
20701 2005-11-24  Dick Porter  <dick@ximian.com>
20702
20703         * process.c
20704         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20705         Use GetProcessId() if it's available.
20706
20707 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
20708
20709         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
20710
20711 2005-11-23  Raja R Harinath  <rharinath@novell.com>
20712             Ankit Jain  <jankit@novell.com>
20713
20714         * loader.c (mono_get_method_from_token): Initialize 'method' field
20715         of all generic parameters before parsing the signature.  Remove
20716         code that "fixed"-up MVAR references.
20717
20718 2005-11-23  Ankit Jain  <jankit@novell.com>
20719
20720         * metadata.c (mono_metadata_has_generic_params):
20721         (mono_metadata_load_generic_param_constraints):
20722         (mono_metadata_load_generic_params): Move duplicate code ...
20723         (mono_metadata_get_generic_param_row): ... here. Returns the
20724         first row-id in GenericParam table for a given owner (token).
20725         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
20726         prototype.
20727
20728 2005-11-23  Raja R Harinath  <rharinath@novell.com>
20729             Ankit Jain  <jankit@novell.com>
20730
20731         * metadata.c (mono_metadata_class_equal): Pass signature_only when
20732         comparing VARs too.
20733         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
20734         type->data.generic_param only if the type is an MVAR.
20735         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
20736         leak owner-less VARs and MVARs into managed space.
20737
20738 2005-11-21  Martin Baulig  <martin@ximian.com>
20739
20740         * class-internals.h
20741         (MonoMethod): Moved the `generic_container' here from
20742         `MonoMethodNormal' since we now also need it for
20743         `MonoMethodPInvoke';
20744         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
20745         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
20746         an union containing both `MonoMethodNormal' and
20747         `MonoMethodPInvoke'.
20748
20749         * loader.c
20750         (mono_get_method_from_token): Allow implementing generic methods
20751         as interncalls.
20752
20753         * threads.c
20754         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
20755         icall.
20756
20757 2005-11-17  Dick Porter  <dick@ximian.com>
20758
20759         * icall.c: 
20760         * process.h: 
20761         * process.c: Split the Process Start_internal icall into
20762         ShellExecuteEx_internal and CreateProcess_internal, which are
20763         called depending on whether UseShellExecute is true.  Fixes bug
20764         76670.
20765
20766         * appdomain.c (MONO_CORLIB_VERSION): Incremented
20767
20768 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
20769
20770         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
20771         'msize' parameters, use the information in 'mspec' instead.
20772         (emit_object_to_ptr_conv): Ditto.
20773
20774         * marshal.c (emit_struct_conv): Handle explicit layout structs with
20775         fields out of order. Fixes #76733.
20776
20777 2005-11-17  Ankit Jain  <jankit@novell.com>
20778
20779         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
20780
20781 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
20782
20783         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
20784           bug #76575.
20785
20786 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
20787
20788         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
20789         for types with non-auto layout. Fixes #76717.
20790
20791 2005-11-16  Ankit Jain  <jankit@novell.com>
20792
20793         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
20794         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
20795         if generic_context is null.
20796           (mono_metadata_generic_param_equal): param->owner can be null.
20797           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
20798         null.
20799
20800 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
20801
20802         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
20803         the correct value.
20804
20805 2005-11-15  Martin Baulig  <martin@ximian.com>
20806
20807         * object.c (set_value): Use mono_class_from_mono_type() instead of
20808         the hack for generic instances; fixes #76136.
20809
20810 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
20811
20812         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
20813         fields.
20814
20815         * image.c (load_metadata_ptrs): Initialize the new fields.
20816
20817         * reflection.c (create_dynamic_mono_image): Ditto.
20818
20819         * reflection.c (build_compressed_metadata): Use the new fields.
20820
20821         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
20822         icall.
20823
20824         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
20825         icall.
20826         
20827 2005-11-15  Ankit Jain  <jankit@novell.com>
20828             Raja R Harinath  <harinath@gmail.com>
20829
20830         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
20831         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
20832         new per-generic_container cache if the cached MonoType's context matches
20833         the current context.
20834           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
20835         to the expected context.
20836           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
20837
20838 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20839
20840         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
20841         we changed the signature of an icall.
20842         * icall.c: Modify to mono_double_ParseImpl return true/false 
20843         depending on the success, instead of throwing the exception. This will
20844         help us in Double.TryParse methods.
20845         
20846 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
20847
20848         * marshal.c (emit_marshal_object): Throw an exception when
20849         marshalling 'object' instead of crashing. Fixes #76696.
20850
20851 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
20852
20853         * class-internals.h: Add prototype for mono_type_get_full_name ().
20854
20855 2005-11-11  Dick Porter  <dick@ximian.com>
20856
20857         * threads.c (mono_thread_manage): Make sure the main thread has
20858         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
20859
20860 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
20861
20862         * loader.c (mono_loader_set_error_type_load): Log a warning to the
20863         console about the missing type.
20864         (mono_loader_set_error_method_load): Ditto.
20865
20866 2005-11-09  Miguel de Icaza  <miguel@novell.com>
20867
20868         * mono-config.c (mono_get_config_dir): Set the system defaults if
20869         none is specified.
20870
20871         * assembly.c (mono_set_dirs): New API entry point to set the
20872         assembly and the config directory in one call
20873
20874 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
20875
20876         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
20877         the ftnptr was created from a delegate in a domain other than the
20878         current domain. Fixes #75377.
20879
20880         * exception.h exception.c: Add mono_get_exception_not_supported ().
20881
20882 2005-11-08  Martin Baulig  <martin@ximian.com>
20883
20884         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
20885
20886 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
20887
20888         * security-manager.h: Added definitions to deal with strongname key 
20889         pairs bigger (and smaller) than 1024 bits.
20890         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
20891         adjust wrt the public key length being used.
20892
20893 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
20894
20895         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
20896           Windows build (r51396-51397).
20897
20898 2005-11-03  Martin Baulig  <martin@ximian.com>
20899
20900         * class.c (mono_class_setup_vtable_general): Also add generic
20901         methods to the vtable; fixes #76581.
20902
20903 2005-11-01  Miguel de Icaza  <miguel@novell.com>
20904
20905         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
20906         sure that we lookup GetString method from the System.Text.Encoding
20907         class, not the derived class or we get an empty method.
20908
20909         Fixed class #76612.
20910
20911 2005-10-25  Miguel de Icaza  <miguel@novell.com>
20912
20913         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
20914         if it has been previously set (embedders). 
20915
20916         Make mono_set_rootdir available also on Unix.
20917
20918 005-10-24  Robert Jordan  <robertj@gmx.net>
20919
20920         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
20921
20922 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
20923
20924         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
20925         only calls which are made to native code use this flag.
20926
20927         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
20928
20929 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
20930
20931         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
20932         Add support for FieldBuilders.
20933
20934 2005-10-29  Martin Baulig  <martin@ximian.com>
20935
20936         * mono-debug.c
20937         (mono_debug_using_mono_debugger): New public method; returns
20938         whether we're running inside the debugger.
20939
20940 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
20941
20942         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
20943         for Method/Constructor/FieldBuilders.
20944
20945 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
20946
20947         * reflection.c (module_add_cattrs): Save custom attributes for global methods
20948         and fields as well.
20949
20950 2005-10-26  Martin Baulig  <martin@ximian.com>
20951
20952         * mono-debug-debugger.c
20953         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
20954
20955 2005-10-24  Raja R Harinath  <harinath@gmail.com>
20956
20957         * icall.c (base64_to_byte_array): Don't pass an out-of-range
20958         integer to isspace.
20959
20960 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
20961
20962         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
20963         when passing valuetypes byref. Fixes #76502.
20964
20965 2005-10-19  Jackson Harper  <jackson@ximian.com>
20966
20967         * profiler.c: Don't put a . in front of types that are not in a
20968         namespace.
20969
20970 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
20971
20972         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
20973
20974 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
20977         #76436.
20978         (mono_marshal_get_ldflda_wrapper): Fix a warning.
20979
20980 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20981
20982         * assembly.c metadata-internals.h icall.c: Define an additional
20983         parameter for mono_assembly_name_parse_full, so we can avoid creating
20984         S.R.AssemblyName.Version when no version info wasn't passed.
20985         
20986 2005-10-09  Miguel de Icaza  <miguel@novell.com>
20987
20988         * class.c (mono_type_get_full_name): Reimplement method that was
20989         removed. 
20990
20991         * image.c: Some docs
20992
20993 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
20994
20995         * profiler.c (output_newobj_profile): Fix printing of Total memory
20996         on x86.
20997
20998 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
20999
21000         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21001
21002 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21003
21004         * threads.c: remove debug output.
21005
21006 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * threads.c (mono_thread_manage): Fix crashes if more than 64
21009         threads need to be aborted. Hopefully fixes #75899.
21010
21011         * assembly.c (mono_stringify_assembly_name): New helper function.
21012
21013         * class.c: Use mono_stringify_assembly_name instead of the similar
21014         static function.
21015
21016         * assembly.h assembly.c: Add support for calling a postload search 
21017         hook if an assembly cannot be loaded.
21018
21019         * appdomain.c: Register new search hooks which call the AssemblyResolve
21020         events in AppDomain. Fixes #75231
21021
21022 2005-10-07  Martin Baulig  <martin@ximian.com>
21023
21024         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21025         methods without debug info.
21026
21027 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21028
21029         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21030         wrappers.
21031
21032 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21033
21034         * file-io.c: now that we return symlinks, use lstat and, when the file
21035         is a symbolic link, stat, to get the file attributes. Also avoid the
21036         conversion to/from utf16/external.
21037
21038 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21039
21040         * class.c (mono_class_layout_fields): Compute klass->has_references
21041         correctly if an embedded valuetype is not yet initialized. Fixes
21042         #76331.
21043
21044 2005-10-04  Martin Baulig  <martin@ximian.com>
21045
21046         * metadata.c
21047         (mono_metadata_load_generic_param_constraints): New public
21048         function; splitted the constraints loading out from
21049         mono_metadata_load_generic_params().
21050
21051         * class.c (mono_class_create_from_typedef): Call
21052         mono_metadata_load_generic_param_constraints() after setting up
21053         the type and creating our parent; fixes #75329.
21054
21055 2005-10-04  Martin Baulig  <martin@ximian.com>
21056
21057         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21058         non-dynamic parent classes.
21059
21060 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21061
21062         * file-io.c : win32 build fix (ETXTBSY seems not found).
21063
21064 2005-10-04  Martin Baulig  <martin@ximian.com>
21065
21066         * reflection.c
21067         (mono_image_get_methodspec_token): Make the cache actually work;
21068         fixes #75974.
21069
21070 2005-10-04  Martin Baulig  <martin@ximian.com>
21071
21072         * class.c (mono_class_name_from_token): Removed the unneccessary
21073         `MonoGenericContext *' argument.
21074
21075 2005-10-04  Martin Baulig  <martin@ximian.com>
21076
21077         * loader.c
21078         (method_from_methodspec): Make the caching work again; fixes the
21079         performance regression from #76262.
21080
21081 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21082
21083         * file-io.c:
21084         * file-io.h:
21085         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21086         GetFileSystemEntries that performs the same work but without going
21087         into io-layer, locking, etc.
21088
21089 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21090
21091         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21092         ThreadState_Stopped as well. Fixes #76047.
21093
21094 2005-09-29  Martin Baulig  <martin@ximian.com>
21095
21096         * class.c
21097         (inflate_generic_context): If the new context has a `gmethod', set
21098         its `container' that that gmethod's `container'.
21099
21100         * metadata.c
21101         (mono_metadata_parse_generic_param): Simplify things;
21102         `generic_container = generic_context->container;' is just fine.
21103
21104         * loader.c (method_from_methodspec): Code cleanups.
21105
21106 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21107
21108         * decimal.c: fix warning (and let gcc generate correct
21109         code on ARM with optimizations).
21110
21111 2005-09-28  Martin Baulig  <martin@ximian.com>
21112
21113         * loader.c
21114         (method_from_memberref): Added `MonoGenericContext *class_context'
21115         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21116         (method_from_methodspec): If we're a memberref, use the enclosing
21117         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21118
21119 2005-09-28  Martin Baulig  <martin@ximian.com>
21120
21121         * object.c (mono_runtime_invoke_array): Added support for
21122         MONO_TYPE_GENERICINST; fixes #75917.
21123
21124 2005-09-27  Martin Baulig  <martin@ximian.com>
21125
21126         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21127         `k->byval_arg.type' to determine the actual type.
21128
21129         * loader.c (method_from_methodspec): Removed some hacks.
21130
21131 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21132
21133         * class-internals.h (mono_field_is_deleted): Do the test for
21134         rtspecialname before we check the actual name of the field. This
21135         prevents us from dereferencing a pointer into the string table,
21136         saving us from accessing a few pages
21137
21138         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21139         macros. This will allow a deadlock debugger to easily be plugged
21140         in.
21141
21142 2005-09-27  Martin Baulig  <martin@ximian.com>
21143
21144         * loader.c (method_from_methodspec): Create a "signature"
21145         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21146
21147 2005-09-27  Martin Baulig  <martin@ximian.com>
21148
21149         * class.c
21150         (inflate_generic_class): Correctly set the new context's
21151         container.
21152
21153         * loader.c
21154         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21155         instead of a `MonoGenericContext *'.
21156         (mono_method_signature_full): Take a `MonoGenericContainer *'
21157         instead of a `MonoGenericContext *'.
21158
21159         * metadata.c
21160         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21161         instead of a `MonoGenericContext *'.
21162         (mono_metadata_parse_method_signature_full): Likewise.
21163
21164 2005-09-26  Martin Baulig  <martin@ximian.com>
21165
21166         * class.c
21167         (mono_class_from_generic_parameter): Set `klass->generic_container'
21168         (mono_class_from_generic_parameter): Likewise.
21169         (mono_bounded_array_class_get): We inherit the generic container
21170         from the element class.
21171
21172         * loader.c
21173         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21174         argument rather than computing it here.
21175         (method_from_memberref): Correctly set the generic context before
21176         parsing the signature.  Fixes #75681.
21177
21178 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21179
21180         * object.c (mono_class_has_special_static_fields): Fix warnings.
21181
21182 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21183
21184         * assembly.c: Add parse_public_key function, to
21185         par the public keys. Also added mono_assembly_name_parse_full,
21186         to define it the parsed key should be freed or not.
21187         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21188         to parse a long format assembly name.
21189         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21190         private, since calling it to preserve the key requires
21191         freeing it manually.
21192         
21193 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21194
21195         * locales.c : removed HAVE_ICU part.
21196
21197 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21200         field_is_special_static if the klass has no special static fields.
21201
21202         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21203         (MonoCachedClassInfo): Likewise.
21204
21205         * object.c (mono_class_has_special_static_fields): New helper function.
21206
21207 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21208
21209         * class.c (mono_class_create_from_typedef): Don't call 
21210         interfaces_from_typedef_full for enums.
21211         (mono_class_create_from_typedef): Compute the base types of enums directly
21212         without calling mono_class_setup_fields ().
21213         (mono_class_find_enum_basetype): New helper function.
21214
21215         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21216         one place inside the string heap.
21217         
21218 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21219
21220         * class.c: locking fixes, code cleanups, some docs added.
21221         Allocate some data structures in the image mempool.
21222
21223 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21224
21225         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21226         the example code.
21227         
21228 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21229
21230         * class-internals.h, class.c, reflection.c: reduce memory taken by
21231         MonoClass.
21232
21233 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21234
21235         * metadata.c, metadata.h, loader.h: documentation updates, code and
21236         API cleanups.
21237
21238 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21239
21240         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21241         the example code.
21242
21243         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21244         page faults caused by the runtime while reading metadata.
21245
21246 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21247
21248         * socket-io.c: the field names were changed 3 months ago and no one
21249         realized until bug #76077 got filed!
21250
21251 2005-09-20  Martin Baulig  <martin@ximian.com>
21252
21253         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21254
21255 2005-09-20  Martin Baulig  <martin@ximian.com>
21256
21257         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21258         write the rank into the class entry.
21259
21260 2005-09-20  Martin Baulig  <martin@ximian.com>
21261
21262         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21263
21264 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21265
21266         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21267
21268         * icall.c (custom_attrs_defined_internal): New icall.
21269
21270         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21271         function.
21272         (mono_custom_attrs_construct_by_type): New helper function.
21273
21274 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21275
21276         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21277         terminate the resulting string. Fixes #76123.
21278
21279 2005-09-16  Martin Baulig  <martin@ximian.com>
21280
21281         * mono-debug.c
21282         (mono_debug_add_method): Ignore inflated methods for the moment.
21283
21284 2005-09-14  Martin Baulig  <martin@ximian.com>
21285
21286         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21287
21288 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21289
21290         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21291         return a success/failure indication.
21292         (mono_metadata_interfaces_from_typedef_full): Ditto.
21293         (get_constraints): Ditto.
21294
21295 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21296
21297         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21298         
21299         * marshal.c (emit_marshal_array): Add support for returning string
21300         arrays from delegates. Fixes #76063.
21301
21302         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21303
21304 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21305
21306         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21307         icall.
21308
21309 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21310
21311         * reflection.c icall.c: Fix after mono_get_exception_type_load
21312         signature change.
21313
21314         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21315         (mono_assembly_load_reference): Use the new helper.
21316
21317         * class-internals.h (MonoLoaderError): New structure containing 
21318         information about type loading errors.
21319
21320         * class-internals.h loader.c: Add APIs to store per-thread loader
21321         error information.
21322
21323         * loader.c class.c: Set the loader error if needed.
21324
21325         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21326
21327 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21328
21329         * decimal.c: fixed to handle the broken ARM fp format.
21330
21331 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21332
21333         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21334         broken.
21335
21336 2005-09-06  Martin Baulig  <martin@ximian.com>
21337
21338         * domain.c (supported_runtimes): Added v2.0.50727.
21339
21340 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21341
21342         * culture-info.h: reduce the size of some structures.
21343
21344 2005-09-05  Martin Baulig  <martin@ximian.com>
21345
21346         Reflect latest API changes in the August CTP.
21347
21348         * icall.c
21349         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21350         ("MonoType.HasGenericArguments"): Removed.
21351         ("MonoMethod.BindGenericParameters"): Renamed to
21352         "MakeGenericMethod".
21353         ("MethodBuilder.BindGenericParameters"): Renamed to
21354         "MakeGenericMethod".    
21355
21356 2005-09-05  Martin Baulig  <martin@ximian.com>
21357
21358         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
21359
21360 2005-09-05  Martin Baulig  <martin@ximian.com>
21361
21362         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21363
21364         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
21365         generic_container is non-NULL.
21366
21367 2005-09-05  Martin Baulig  <martin@ximian.com>
21368
21369         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21370
21371         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
21372
21373 2005-08-29  Michal Moskal  <malekith@nemerle.org>
21374
21375         * reflection.c (encode_locals,
21376         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
21377         for large generic types.
21378
21379 2005-09-05  Martin Baulig  <martin@ximian.com>
21380
21381         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21382
21383         * class.c (mono_dup_array_type): New public method.
21384         (mono_metadata_signature_deep_dup): New public method.
21385         (dup_type): Correctly duplicate array and function types.
21386
21387 2005-09-05  Martin Baulig  <martin@ximian.com>
21388
21389         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21390
21391         * reflection.c (get_default_param_value_blobs): Handle generic types
21392         and generic methods.
21393
21394 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
21395
21396         * class.c: Fixed error reporting (method/class were inversed) for 
21397         inheritance demands.
21398         * security-manager.c|h: Added the AppDomain when calling the managed
21399         System.Security.SecurityManager.InheritanceDemand method.
21400
21401 2005-09-01  Raja R Harinath  <rharinath@novell.com>
21402
21403         * reflection.c (encode_marshal_blob): 'marshaltype' and
21404         'marshaltyperef' are alternate sources for the custom marshaler
21405         name.
21406
21407 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
21408
21409         * class.c: fix creation of array classes with rank == 1
21410         (patch by Ankit Jain <jankit@novell.com>).
21411
21412 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
21413
21414         * object.c: fix check for creating the bound data for arrays vs
21415         szarrays.
21416
21417 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21418
21419         * object.c: configuration file name is now based on the executable name,
21420         not the image name. Fixes bug #75931.
21421
21422 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
21423
21424         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
21425         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
21426
21427 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
21428
21429         * rand.c: Use wincrypt.h instead of WinCrypt.h.
21430
21431 2005-08-24  Ankit Jain  <jankit@novell.com>
21432             Raja R Harinath  <rharinath@novell.com>
21433
21434         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
21435           called by it recursively.
21436           (mono_class_init): Remove special case in pending_init handling, since it's
21437           superseded by the fix to mono_class_from_typeref.
21438
21439 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
21440
21441         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
21442         BROKEN_THREAD_START stuff.
21443
21444 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
21445
21446         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
21447         trampoline.
21448
21449         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
21450         
21451         * object.c (mono_delegate_ctor): Replace the original function address with
21452         a delegate trampoline.
21453
21454 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
21455
21456         * icall.c: add boolean argument to base64_to_byte_array and 
21457         InternalFromBase64String to control whether a whitespace-only string
21458         is allowed (or should casue a FormatException to be thrown). We need
21459         this as the behavior has changed between MS.NET 1.x and 2.0, and we
21460         to match the MS behaviour in both profiles.
21461         * appdomain.c: Bump corlib version.
21462
21463 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21464
21465         This patch implements a big portion of publisher policy
21466         support, used to bind assembly versions and redirect
21467         one assembly from version A to version B.
21468
21469         * assembly.c:
21470         New GSList loaded_assembly_bindings, for storing the cached
21471         assembly bindings.
21472         (assembly_binding_maps_name): New static function for checking if a 
21473         assembly binding information maps an assembly name.
21474         (mono_assembly_binding_info_free): New function for freeing
21475         assembly binding information resources.
21476         (get_publisher_policy_info): New static function for retrieving 
21477         assembly binding information from a MonoImage.
21478         (compare_versions): New static function for comparing an assembly
21479         binding information data and the version of an assembly name.
21480         (check_policy_versions): New static function for checking if an
21481         assembly binding info mapping an assembly name is valid for it.
21482         (mono_assembly_load_publisher_policy): New static function for
21483         loading the 'policy.major.minor.MyAssembly' image for an assembly
21484         with an assembly name 'aname'.
21485         (mono_assembly_bind_version): New static function for updating
21486         assembly redirection.
21487         (mono_assembly_apply_binding): New static function for applying
21488         assembly binding.
21489         (search_binding_loaded): New static function for searching 
21490         loaded assembly binding infos in the cache domain.
21491         (mono_assembly_load_full): Don't apply assembly binding for
21492         reflection only assemblies.
21493
21494         * metadata-internals.h: Add MonoAssemblyBindingInfo,
21495         which contains information about assembly binding. Also
21496         declare signature for mono_config_parse_publisher_policy ()
21497         function, used to retrieve pub policy info.
21498         
21499         * mono-config.c:
21500         (publisher_policy_start): New static function used to parse publisher 
21501         policy config files.
21502         (publisher_policy_parser): New static MonoParseHandler containing 
21503         the functions used when parsing config files.
21504         (mono_config_parse_publisher_policy): New function for parsing
21505         publisher policy files.
21506         
21507 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
21510
21511         * marshal.c (mono_delegate_free_ftnptr): Ditto.
21512
21513         * object.c (mono_get_addr_from_ftnptr): New helper function.
21514
21515         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
21516
21517         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21518
21519 2005-08-19  Dick Porter  <dick@ximian.com>
21520
21521         * threads.c, threads.h, appdomain.c, appdomain.h,
21522         profiler-private.h, monitor.c, object.c, object-internals.h,
21523         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
21524         store the thread ID, so it can hold a 64 bit value if needed.
21525
21526 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
21527
21528         * reflection.c (mono_reflection_create_dynamic_method): Store the
21529         handle class into the method references as well so ldtoken works in
21530         dynamic methods.
21531
21532         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
21533         types.
21534
21535 2005-08-19  Ankit Jain <jankit@novell.com>
21536
21537         Fix #75847.
21538         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
21539           here rather than using the method signature of a arbitrary function
21540           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
21541           two arguments.
21542           Hack done with Harinath.
21543
21544 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21545
21546         * threadpool.c: disable printing stack traces when we get a exception
21547         in a threadpool thread. I need to do more testing to figure out which
21548         cases actually print this. Fixes bug #75828.
21549
21550 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21551
21552         * icall.c: there might be ignored whitespace after the last '='. This
21553         fixes length computation and bug #75840.
21554
21555 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
21556
21557         * assembly.c (mono_assembly_load_full): Consider .exe extension as
21558         well. Fixes #75809.
21559
21560         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
21561         #75784.
21562         
21563         * reflection.c (create_custom_attr_data): Ditto.
21564
21565 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
21566
21567         * locales.c, culture-info.h : removed RegionLCIDMap.
21568         * culture-info-tables.h : regenerated.
21569
21570 2005-08-16  Martin Baulig  <martin@ximian.com>
21571
21572         * class.c (mono_type_get_name_recurse): Small fix.
21573
21574 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
21575
21576         * locales.c : indentation fixie.
21577
21578 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
21579
21580         * object-internals.h,
21581           locales.h,
21582           locales.c,
21583           culture-info.h,
21584           icall.c : added RegionInfo table support.
21585         * culture-info-table.h : regenerated for region support.
21586
21587 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
21588
21589         * reflection.c (resolve_object): handle all kinds of MonoMethod
21590         including generic ones
21591
21592 2005-08-12  Ankit Jain <jankit@novell.com>
21593
21594         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
21595           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
21596
21597 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
21598
21599         * process.c: Don't close a thread handle when it's NULL. This is a
21600         workaround for bug #75733.
21601
21602 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
21605
21606 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
21609
21610 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21611
21612         * threadpool.c: if a work item in the thread pool has a callback that
21613         catches a exception, don't propagate it after invoking the callback.
21614         Fixes bug #75336.
21615
21616 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
21617
21618         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
21619
21620         * class-internals.h (MonoCachedClassInfo): Add some new fields.
21621
21622         * class.c (mono_class_init): Load field info lazily in the AOT case.    
21623
21624         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
21625
21626 2005-08-03  Ankit Jain  <jankit@novell.com>
21627
21628         Fix #75683.
21629         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
21630           PInvoke calling convention is 0.
21631
21632 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
21633
21634         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
21635         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
21636
21637 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
21638
21639         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
21640         to handle threads not started by the GC (patch by Michael Meeks
21641         <michael.meeks@novell.com>).
21642
21643 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
21644
21645         * reflection.c: Make buffer used in emitting types larger for some
21646         big generic types (patch by Michal Moskal).
21647
21648 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
21649
21650         * mono-debug.c: Fix some (not all) alignment problems.
21651
21652 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21653
21654         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
21655         Invoke mono_image_load_from_data_full passing the refonly
21656         parameter.
21657
21658         * assembly.c
21659         (mono_assembly_open_from_bundle): Add the refonly argument, 
21660         in order to pass it to other methods it calls to.
21661         (do_mono_assembly_open): Add the refonly argument, in order 
21662         to pass it to other methods it calls to.
21663         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
21664         the refonly parameter to it.
21665
21666         * image.c: Add loaded_images_refonly_hash and
21667         loaded_images_refonly_guid_hash to cache the reflection
21668         only loaded images.
21669         (mono_images_init): Initialize the hash tables used for
21670         caching the reflection only images.
21671         (load_modules): Invoke mono_image_open_full passing the refonly
21672         parameter to load the modules the correct way.
21673         (build_guid_table): Add the refonly argument, to re-build the 
21674         correct hash table.
21675         (do_mono_image_open): Added the refonly argument, in order to
21676         define it for the loaded image.
21677         (mono_image_loaded_full): New function, which receives an
21678         additional parameter to look for the image in the refonly or
21679         non-refonly section.
21680         (mono_image_loaded): Updated, using mono_image_loaded_full.
21681         (mono_image_loaded_by_guid_full): The same case that happens
21682         with mono_image_loaded_full.
21683         (mono_image_loaded_by_guid): Likewise.
21684         (register_image): Use the ref_only variable inside MonoImage
21685         to decide in which hash table store the current image.
21686         (mono_image_open_from_data_full): Rename
21687         mono_image_open_from_data to mono_image_open_from_data_full,
21688         adding the refonly argument, to define the ref_only variable 
21689         inside MonoImage.
21690         (mono_image_open_from_data): Return 
21691         mono_image_open_from_data_full.
21692         (mono_image_open_full): Rename mono_image_open to
21693         mono_image_open_full, receiving the new refonly argument,
21694         to pass it to inner methods.
21695         (mono_pe_file_open): Update this function, to open
21696         a MonoImage as a non-refonly image.
21697         (mono_image_close): Use the refonly variable inside
21698         MonoImage to remove the image from the correct caches.
21699
21700         * image.h: Add the signatures of mono_image_open_full,
21701         mono_image_open_from_data_full, mono_image_loaded_full,
21702         mono_image_loaded_by_guid_full.
21703
21704         * metadata-internals.h: Add the ref_only field to 
21705         MonoImage.
21706         
21707 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21708
21709         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
21710         Fix the last behavior, which used to load the assemblies and
21711         extract MonoReflectionAssemblyName information, instead of
21712         extract it from the metadata tables. Needed for Reflection
21713         Only assemblies.
21714         
21715 2005-07-29  Martin Baulig  <martin@ximian.com>
21716
21717         * mono-debug-debugger.c
21718         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
21719         not initialized.
21720
21721         * mono-debug.c
21722         (mono_debug_address_from_il_offset): Check whether we have
21723         debugging support before attempting to take the lock.
21724         (mono_debug_source_location_from_address): Likewise.
21725         (mono_debug_source_location_from_il_offset): Likewise.
21726         (mono_debug_il_offset_from_address): Likewise.
21727         (mono_debug_address_from_il_offset): Likewise.
21728
21729 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
21730
21731         * class.c (mono_class_from_name_case): Add support for dynamic images.
21732         Fixes #75650.
21733
21734         * object.c (mono_class_compute_gc_descriptor): Add a workaround
21735         for #75479.
21736
21737 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
21738         
21739         * reflection.c (mono_method_get_object): Fix warning.
21740
21741 2005-07-28  Martin Baulig  <martin@ximian.com>
21742
21743         * mono-debug.c
21744         (mono_debug_add_wrapper): Also write the wrapper type.
21745
21746 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
21749         
21750         * class.c (mono_class_init): Avoid reading nested classes if the AOT
21751         data indicates the class has none.
21752
21753 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
21754
21755         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
21756         loader lock with the debugger lock. Prevents deadlocks for beagle.
21757
21758         Beagle can now run on an smp box for a weekend without any
21759         issues. Woohoo!
21760
21761 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
21762
21763         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
21764         in a module. Fixes #75629.
21765
21766 2005-07-26  Martin Baulig  <martin@ximian.com>
21767
21768         * mono-debug.c (mono_debug_add_wrapper): New static method.
21769         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
21770         interncall or a wrapper.
21771
21772         * mono-debug.h (MonoDebugWrapperData): New public typedef.
21773         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
21774         (MONO_DEBUGGER_VERSION): Bump to 51.
21775
21776         * mono-debug-debugger.c
21777         (mono_debugger_add_type): Removed this empty function.
21778         (mono_debugger_add_method): Likewise.
21779
21780 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
21783         before accessing method->slot.
21784
21785 2005-07-21  Jb Evain  <jbevain@gmail.com>
21786
21787         * reflection.c (method_encode_clauses/class): Handle filters clauses.
21788         Fixes #75010.
21789
21790 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
21791
21792         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
21793         #75587.
21794
21795 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
21796
21797         * image.h image.c: Add mono_image_get_guid () API function.
21798
21799 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
21800
21801         There were issues when multiple threads tried to load
21802         assemblies. A deadlock was created between assemblies_mutex and
21803         mono_domain_assemblies_lock. This fixes the issue by making the
21804         assembly ref counting be lock free. See bug 75586.
21805         
21806         * image.c (mono_image_close): The add ref function here was using
21807         Interlocked operations while the unref was using a mutex and a
21808         --. I don't think this was ever a bug that would be exposed in a
21809         non-pendantic way (ie, by an embedder doing a ref on one thread
21810         and an unref on another), but for the sake of correctness, this is
21811         now Interlocked.
21812
21813         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
21814         (mono_assembly_load_reference): Call mono_assembly_addref rather
21815         than touching the refcount ourselves.
21816         (mono_assembly_close): Use InterlockedDecrement to unref the
21817         assembly. Don't acquire the lock unless it is actually needed.
21818
21819 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
21820
21821         * class.c (mono_class_layout_fields): Fix calculation of has_references
21822         for generic types.
21823
21824 2005-07-12  Martin Baulig  <martin@ximian.com>
21825
21826         Applying a patch from Michal Moskal <malekith@nemerle.org>.
21827
21828         * metadata.c
21829         (mono_type_hash): Provide better hashing for generic instances.
21830         (mono_generic_inst_hash): Improve hashing.
21831         (mono_generic_class_hash): Likewise.
21832
21833         * reflection.c (mymono_metadata_type_hash): Improve hashing for
21834         generic instances.
21835
21836 2005-07-12  Martin Baulig  <martin@ximian.com>
21837
21838         * reflection.c (mono_reflection_create_runtime_class): Remove the
21839         hack for generic type definitions and non-`Run' assemblies.
21840         (mono_reflection_bind_generic_parameters): Also use
21841         `klass->wastypebuilder' to check for TypeBuilders.
21842
21843 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
21844
21845         * class.c (mono_class_layout_fields): Fix calculation of has_references
21846         for generic types.
21847
21848         * class.c (inflate_generic_class): Fix a leak.
21849         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
21850         for generic types.
21851
21852 2005-07-11  Martin Baulig  <martin@ximian.com>
21853
21854         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
21855         on error.
21856
21857 2005-07-11  Martin Baulig  <martin@ximian.com>
21858
21859         * loader.c (find_method): Also lookup in
21860         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
21861
21862 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
21863
21864         * appdomain.c (mono_domain_unload): Don't free the error message
21865         before passing it to mono_get_exception_...
21866
21867         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
21868         
21869 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
21870
21871         * threads.c: try to better guess an available RT signal (bug #75387).
21872
21873 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
21876         and CACHE_OBJECT.
21877
21878 2005-07-07  Martin Baulig  <martin@ximian.com>
21879
21880         * class.c (mono_type_get_name_full): Return NULL for
21881         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
21882         fixes #75408.
21883
21884 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
21885
21886         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
21887         exit the appdomain as well being aborted.
21888
21889         * threadpool.c: Create all threadpool threads inside the root appdomain, and
21890         change back to the root domain after calling managed code. This enables
21891         appdomains using threadpools to be unloaded.
21892
21893 2005-07-07  Martin Baulig  <martin@ximian.com>
21894
21895         * class-internals.h
21896         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
21897         into `MonoDynamicGenericClass' since we only need it for dynamic
21898         types.
21899
21900         * reflection.c (mono_class_bind_generic_parameters): We don't need
21901         to compute the `parent' here.
21902
21903 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
21904
21905         * culture-info-table.h : regenerated.
21906
21907 2005-07-06  Martin Baulig  <martin@ximian.com>
21908
21909         * icall.c
21910         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
21911
21912         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
21913
21914 2005-07-06  Martin Baulig  <martin@ximian.com>
21915
21916         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
21917         we're doing a signature-only comparision; fixes #74945.
21918
21919 2005-07-06  Martin Baulig  <martin@ximian.com>
21920
21921         * class-internals.h (MonoGenericClass): Moved some things out into
21922         a new `MonoInflatedGenericClass' type.  
21923         (MonoInflatedGenericClass): New type; the `klass' of a
21924         `MonoGenericClass' is now computed lazyly in
21925         mono_get_inflated_generic_class().      
21926
21927         * class.c (mono_get_inflated_generic_class): New public function.
21928         (mono_class_inflate_generic_method): Removed the unused
21929         `MonoClass *' argument.
21930         (setup_generic_vtable): Don't call mono_get_inflated_method() on
21931         all the methods.
21932         (mono_class_create_generic): Make this static and merge it with
21933         mono_class_create_generic_2(); we're now called automatically from
21934         mono_get_inflated_generic_class().
21935
21936         * loader.c (mono_method_signature): Call
21937         mono_get_inflated_method() here.
21938
21939 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
21940
21941         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
21942         type of fields with RVA.
21943
21944         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
21945         for this pseudo class.
21946         (my_mono_class_from_generic_parameter): Likewise.
21947         (mono_class_init): Allow interfaces to have cctors.
21948
21949 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
21950
21951         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
21952         lazily for AOT methods.
21953
21954 2005-07-05  Martin Baulig  <martin@ximian.com>
21955
21956         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
21957         returns FALSE for a successful match, not TRUE.
21958
21959 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
21960
21961         * loader.c (mono_method_get_index): Optimize this a bit.
21962
21963 2005-07-04  Martin Baulig  <martin@ximian.com>
21964
21965         * class.c
21966         (class_compute_field_layout): Move the check for generic type
21967         definitions into mono_class_layout_fields().  Fixes #74684.
21968         (mono_class_from_generic_parameter): Correctly compute
21969         `klass->parent'; fixes #75457.
21970
21971         * reflection.c (register_assembly, register_module): Make sure
21972         `domain->rejobject_hash' is already created.
21973
21974 2005-07-02  Martin Baulig  <martin@ximian.com>
21975
21976         * class-internals.h
21977         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
21978         `MonoDynamicGenericClass'.      
21979
21980 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
21981
21982         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
21983         returned by a field getter is null, since null is a valid value.
21984
21985 2005-07-01  Martin Baulig  <martin@ximian.com>
21986
21987         * reflection.c (mono_reflection_generic_class_initialize): Update
21988         the `dgclass->fields [i].parent' to the correct class.
21989         (mono_image_get_fieldref_token): Use the declaring type, not the
21990         reflected type.
21991
21992 2005-07-01  Martin Baulig  <martin@ximian.com>
21993
21994         * loader.c (find_method): Also look in the interfaces; fixes #75429.
21995
21996 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
21997
21998         * threads.c (thread_cleanup): assert that thread != NULL
21999         (wait_for_tids_or_state_change): We were using the wrong variable
22000         when accessing wait->threads. `i' was always out of the bounds of
22001         the array.
22002
22003 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22004
22005         * loader.c: map user32 and kernel32 to libMonoSupportW
22006
22007 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22008
22009         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22010
22011 2005-06-28  Martin Baulig  <martin@ximian.com>
22012
22013         * loader.c (method_from_methodspec): Fix #75334.
22014
22015 2005-06-28  Martin Baulig  <martin@ximian.com>
22016
22017         Fix #74953 - Arrays now implement the generic IList<T> interface
22018         on the 2.0 platform.
22019
22020         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22021
22022         * reflection.c (mono_class_bind_generic_parameters): New public
22023         function; similar to mono_reflection_bind_generic_parameters(),
22024         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22025
22026         * domain.c (mono_init_internal): Try to initialize.
22027         `mono_defaults.generic_array_class' here; this'll only succeed if
22028         we're using the 2.0 corlib.
22029
22030         * icall.c
22031         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22032         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22033         (mono_lookup_internal_call): Added support for nested classes.
22034
22035         * loader.c
22036         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22037         we're an interncall and have generic arguments.
22038
22039         * class.c
22040         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22041         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22042         instance of System.Array.InternalArray<T> for arrays, so they
22043         implement the generic IList<T> interface.
22044
22045 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22046
22047         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22048         (chastamar@yahoo.com). Fixes #75374.    
22049
22050 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22051
22052         * culture-info-table.h: regenerated.
22053
22054 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22055
22056         * icall.c: handle spaces correctly for base64 strings.
22057
22058 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22059
22060         * *.c: Kill some warnings.
22061
22062 2005-06-23  Duncan Mak  <duncan@novell.com>
22063
22064         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22065         that this builds on Solaris 10 (x86).
22066
22067 2005-06-23  Martin Baulig  <martin@ximian.com>
22068
22069         * class.c
22070         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22071         generic type definitions.
22072
22073 2005-06-23  Martin Baulig  <martin@ximian.com>
22074
22075         Fix #75331.
22076
22077         * metadata.c (mono_class_get_overrides): Renamed to
22078         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22079         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22080         pass it to mono_get_method_full().
22081
22082 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22083
22084         * reflection.c (mono_reflection_create_runtime_class): take the
22085         mono_domain_lock in this method. Prevents deadlocks
22086
22087 2005-06-22  Martin Baulig  <martin@ximian.com>
22088
22089         * loader.c (method_from_methodspec): Fix #75330.
22090
22091 2005-06-22  Martin Baulig  <martin@ximian.com>
22092
22093         * reflection.c (type_get_qualified_name): Use
22094         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22095         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22096         argument; use it if we don't have an assembly name.
22097
22098 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22099
22100         * object.c: In mono_message_init, set "copy out" flag for in
22101         parameters with the [Out] flag.
22102
22103 2005-06-21  Martin Baulig  <martin@ximian.com>
22104
22105         * class.c
22106         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22107         and MONO_TYPE_PTR.
22108
22109 2005-06-21  Martin Baulig  <martin@ximian.com>
22110
22111         * class.c (mono_class_init): Don't initialize `class->fields' for
22112         generic instances since they're initialized again in
22113         compute_field_layout(). 
22114         (compute_field_layout): Set the field's `generic_info' here; fix
22115         #75320. 
22116
22117 2005-06-21  Martin Baulig  <martin@ximian.com>
22118
22119         * class-internals.h
22120         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22121
22122         * metadata.c (mono_metadata_generic_method_equal): Also
22123         distinguish the `generic_class'; fixes #75334.
22124
22125 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22126
22127         * domain.c:
22128         * appdomain.c:
22129         * domain-internals.h:
22130         * reflection.c: 'domain_assemblies' field is now protected by its own
22131         lock. Don't call into managed code to run the AssemblyLoad event if we
22132         now there are no registered delegates for it.
22133
22134 2005-06-20  Martin Baulig  <martin@ximian.com>
22135
22136         * class.c (mono_class_is_assignable_from): Use a custom version of
22137         mono_class_has_parent() to make things work for generic instances;
22138         fix #75300.
22139
22140 2005-06-20  Martin Baulig  <martin@ximian.com>
22141
22142         * loader.c (method_from_methodspec): Apply a patch from
22143         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22144
22145 2005-06-20  Martin Baulig  <martin@ximian.com>
22146
22147         * class.c (mono_class_init): Reverted Zoltan's last change; it
22148         breaks generics.
22149
22150 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22151
22152         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22153
22154 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22155
22156         * socket-io.c: fix the index in the socket array for writable/error
22157         sockets. Fixes bug #75306.
22158
22159 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22160
22161         * class.c (mono_class_init): Allow interfaces to have static ctors.
22162
22163 2005-06-17  Martin Baulig  <martin@ximian.com>
22164
22165         * loader.c (method_from_methodspec): Use `context->container' when
22166         parsing the `gmethod->inst'.
22167
22168 2005-06-17  Martin Baulig  <martin@ximian.com>
22169
22170         * class.c (mono_type_get_name_recurse): Don't add the assembly
22171         name for type arguments.
22172
22173 2005-06-15  Martin Baulig  <martin@ximian.com>
22174
22175         * reflection.c (mono_image_get_inflated_method_token): Encode
22176         correct klass; fixes #75260.
22177
22178 2005-06-13 Michal Moskal <malekith@nemerle.org>
22179
22180         * icall.c: Make GetCorrespondingMethod/Constructor take
22181         MonoReflectionMethod method not MonoMethod. Removed
22182         MonoType.GetCorrespondingField, and make
22183         MonoGenericType.GetCorrespondingField take name not
22184         MonoClassField.
22185
22186 2005-06-13  Michal Moskal <malekith@nemerle.org>
22187
22188         * reflection.c (field_encode_signature, encode_locals):
22189          Make sizes of buffers for types larger (for big generic types).
22190          (create_generic_typespec,
22191          mono_reflection_sighelper_get_signature_local,
22192          mono_reflection_sighelper_get_signature_field):
22193          Add asserts for too small buffers.
22194
22195 2005-06-15  Martin Baulig  <martin@ximian.com>
22196
22197         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22198         if our parent is not a dynamic type.
22199
22200 2005-06-15  Martin Baulig  <martin@ximian.com>
22201
22202         * class-internals.h (MonoTypeNameFormat): New enum.
22203
22204         * class.c
22205         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22206         (mono_type_get_full_name): Removed.
22207         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22208         argument instead of the boolean's.
22209
22210         * icall.c (ves_icall_System_MonoType_getFullName):
22211         Added `gboolean assembly_qualified'.    
22212
22213         * reflection.h
22214         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22215
22216         * reflection.c (mono_reflection_parse_type): Parse the new type
22217         name format.
22218
22219 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22220
22221         * icall.c: no need to convert from utf16 to utf8 and then back again
22222         after the call to GetLogicalDrives.
22223
22224 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22225
22226         * icall.c: frombase64. Fix problems exposed by new tests.
22227
22228 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22229
22230         * icall.c: added internal calls for converting char [] and strings in
22231         base64 into byte [].
22232
22233 2005-06-10  Martin Baulig  <martin@ximian.com>
22234
22235         * class.c (mono_class_create_generic_2): Read the nested classes
22236         from the metadata rather than from `gklass->nested_classes' since
22237         `gklass' might not be initialized yet.
22238
22239 2005-06-09  Duncan Mak  <duncan@novell.com>
22240
22241         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22242         all public headers. Fixes #74919.
22243
22244 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22245
22246         * domain.c: The key for proxy_vtable_hash is now a pointer
22247         array. Added new GHashFunc and GCompareFunc functions for this.
22248
22249         * class.h: The list of interfaces in MonoRemoteClass is known in
22250         advance and can't grow (we create a new MonoRemoteClass if needed),
22251         so now the interface array can be allocated together with
22252         MonoRemoteClass.
22253         
22254         * object.c: Added a new method create_remote_class_key.
22255         Fixed mono_remote_class so it does not depend on
22256         mono_upgrade_remote_class.
22257         Removed extend_interface_array.
22258         Added new method clone_remote_class(), which makes a copy of a remote
22259         class and adds a new interface or class to it.
22260         mono_upgrade_remote_class() now creates a new remote class (or gets
22261         it from the cache) if an vtable upgrade is needed. In this way
22262         we make sure that other objects sharing the same remote class
22263         don't get the new vtable with unwanted interfaces.
22264         
22265         * object-internals.h:
22266         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22267         
22268         * marshal.c: Track changes in mono_upgrade_remote_class().
22269
22270 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22271         * icall.c: Add runtime methods for obtaining members of inflated
22272         class, which were created from supplied non-inflated members. It
22273         is used in internal Get{Method,Constructor,Field} methods in
22274         System.Type
22275
22276 2005-06-09  Martin Baulig  <martin@ximian.com>
22277
22278         * reflection.c
22279         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22280
22281 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22282         * reflection.c (mono_image_basic_init): Define
22283         Version in MonoDynamicAssembly. 
22284         
22285 2005-06-08  Martin Baulig  <martin@ximian.com>
22286
22287         Fix #75136.
22288
22289         * loader.c
22290         (mono_method_signature_full): New public method; takes a
22291         `MonoGenericContext *'.
22292         (find_method): Use mono_method_signature_full() and pass the
22293         klass'es context to it.
22294
22295         * class.c (mono_class_is_inflated_method): Use
22296         mono_method_signature_full() and pass the context to it.
22297
22298 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22299
22300         * object.c: add proper locking in mono_remote_class_vtable(),
22301         fixes possible memory corruption.
22302
22303 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22304
22305         * marshal.c (mono_remoting_marshal_init): set
22306         initialized after initialization.
22307
22308 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22309
22310         * locales.c : hush.
22311
22312 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22313
22314         * object.c (extend_interface_array): fix really silly
22315         memory corrupting / comparison bug.
22316
22317 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22318
22319         * reflection.c: Functions added to support the creation
22320         of CustomAttributeData, which includes Attribute data
22321         used by ReflectionOnly methods.
22322
22323         * reflection.h:  mono_reflection_get_custom_attrs_data and
22324          mono_custom_attrs_data_construct added (functions exposed).
22325
22326          * icall.c: Added mono_reflection_get_custom_attrs_data
22327          as icall.
22328         
22329 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22330
22331         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22332         lupus's request.
22333
22334 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22335
22336         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22337
22338         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22339         dynamic DllImportAttribute.
22340
22341         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22342         dynamic DllImportAttribute.
22343
22344         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22345         Fixes #75162.
22346
22347 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22348
22349         * threads.c: avoid segfault when an unstarted thread is aborted.
22350
22351 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22352
22353         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22354         Returns the name and version of the runtime for reporting.
22355
22356 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22357
22358         * appdomain.c: bump corlib version.
22359         * object-internals.h: new field in MonoReflectionAssembly.
22360
22361 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22362
22363         * object-internals.h: Carlos forgot to add this field.
22364
22365 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22366
22367         * icall.c: Added create_version to create instances
22368         of Version of MonoReflectionAssemblyName. This change helps
22369         the AssemblyName tests to keep running fine.
22370         
22371 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
22372   
22373         * object.c (mono_method_return_message_restore): A somehow less
22374         intrusive fix for #75138.
22375
22376 2005-06-03  Raja R Harinath  <rharinath@novell.com>
22377
22378         * object.c (mono_method_return_message_restore): Fix computation
22379         of expected number of out args.
22380
22381 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * reflection.c (mono_image_get_method_info): Fix the case when the
22384         charset is empty.
22385
22386 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
22387
22388         * object.c: Added missing null check in
22389           mono_method_return_message_restore.
22390
22391 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
22392
22393         * reflection.c (mono_image_get_method_info): Handle the case when
22394         dllentry is empty.
22395
22396 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
22397
22398         * object.c: When creating the vtable for a proxy, take into account
22399         all inherited interfaces, not only the ones registered in
22400         iclass->interfaces. This fixs bug #74996.
22401         Also, in mono_method_return_message_restore, verify that the array
22402         of out args has the expected lengh.
22403
22404 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22405
22406         * socket-io.c: update the timeout in Poll when the call is interrupte.
22407
22408 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22409
22410         * socket-io.c: support abort/suspend in Select_internal after last
22411         change.
22412
22413 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22414
22415         * threadpool.c: remove warning.
22416
22417 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22418
22419         * icall.c:
22420         * socket-io.[ch]: Select_internal uses poll() now when available, thus
22421         removing the 1024 limit from select(). Runtime part of the fix for
22422         bug #71203.
22423
22424 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22425
22426         * socket-io.c: when resolving the addresses for the same
22427         host returned by gethostname(), get the local IPs from the interface
22428         list. Loopback addresses are discarded if the are interfaces up with
22429         non-loopback ones. Fixes bug #63265.
22430
22431 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
22432
22433         * appdomain.c, verify.c, object-internals.h, reflection.c:
22434         bumped corlib number to 36, and added new extra_flags field
22435         to ReflectionMethodBuilder and friends.  Fixes #75060.
22436
22437 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
22438
22439         * gc.c: register a new weak link only if the object is non-null
22440         (fixes bug#75047).
22441
22442 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22443
22444         * culture-info.h : short time pattern too.
22445
22446 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22447
22448         * culture-info.h : expand long time pattern string length.
22449
22450 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22451
22452         * culture-info-table.h : update (more French date format; #72788).
22453
22454 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
22455
22456         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
22457         the method is static. Fixes #75029.
22458
22459 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
22460
22461         * reflection.c: Update the table_idx field of method builders after
22462         saving the module, since it can change. This is a workaround for
22463         bug #74914. 
22464
22465 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22466
22467         * culture-info-table.h : update (additional French date format).
22468
22469 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
22470
22471         * icall.c (ves_icall_type_Equals): Revert last change.
22472         
22473         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
22474
22475         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
22476
22477 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
22478
22479         * class-internals.h: Added executioncontext_class field to 
22480         MonoDefaults structure.
22481         * domain.c: Cache System.Threading.ExecutionContext class in 
22482         mono_defaults.
22483         * object.c: Capture the ExecutionContext for asynchroneous calls in
22484          mono_async_result_new.
22485         * object-internals.h: Added execution_context and original_context 
22486         fields to MonoAsyncResult. Added execution_context to MonoThread.
22487         * security-manager.c|.h: Added mono_get_context_capture_method to 
22488         return the capture method (if required by the security manager or by
22489         the framework version used).
22490         * threadpool.c: Apply capture (if present) ExecutionContext in 
22491         mono_async_invoke and revert to original context after it completes.
22492
22493 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
22494
22495         * culture-info-table.h : updated (real hacky solution for zh-CHT).
22496
22497 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
22498
22499         * culture-info-table.h : zh-CHT related workaround.
22500
22501 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22502
22503         * marshal.c (emit_marshal_custom): Add some error checking and call the
22504         methods in the ICustomMarshaler interface. Fixes #74875.
22505         
22506         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
22507         native->managed wrappers.
22508
22509 2005-05-12  Martin Baulig  <martin@ximian.com>
22510
22511         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
22512         here and use the loader lock.
22513
22514         * mono-debug.c: Properly lock when the debugger is not attached.
22515         (mono_debug_init): Release the initial lock if we're not running
22516         in the debugger.
22517
22518 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
22519
22520         * marshal.c (emit_marshal_custom): Pass through NULL values without
22521         calling the custom marshalling routines.
22522
22523         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
22524         conversion in structures. Fixes #74882.
22525
22526 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
22527
22528         * culture-info-table.h : zh-* cultures were missing.
22529
22530 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
22531
22532         * threads.c: Added a new event background_change_event which is signaled
22533         when a thread changes its background mode.
22534         Moved here several checks previously done in managed code. The checks
22535         require the thread lock, and using the thread lock in managed code
22536         can result in deadlocks.
22537         Merged Start_internal and Thread_internal into a single method. Now 
22538         Thread_internal does all work of creating and starting a thread.
22539         Added icalls for setting and getting the state of the object. Moved from
22540         managed code to avoid locking there.
22541         Added wait_for_tids_or_state_change() which is called instad of
22542         wait_for_tids when waiting for non-backround threads to end. This method
22543         will return if one of the threads ends or the background_change_event
22544         is signaled.
22545         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
22546         the background mode. This method signals the background_change_event
22547         event.
22548         * icall.c:
22549         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
22550         removed Start_internal.
22551         
22552 2005-05-11  Martin Baulig  <martin@ximian.com>
22553
22554         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
22555         to order of some fields to get proper alignment on 64-bit machines.
22556
22557 2005-05-11  Martin Baulig  <martin@ximian.com>
22558
22559         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
22560         changes as they're broken and completely fuck up the debugger.
22561
22562         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
22563
22564 2005-05-10  Martin Baulig  <martin@ximian.com>
22565
22566         * reflection.c (mono_reflection_generic_class_initialize): Don't
22567         call mono_class_setup_parent() here.
22568
22569 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22570
22571         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
22572         send/receive timeout use an integer in milliseconds. We were using a
22573         struct timeval.
22574
22575 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22576
22577         * locales.c:
22578         (internal_get_cultures): reserve the first slot of the array for the
22579         InvariantCulture, which will be filled in managed code.
22580
22581 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
22582
22583         * reflection.c (mono_image_fill_module_table): Initialize the
22584         GENERATION field as well.
22585
22586 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22587
22588         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
22589         Monitor.Enter on the object.
22590
22591 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
22592
22593         * threads.c: Enable the wait for running threads when exiting.
22594         * icall.c: Suspend all threads before exiting.
22595
22596 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
22597
22598         * assembly.c (mono_assembly_load_reference): Fix warning.
22599
22600 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22601
22602         * threadpool.c: changed the default number of threads per cpu. From now
22603         on, the default will be 20 + (5 * number of cpus) instead of 50.
22604
22605 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
22606
22607         * loader.c (mono_method_get_signature_full): Add locking here.
22608
22609 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
22610
22611         * appdomain.c: Moved methods for parsing and freeing assembly
22612         names to assembly.c.
22613         * assembly.c, domain-internals.h: Created public methods for parsing
22614         assembly names. Fixed mono_assembly_load_with_partial_name:
22615         it now finds the best match, taking into account the version,
22616         token and culture specified in the partial name. Also return
22617         the latest version if no version information is specified.
22618
22619 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
22620
22621         * threadpool.c: replace check for SocketAsyncCall class.
22622
22623 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22624
22625         * threadpool-internals.h:
22626         * Makefile.am: added threadpool-internals.h
22627
22628         * threadpool.c: call mono_unhandled_exception on exceptions not handled
22629         that happen in threadpool threads (tested on MS).
22630         (mono_thread_pool_remove_socket): new function that dispatch any pending
22631         AIO call on a socket that is closing. By now only epoll really needs it,
22632         as select/poll wake up when the socket closes.
22633
22634
22635         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
22636
22637 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
22638
22639         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
22640
22641 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
22642
22643         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
22644
22645 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
22646
22647         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
22648         has an abort request, convert it into a suspend request.
22649
22650 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
22651
22652         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
22653         warning for the usage of `UnmanagedFunctionPointerAttribute' which
22654         is not supported yet.
22655
22656 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22657
22658         * image.c: register assemblies loaded from data (bundles) in the loaded
22659         assemblies hash. Fixes bug #74772.
22660
22661 2005-04-29  Martin Baulig  <martin@ximian.com>
22662
22663         * class.c (mono_type_get_name_recurse): Update to the new naming
22664         schema from the latest .NET 2.x beta2.
22665         (mono_class_setup_vtable_general): If we're a generic instance,
22666         copy the vtable from our generic type definition and inflate all
22667         the methods in it.
22668
22669         * loader.c (find_method): Update to the new naming schema from the
22670         latest .NET 2.x beta2.
22671
22672 2005-04-29  Raja R Harinath  <harinath@gmail.com>
22673
22674         * class.c (mono_class_init): Add a mono_loader_unlock to the
22675         #74734 fix.
22676
22677 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * icall.c (ves_icall_System_Environment_Exit): Remove the 
22680         suspend_all_other_threads () call for the time being, since it can hang.
22681
22682         * threads.c (mono_thread_manage): Similarly, disable the waiting for
22683         the background threads to exit, since it can also hang.
22684
22685         * class.c (mono_class_init): Applied patch from Ankit Jain 
22686         (radical@gmail.com). Avoid pending init errors when a field refers
22687         to a nested class using a typeref. Fixes #74734.
22688
22689         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
22690         this for dynamic modules.
22691
22692 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22693
22694         * threads.c: don't wait for threads that are in the process of aborting
22695         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
22696         and waiting for background threads to finish. This makes xsp and
22697         mod-mono-server exit without random length delays and/or hangs.
22698
22699 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22700
22701         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
22702
22703 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
22704
22705         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
22706         dynamic types to prevent infinite loops. Fixes #74727.
22707
22708         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
22709         ..._is_assignable_to.
22710
22711 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
22712
22713         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
22714
22715 2005-04-25  Martin Baulig  <martin@ximian.com>
22716
22717         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
22718
22719         * domain.c
22720         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
22721
22722         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
22723
22724         * reflection.c (build_compressed_metadata): Set metadata header
22725         version to 2.0.
22726
22727 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
22728
22729         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
22730         number into an integral and a decimal part. Fixes #70473.
22731
22732         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
22733
22734 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
22735
22736         * culture-info-table.h : reflected the latest locale-builder output.
22737
22738 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22739
22740         * threadpool.c: check for SuspendRequested too when deciding if
22741         mono_thread_interruption_checkpoint should be called.
22742
22743 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22744
22745         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
22746         * threads.c: remove interruption_mutex and use Interlocked instead. When
22747         suspending all the threads, wait for all the suspended events at once.
22748         If we're shutting down and get an APC that is going to be queued,
22749         call mono_thread_execute_interruption immediately, as the thread might
22750         be sleeping on a pthread condition or mutex.
22751
22752         * icall.c: call mono_runtime_set_shutting_down before suspending the
22753         threads.
22754
22755         Fixes bug #74693. And now xsp is happier when exiting.
22756
22757 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
22758
22759         * loader.c (mono_stack_walk): Fix #74690.
22760
22761 2005-04-22  Martin Baulig  <martin@ximian.com>
22762
22763         * mono-debug.h (MonoDebugMethodJitInfo): Added
22764         `MonoDebugMethodJitInfo *jit'.
22765
22766         * mono-debug.c (mono_debug_read_method): Cache the
22767         MonoDebugMethodJitInfo in `address->jit'.
22768         (mono_debug_free_method_jit_info): New public method.
22769
22770 2005-04-22  Martin Baulig  <martin@ximian.com>
22771
22772         * class.c (mono_class_is_assignable_from): Disallow
22773         type parameter -> interface.
22774
22775 2005-04-21  Dick Porter  <dick@ximian.com>
22776
22777         * threads.c (mono_thread_create): Turn an assertion into an error.
22778
22779 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
22780
22781         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
22782         
22783         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
22784         Fix some gcc 4.0 warnings.
22785
22786 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
22787
22788         * file-io.c: fix alt dir separator char on unix systems
22789         and cleanup (fixes bug #71214).
22790
22791 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
22792
22793         * marshal.c: Use CALLVIRT instead of CALL when dispatching
22794         a call to a remote domain, since the method may be an
22795         interface method in the client domain. This fixes bug #74192.
22796
22797 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22798
22799         * threadpool.c: recv/send are now performed before going back to managed
22800         code to save one transition.
22801
22802 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22803
22804         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
22805
22806         * metadata/threadpool.c: removed hack to workaround the bug above.
22807
22808         Fixes bug #74618.
22809
22810 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * reflection.c reflection.h: Fix handling of parameter defaults in
22813         dynamic methods. Also fixes handling of parameter attributes.
22814         Fixes #74609.
22815
22816         * mono-debug.c (mono_debug_close_image): Fix warning.
22817
22818 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22819
22820         * socket-io.h: replaced old unused field with new 'blocking'.
22821         * threadpool.c: restore socket blocking state on windows(tm).
22822
22823 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
22824
22825         * icall.c: don't return the codebase in the AssemblyName[] returned by
22826         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
22827         * object-internals.h: Removed FIXME (fields were presents) and fixed
22828         versioncompat declaration.
22829
22830 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22831
22832         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
22833         not closed, so don't cleanup when it happens.
22834
22835 2005-04-13  Chris Toshok  <toshok@ximian.com>
22836
22837         * mono-debug-debugger.h: change prototype for
22838         mono_debugger_lookup_type.
22839
22840         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
22841         this function, although it should probably be named
22842         mono_debugger_init_type.
22843
22844 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22845
22846         * threadpool.c: fix non-AIO case.
22847
22848 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
22851         the built-in profiler to measure just JIT compilation times.
22852
22853 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22854
22855         * threadpool.c: the epollfd might be closed by another thread at
22856         any time, so ignore EBADF at treat it as a "we're closing" sign.
22857
22858 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22859
22860         * threadpool.c: release the semaphores with a count equals to the number
22861         of working threads in both IO and regular pools. Fixed typo that messed
22862         up the count of IO pool threads. Don't initialize the pipe handles if
22863         we're using epoll.
22864
22865 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22866
22867         * threadpool.c: some systems don't like a NULL when deleting the socket
22868         from epoll.
22869
22870 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22871
22872         * threadpool.c: fix semaphore allocation.
22873
22874 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22875
22876         * threadpool.c: added epoll() based implementation for asynchronous IO
22877         that is used instead of the default poll() when available.
22878         It can be disabled by setting MONO_DISABLE_AIO.
22879
22880 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22881
22882         * threadpool.c: windows needs 'closesocket' and instead of returning
22883         0 when the stream is closed while in select, it returns -1. Fixes bug
22884         #74573.
22885
22886 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
22887
22888         * class.c (class_compute_field_layout): Fix the regression caused by
22889         the previous try.
22890
22891 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22892
22893         * threadpool.c: separate pool for socket async. IO.
22894         * threadpool.h: mono_max_worker_threads is not a global any more.
22895
22896 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
22897
22898         * class.c (class_compute_field_layout): Fix #74549.
22899
22900 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22901
22902         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
22903         use 2 connected sockets instead.
22904
22905 2005-04-08  Miguel de Icaza  <miguel@novell.com>
22906
22907         * mono-config.c: Add new entry point for mkbundle
22908         mono_config_parse_memory. 
22909
22910 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22911
22912         * threadpool.c: removed another unused function.
22913
22914 2005-04-08  Ankit Jain  <radical@corewars.org>
22915
22916         * reflection.c (get_default_param_value_blobs): Add 'types'
22917         parameter to get the types encoded in the constant table.
22918         (mono_param_get_objects): Use the type from the constant table,
22919         not the type of the parameter, when creating default values.
22920         Handle null default values correctly.
22921
22922 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22923
22924         * file-io.c:
22925         * file-io.h:
22926         * threadpool.c:
22927         * threadpool.h:
22928         * icall.c:
22929         * socket-io.c: removed dead code for async IO.
22930
22931 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22932
22933         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
22934
22935         * threadpool.c: intercept socket async. calls and pass them to a thread
22936         that is polling and dispatching the job items to the threadpool as
22937         socket become ready. Fixes bugs #71217, #71933.
22938
22939         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
22940         between char and short/ushort arrays.
22941
22942         * socket-io.c: remove dead code.
22943
22944 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
22945
22946         * locales.c,
22947           icall.c : removed InternalToUpper_Comp() and
22948           InternalToLower_Comp().
22949
22950 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
22951
22952         * char-conversions.h : The tables were incorrectly generated. Should
22953           be generated against invariant culture.
22954
22955 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
22956
22957         * object.c (mono_runtime_invoke_array): Fix return value when 
22958         passing pre-created valuetype objects to ctors.
22959
22960         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
22961         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
22962         Fixes #74338.
22963
22964 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
22965
22966         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
22967         only used with --security and hides the wrong corlib version error.
22968
22969 2005-03-30  Joshua Tauberer  <tauberer@for.net>
22970
22971         * class.c: Changed mono_class_name_from_token so that types
22972         outside of a namespace don't have an initial period.  Improved
22973         the g_warning message used in _mono_class_get when loading
22974         fails.
22975         * assembly.c: In mono_assembly_load_reference, when an assembly
22976         can't be found, "No such file or directory" is misleading and
22977         unhelpful because a few paths were checked for the presence of
22978         the assembly.  When that happens (ENOENT), display a nicer
22979         message indicating the directories that were searched.  In all
22980         cases, the warning is made easier to read for non-hackers.
22981
22982 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
22983
22984         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
22985         project/solution.
22986         * appdomain.h|domain.c: Removed inline from functions.
22987         * appdomain.c: Reduced warnings when compiling on windows.
22988         * icall.c: Fixed output_debug declaration to gunichar2*.
22989         * mono-config.c: Reduced warnings when compiling on windows.
22990         * rand.c: Added missing "windows.h". Added missing return value.
22991         * rawbuffer.c: Added missing winsock2.h for windows.
22992         * sysmath.h: Added mono-compiler.h header to allow/ease 
22993         compilation with non-GCC compilers.
22994         * threads.c: Fixed declarations to compile with VS.NET C compiler.
22995         Removed cast warnings.
22996
22997         Adapted from the work of J Lothian (for VC6).
22998
22999 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23000
23001         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23002         from default_path.
23003
23004 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23005
23006         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23007         the 2.0 profile.
23008
23009 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23010
23011         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23012         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23013         stuff, and it would probably use $(prefix)/share rather than
23014         $(prefix)/lib.
23015
23016 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23017
23018         * console-io.c: added 2 includes that might be missing.
23019
23020 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23021
23022         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23023         profile.
23024
23025         * reflection.c (create_custom_attr): Allocate the params array using
23026         alloca so it gets GC tracking.
23027
23028 2005-03-23  Chris Toshok  <toshok@ximian.com>
23029
23030         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23031         out some spew.
23032
23033 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23034
23035         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23036         changes to pick up any changes in prefix, etc.
23037
23038 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23039
23040         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23041         
23042         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23043         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23044
23045 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23046
23047         * class-internals.h object-internals.h class.c reflection.c: Extend the
23048         mono_lookup_dynamic_token () function to return the class of the
23049         token as well. 
23050
23051         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23052         well. Fixes #73848.
23053
23054 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23055
23056         * security-manager.c: Skip inheritance checks for intra-corlib
23057         class inheritance and method overrides. This skips a lot of checks
23058         and (anyway) permissions cannot work until corlib is loaded.
23059
23060 2005-03-23  Martin Baulig  <martin@ximian.com>
23061
23062         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23063         MONO_TYPE_GENERICINST.  
23064
23065 2005-03-23  Martin Baulig  <martin@ximian.com>
23066
23067         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23068
23069 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23070
23071         * class.c: added locking comments to some functions.
23072         Cache the interface offsets arrays (saves about 20 KB
23073         of runtime memory in a typical app).
23074         Reduce the time overhead in mono_class_setup_supertypes ().
23075
23076 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23077
23078         * icall.c: speedup and fix leaks in GetMethodsByName and
23079         GetPropertiesByName.
23080
23081 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23082
23083         * reflection.c: some locking fixes.
23084
23085 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23086
23087         * metadata.c: added missing break in case statement.
23088
23089 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23090
23091         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23092         typedbyref return values. Fixes #73941.
23093
23094 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23095
23096         * security-manager.c|h: Added demandunmanaged method and 
23097         suppressunmanagedcodesecurity class to MonoSecurityManager.
23098         Renamed aptc class to allowpartiallytrustedcallers.
23099
23100 2005-03-17  Martin Baulig  <martin@ximian.com>
23101
23102         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23103
23104 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23105
23106         * file-io.c: disabled file async. IO using aio_*. It uses the
23107         threadpool now. Workaround for bug #73718.
23108
23109 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23110
23111         * assembly.h, mono-config.c: added code to deal with bundled configs
23112         for bundled assemblies.
23113
23114 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23115
23116         * *.c, private.h: cleanup, removing old private.h header file.
23117
23118 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23121         and throw_on_unmappable_char attributes.
23122
23123 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23124
23125         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23126         _ProcessName_internal.
23127
23128 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23129
23130         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23131         #73631.
23132
23133         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23134         are no longer used.
23135
23136 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23137
23138         * object.c (compute_class_bitmap): Add support for generics. Fixes
23139         #73527.
23140
23141 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23142
23143         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23144
23145 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23146
23147         * filewatcher.c: commented out the code for windows watcher, as we don't
23148         use it (we use the managed implementation instead).
23149
23150 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23151
23152         * object-internals.h (MonoThread): Remove 'unused1' field.
23153
23154         * appdomain.c: Bump corlib version.
23155
23156         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23157
23158         * reflection.c (mono_reflection_create_runtime_class): Remove the
23159         AssemblyBuilder.Save optimization since it causes too many problems.
23160
23161 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23162
23163         * exception.c|h: Added mono_get_exception_reflection_type_load to
23164         create a ReflectionTypeLoadException object.
23165         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23166         to return NULL is a InheritanceDemand fails during reflection. Updated
23167         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23168         ReflectionTypeLoadException if an InheritanceDemand fails during 
23169         reflection. Added icall mapping for GetLinkDemandSecurity.
23170         * security-manager.c|h: Added ves_icall_System_Security_
23171         SecurityManager_GetLinkDemandSecurity internal call to return the
23172         class and methods permissions set for a LinkDemand. Removed unused
23173         fields in MonoSecurityManager.
23174
23175 2005-03-10  Martin Baulig  <martin@ximian.com>
23176
23177         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23178         it's a generic instance.
23179
23180 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23181
23182         * reflection.c (mono_get_object_from_blob): Applied patch from
23183         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23184
23185         * class.c (mono_class_is_assignable_from): Another try at fixing 
23186         #73469 without breaking anything.
23187
23188 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23189
23190         * class.c: (mono_class_is_assignable_from): Revert the last changes
23191         since they don't work with generics.
23192         
23193         * class.c (mono_class_is_assignable_from): Fix build bustage.
23194
23195         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23196         the managed IsAssignableFrom method. Fixes #73469.
23197
23198         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23199         function.
23200
23201 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23202
23203         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23204         memory when the remoting callback does not sets the out arguments.
23205         Fixes #73007.
23206
23207         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23208         by mistake.
23209
23210         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23211
23212         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23213
23214         * appdomain.c: Bump corlib version.
23215
23216 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23217
23218         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23219         function.
23220
23221         * threads.c (mono_thread_attach): Detect threads which are not started
23222         by the GC pthread wrappers.
23223
23224 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23225
23226         * icall.c: Added new icall for RNG.
23227         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23228         single handle on Linux to access /dev/urandom and fix #73183.
23229
23230 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23231
23232         * object.c: setting the new vtable in a transparent proxy object must
23233         not change the GC descriptor.
23234
23235 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23236
23237         * object.c: fixed compilation without GCJ support.
23238         * reflection.c: for runtime-created types ensure klass->has_references
23239         is correct (bug #73215).
23240
23241 2005-03-02  Martin Baulig  <martin@ximian.com>
23242
23243         * class.c (mono_class_is_assignable_from): Make this work if
23244         `oklass' is a generic instance; fixes #72831.
23245
23246 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23247
23248         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23249         with hasthis set.
23250         
23251         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23252
23253         * marshal.c: Reorganize native->managed marshalling code to also use
23254         the emit_marshal_... functions.
23255
23256 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23257
23258         * object.c: typed allocs have issues with bitmap sizes > 30,
23259         so check for max_set >= 30.
23260
23261 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23262
23263         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23264         managed code. Fixes #73012.
23265
23266         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23267
23268         * metadata.c reflection.c: Load/Emit elem_mult as well.
23269         
23270         * metadata.h (MonoMarshalSpec): Add comment.
23271
23272         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23273
23274         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23275         num_elem to -1 if not given.
23276
23277         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23278
23279         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23280         given values.
23281
23282 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23283
23284         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23285
23286 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23289
23290         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23291
23292 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23293
23294         * object.c: generalized the reference bitmap creation
23295         and added hooks for the new GC.
23296         * class-internals.c: removed the gc_bitmap field from MonoClass.
23297
23298 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23299
23300         * domain.c: help the compiler to produce better code
23301         in mono_jit_info_table_find ().
23302
23303 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23304
23305         * object.c: make all allocations look typed.
23306
23307 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23308
23309         * socket-io.c: load Mono.Posix if it's not loaded already
23310         (fixes bug#73033).
23311
23312 2005-02-24  Martin Baulig  <martin@ximian.com>
23313
23314         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23315         * reflection.c (dup_type): Likewise.
23316
23317 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23318
23319         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23320         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23321
23322 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23323
23324         * domain.c, threads.c, object-internals.h: make the critical thread
23325         local vars use the fast access mode (even when we're compiled in
23326         a lib). Provide accessors to be used by the jit during codegen.
23327
23328 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23329
23330         * appdomain.c: Changed hook functios behavior to include
23331         support for the reflection only assemblies. Some icalls were changed
23332         to support the mentioned assemblies too. Signatures of static methods
23333         try_assembly_resolve and real_load now have an additional parameter:
23334         refonly.
23335
23336         * assembly.c: General changes to mono_assembly_ methods to support
23337         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23338         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23339         suffix, to support an additional gbool parameter to specify whether
23340         the assembli is reflection only or not. Created some new hook functions 
23341         to add support for reflection only assemblies. Signatures of static 
23342         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23343         have now an additional parameter: refonly.
23344
23345         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23346         indicating whether the assembly is reflection only or not.
23347
23348         * exception.c: Add mono_get_exception_invalid_operation.
23349
23350         * icall.c: Throw an InvalidOperationException when trying to invoke
23351         a property/method/event, or trying to set/get the value of a field.
23352         Also add an icall to retrieve the ref_only flag to the
23353         MonoReflectionAssembly.
23354
23355 2005-02-23  Chris Toshok  <toshok@ximian.com>
23356
23357         Part of fix for #72827.
23358         * mono-debug.c (mono_debug_add_method): add lexical block data to
23359         the info we write.  Kind of a hack at the moment - we copy the
23360         lexical block info from the MonoDebugMethodInfo to the
23361         MonoDebugMethodJitInfo here, before writing it.
23362         (mono_debug_read_method): read the lexical block info.
23363
23364         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
23365
23366         * debug-mono-symfile.h: add lexical block support.
23367
23368         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
23369         support.
23370
23371 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23372
23373         * loader.c (mono_lookup_pinvoke_call): Fix warning.
23374
23375         * object.c (mono_runtime_free_method): Call mono_free_method () and
23376         put the TODOs there.
23377
23378         * loader.c (mono_free_method): Free up most memory allocated for 
23379         dynamic methods.
23380
23381 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
23382
23383         * reflection.c: properly flag a Type argument to a
23384         named custom attr value (bug #72248).
23385
23386 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23387
23388         * reflection.c: reduce code duplication in named custom
23389         attribute encoding.
23390
23391 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
23392
23393         * reflection.c: properly encode custom attrs of type object
23394         (bug #72649).
23395
23396 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
23397
23398         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
23399
23400 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
23401
23402         * socket-io.c: load System.dll if it's not loaded already
23403         (bug #72850 and #70477).
23404
23405 2005-02-21  Martin Baulig  <martin@ximian.com>
23406
23407         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23408         generic instances.
23409
23410 2005-02-21  Martin Baulig  <martin@ximian.com>
23411
23412         * reflection.c (mono_image_build_metadata): We also need to
23413         "fixup" the MethodImpl table after we computed the final method
23414         indices.  Call fixup_methodimpl() to do that.
23415         (fixup_methodimpl): New private method.
23416
23417 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23418
23419         * assembly.c: special case mscorlib.dll (bug#72536),
23420         patch from Carlos Alberto Cortez.
23421
23422 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
23423
23424         * threads-types.h threads.c: Fix build bustage.
23425
23426         * threads.c: Use a union for long<->double conversions.
23427
23428         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
23429         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
23430
23431         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
23432         containing the checkpoint call with NOT_TAKEN.
23433         
23434         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
23435         checkpoint before pushing the arguments, so they won't have to be
23436         spilled to stack.
23437
23438 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23439
23440         * domain.c, assembly.c, domain-internals.h: make some data
23441         const and relocation-free.
23442
23443 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
23444
23445         * object.c, appdomain.c, class-internals.h: introduce the
23446         MonoClassRuntimeInfo structure to hold the info needed to
23447         use a class at runtime. Made mono_class_vtable() lock-free
23448         for all the appdomains.
23449
23450 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
23451
23452         * metadata-internals.h, image.c: introduce a per-image mempool to
23453         be used for memory that has the same lifetime as the image.
23454
23455 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
23456
23457         * domain.c: In mono_init_internal(), instead of selecting the first
23458         runtime version supported by an executable, get a list of all
23459         supported versions and select the one for which an mscorlib exists
23460         (since even if the runtime supports a given version, it doesn't mean
23461         that the framework for that version is installed).
23462         Modified get_runtimes_from_exe to support this behavior.
23463         In supported_runtimes, added information about additional system
23464         assembly versions.
23465         
23466         * assembly.c: Added support for more than one system assembly version
23467         per runtime version. Updated the assembly list.
23468         In mono_assembly_remap_version, removed the initial version check,
23469         since we don't know to which version we need to compare until we
23470         get the version set on which the assembly is based.
23471         Moved the code for loading corlib into the new method
23472         mono_assembly_load_corlib(), so it can be used by the initialization
23473         code.
23474         
23475         * domain-internals.h: Updated data structures and added declaration
23476         for mono_assembly_load_corlib.
23477
23478 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23479
23480         * reflection.c (resolve_object): Fix the creation of the signature in 
23481         the SignatureHelper case.
23482
23483         * assembly.c (mono_assembly_remap_version): Fix binary search.
23484         
23485 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
23486  
23487         * class.c: Added inheritance check when a method is overloaded (from a
23488         virtual method or when implementing an interface) and when a class is
23489         inherited. Added functions to set a failure for a class and to 
23490         retreive the exception from a failure.
23491         * class-internals.h: Added fields to MonoClass to keep the exception
23492         information status for inheritance (or other exceptions) to be thrown
23493         later (i.e. not at load time).
23494         * object.c: Throw the inheritance SecurityException when a type is to 
23495         be created with either class or method inheritance violations.
23496         * reflection.c|h: Fix when getting declsec from a class. Removed 
23497         unrequired code for class. Improved sanity in parameter naming.
23498         * security-manager.c|h: Added functions to check for class and method
23499         inheritance.
23500
23501 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
23502
23503         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
23504         and has_finalize in dynamic types as well.
23505
23506 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
23507
23508         * culture-info-table.h : fixed currency format for en-GB (and so on).
23509
23510 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
23511
23512         * gc.c: ensure the GC handles never have 0 as a value.
23513
23514 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23515
23516         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
23517         a pointer to a struct to unmanaged code. Fixes #72625.
23518
23519 2005-02-16  Martin Baulig  <martin@ximian.com>
23520
23521         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
23522
23523 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
23524
23525         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
23526
23527 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23528
23529         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
23530
23531         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
23532         UnmanagedFunctionPointerAttribute, use it for determining calling convention
23533         etc. Fixes #71471.
23534
23535         * reflection.c (mono_custom_attrs_get_attr): New helper function.
23536
23537         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
23538
23539 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
23540
23541         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
23542         changes to make the current context a field in MonoThread.
23543
23544 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
23545
23546         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
23547         the last change.
23548         
23549         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
23550         extracted from mono_marshal_get_native_wrapper.
23551
23552         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
23553         to create wrappers around native functions.
23554
23555         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
23556         delegates for arbitrary function pointers. Fixes #71472.
23557
23558 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
23559
23560         * threads.c: cleaned up the code a little.
23561
23562 2005-02-15  Martin Baulig  <martin@ximian.com>
23563
23564         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
23565         the data table.
23566
23567         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
23568         allocate larger chunks if needed.
23569
23570 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
23573         in by mistake.
23574
23575 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
23576
23577         * domain.c: keep the domains in an array and ensure the domain ids
23578         are kept small, so they can be used as indexes to domain-specific data
23579         with a small memory overhead.
23580
23581 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
23582
23583         * icall.c: Handle byref types in Type icalls. Fixes #72544.
23584
23585 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
23586
23587         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
23588
23589 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
23590
23591         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
23592
23593         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
23594         values.
23595
23596         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
23597         
23598 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
23599
23600         * domain-internals.h: add the hashtable here.
23601
23602         * class-internals.h: Remove `info' from MonoMethod
23603
23604         * domain.c: Add a new hashtable, jit_trampoline_hash
23605
23606 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
23607
23608         * object.c: don't set the value of static fields
23609         (fixes bug#72494).
23610
23611 2005-02-11  Martin Baulig  <martin@ximian.com>
23612
23613         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
23614         (mono_debug_add_method): Silently ignore the method if it's too big.
23615         (mono_debug_add_type): Likewise.
23616
23617 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
23618
23619         * threads.c, appdomain.c: remove #ifdefs from the code.
23620
23621 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
23622
23623         * metadata-internals.h: Added flags to MonoAssembly to cache the most
23624         common security informations. This allows us to stay in unmanaged code
23625         when doing LinkDemand and it's special cases (except for the first 
23626         time for initialization). The flags a very much used with --security.
23627         * reflection.c|h: Added code to get declarative security attributes 
23628         for LinkDemand and InheritanceDemand. This required to refactor the
23629         existing code for Demand.
23630         * security-manager.c|h: Added new method fields for the special cases
23631         of LinkDemand.
23632
23633 2005-02-10  Martin Baulig  <martin@ximian.com>
23634
23635         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
23636         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
23637
23638 2005-02-10  Martin Baulig  <martin@ximian.com>
23639
23640         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
23641         debugging code; this is almost a complete rewrite.
23642
23643         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
23644
23645 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23646
23647         * domain.c, object.h: expose mono_string_equal () and 
23648         mono_string_hash ().
23649         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
23650         it's implemented in managed code.
23651
23652 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23653
23654         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
23655         lo leak objects between appdomains.
23656
23657 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23658
23659         * assembly.c: old compilers compilation fix from 
23660         robertj@gmx.net (Robert Jordan).
23661
23662 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
23663
23664         * class-internals.h: Little reminder for the future.
23665
23666         * debug-helpers.c: Fix up wrapper_type_names
23667
23668 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23669
23670         * image.c, metadata-internals.h: when loading an image from a file,
23671         mmap all of it and use the same codepaths as when using a
23672         in-memory image: the code is simpler and we use less memory
23673         (both writable and readonly).
23674
23675 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
23676
23677         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
23678         API to alloc runtime data structures that need to be tracked by the
23679         GC and contain pointers.
23680         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
23681         make the code more readable and eventually use a different GC.
23682
23683 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
23684
23685         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
23686         for out arguments.
23687         
23688 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
23689
23690         * object.c: In release_type_locks(), don't release the cctor lock
23691         if it has already been released. This fixes a crash in the
23692         thread5 test.
23693
23694 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23695
23696         * gc.c, marshal.c, icall.c: register a delegate for finalization
23697         only when the native function pointer has been allocated for it.
23698
23699 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
23700
23701         * object.c: cleaned up some code, allocate objects that are
23702         pointer free with the atomic malloc variant. Allocate memory
23703         for static data from the mempool if it's pointer-free.
23704         Allocate the bounds array at the end of the array data, when needed.
23705         * object-internals.h, object.h: move a private function in a private
23706         header.
23707         * class.c: handle missing case in tracking references in fields.
23708
23709 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
23710
23711         * class.c, class-internals.h: keep track if a type has
23712         reference fields in either the instance or static fields.
23713
23714 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
23715
23716         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
23717         and renamed to MonoRuntimeInfo. Added fields to store the expected
23718         framework assembly version. Changed mono_get_framework_version and
23719         mono_get_runtime_version for a single mono_get_runtime_info method.
23720         
23721         * assembly.c: Added method to remap system assembly versions to the
23722         current executing runtime version. Removed old mapping code.
23723         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
23724         
23725         * icall.c, reflection.c: Track api changes.
23726
23727 2005-02-06  Miguel de Icaza  <miguel@novell.com>
23728
23729         * loader.c (method_from_memberref): Improve error reporting,
23730         produce the class name instead of the typeref/typedef index. 
23731
23732 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
23733
23734         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
23735
23736 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
23737
23738         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
23739         stdcall and charset name mangling.  Reorganize the code and add
23740         some tracing stuff.
23741
23742 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
23743
23744         * monodiet.c: More iters!
23745
23746         * marshal.c: Iter usage.
23747
23748         * icall.c: Iter usage.
23749
23750         * object.c: Use iters.
23751
23752         * debug-helpers.c: More iters
23753
23754 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
23755
23756         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
23757         under win32.
23758
23759 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
23760
23761         * mono-debug-debugger.c: use iters
23762
23763         * class.c, class-internals.h: mono_class_setup_events is static
23764         now
23765
23766         * All callers: use iters
23767
23768 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
23769
23770         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
23771         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
23772
23773 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
23774
23775         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
23776
23777         * marshal.h: Add prototypes for ldfld/stfld_remote.
23778
23779         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
23780         this is called during startup.
23781         
23782 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
23783
23784         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
23785         MonoThreadsSync struct private in monitor.c. Changed the way
23786         MonoThreadsSync is allocated so it's faster and there is no
23787         need to keep track of it with a finalizer and it uses less memory.
23788         This also finally allows us to allocate mono objects as ptrfree when
23789         there are no reference fields.
23790
23791 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
23792
23793         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
23794         disappearing link to the GC interface and use them to simplify
23795         the gchandles code.
23796
23797 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
23798
23799         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
23800         stfld_remote which call mono_load/store_field_new. This allows methods
23801         calling ldfld/stfld wrappers to be AOTed.
23802
23803         * console-io.c: Include sys/filio.h under solaris.
23804         
23805         * console-io.c: Include curses.h if needed correctly.
23806
23807 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
23808         
23809         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
23810         method->klass as well.
23811
23812         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
23813
23814         * class.c (mono_class_init): Switch on lazy initialization of 
23815         methods.
23816
23817         * class.c (mono_class_get_finalizer): Handle the case when the 
23818         finalizer is inherited.
23819
23820 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23821
23822         * console-io.c: <curses.h> is needed by term.h on solaris.
23823
23824 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
23825
23826         * icall.c, class-internals.h, monodiet.c, class.c: Remove
23827         mono_class_setup_properties where possible. Remove this ftn from
23828         the header file, and make it static.
23829
23830 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * loader.c: Add missing setup_... call.
23833
23834         * class.c: Add missing setup_... calls.
23835
23836         * class.c (mono_class_init): Switch on lazy initialization of 
23837         the generic vtable.
23838         
23839         * class.c (mono_class_init): Fix generics broken by the recent changes.
23840
23841         * monodiet.c (handle_type): Add missing setup_... calls.
23842
23843         * class.c: Back out garbage in previous patch.
23844         
23845         * class.c: Add missing setup_... calls.
23846
23847         * class.c (mono_class_get_method_from_name_flags): Avoid calling
23848         mono_class_setup_methods () if possible.
23849
23850         * class-internals.h (MonoClass): Add 'has_cctor' flag.
23851
23852         * class-internals.h (MonoCachedClassInfo): New structure.
23853
23854         * class.c: Initialize properties and events fields of MonoClass lazily.
23855
23856         * class.c: Add infrastructure for lazily initializing the methods and
23857         vtable fields of MonoClass. Not yet used.
23858
23859         * class.c (mono_class_get_finalizer): New helper function.
23860
23861         * class.c: Add infrastructure for loading some class related data from
23862         an AOT file.
23863
23864         * object.c: Add infrastructure for initializing the vtable from data
23865         in the AOT file.
23866
23867         * gc.c (run_finalize): Use mono_class_get_finalizer ().
23868
23869         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
23870         appropriate initialization function before accessing parts of the
23871         MonoClass structure.
23872
23873         * marshal.c: Fix warnings.
23874         
23875         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
23876
23877         * mono-debug-debugger.c (get_exception_message): Use 
23878         mono_class_get_method_from_name_flags ().
23879
23880 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
23881
23882         * reflection.c, appdomain.c: Replace a few manual searches that
23883         Zoltan missed. (Paolo approved this part of my initial patch).
23884
23885 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
23886
23887         * profiler.c: disable recording statistical events at report time.
23888
23889 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23890
23891         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
23892         to byteswap arrays of enum values, too (bug #72080).
23893
23894 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
23895
23896         * appdomain.c (set_domain_search_path): Allow this to be called if
23897         domain->setup is not yet set.
23898
23899         * loader.c (mono_method_get_index): New helper function.
23900
23901         * loader.c reflection.c: Use mono_method_get_index ().
23902
23903         * class.c (mono_class_get_method_from_name_flags): New helper method.
23904
23905         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
23906         this.
23907
23908         * class.c (mono_class_get_cctor): New helper method.
23909
23910         * string-icalls.c object.c class.c marshal.c reflection.c: Use
23911         mono_class_get_method () to look up methods.
23912
23913 2005-02-01  Miguel de Icaza  <miguel@novell.com>
23914
23915         * console-io.c: Fix the build, this should work on Windows.
23916
23917 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
23918
23919         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
23920         be set to null to keep things valid
23921
23922 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23923
23924         * icall.c: added Console 2.0 icalls.
23925         * Makefile.am: added console-io.[ch]
23926         * console-io.[ch]: internal calls for Console 2.0 API.
23927
23928 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23929
23930         * class.c: make sure we consider all the interfaces
23931         when calculating max_interface_id (bug found by
23932         Jeroen Frijters running ikvm).
23933
23934 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
23935
23936         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
23937         valuetype fields to null.
23938
23939         * object.c (set_value): Ditto. Fixes #71669.    
23940
23941 2005-01-31  Martin Baulig  <martin@ximian.com>
23942
23943         * metadata.c (mono_metadata_has_generic_params): New public
23944         function; checks whether something is a generic method.
23945
23946 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
23947
23948         * appdomain.c: fix infinite recursion when adding assemblies.
23949
23950 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
23951
23952         * object.c: Fix small typo to return all items for Environment.
23953         GetCommandLineArgs.
23954
23955 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23956
23957         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
23958         reflection.c: more domain and assembly-unload related fixes
23959         and memory leaks plugs.
23960
23961 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
23962
23963         * 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.
23964
23965 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
23966
23967         * loader.c (mono_method_signature): Make this method lazy
23968         (mono_get_method_from_token): Don't computate the signature here.
23969
23970         Doing this saves quite a bit of memory. I got 90 kb on starting up
23971         monodoc. It should also save some disk reads on startup.
23972
23973         * *: MonoMethod->signature might be NULL now. You *MUST* use
23974         mono_method_signature.
23975
23976 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
23977
23978         * object.c (mono_runtime_get_main_args): Return an array from the
23979         current domain here. Fixes #71938.
23980
23981 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
23982
23983         * monitor.c: formatting changes to comply with the
23984         mono coding style and remove #ifdefs from the code.
23985
23986 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23987
23988         * metadata.c, private.h: remove some unneeded data
23989         and use a more compact representation for table schemas.
23990
23991 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
23992
23993         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
23994         to get a better distribution in hash tables.
23995         * *.c: use mono_aligned_addr_hash() where appropriate.
23996         * assembly.c: make var static.
23997
23998 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
23999
24000         * domain-internals.h: Put MonoJitInfo on a diet.
24001
24002         * domain.c: Fix a warning.
24003
24004 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24005
24006         * gc.c: rework the gc handles code to reuse handles
24007         when freed.
24008
24009 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24010
24011         * domain.c: fixed long standing bug in mono_string_equal() which
24012         was brought to light with the ldstr changes.
24013
24014 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24015
24016         * reflection.c: Remove warning by adding missing include for marshal.h
24017
24018 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24019
24020         * domain.c, object.c: change the ldstr_table to hold
24021         MonoString* as keys: makes the runtime isinterned lookup
24022         faster and simplifies memory management.
24023
24024 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24025  
24026         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24027         possible to add imperative security checks before calling the icall.
24028         * reflection.c: Return security attributes on the original MonoMethod
24029         (and not the wrapped one). This fix permissions on icalls.
24030
24031 2005-01-25  Dick Porter  <dick@ximian.com>
24032
24033         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24034         the check for mktime() support actually test the mktime() return
24035         value.  "Fixes" bug 71682, though the output is still different to
24036         MS.
24037
24038 2005-01-25  Martin Baulig  <martin@ximian.com>
24039
24040         * class.c (mono_class_is_assignable_from): Make this work for
24041         generic instances.
24042
24043 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24044
24045         * marshal.c (mono_string_utf8_to_builder)
24046         (mono_string_builder_to_utf16): We might not have ownership of the
24047         string. In thise case, we need to create a new buffer.
24048
24049         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24050         be null, in which case, use the default capacity.
24051
24052 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24053
24054         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24055         GC events to the profiler.
24056
24057 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24058
24059         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24060         if you don't want the GC to run.
24061
24062 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24063
24064         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24065         start providing a GC API and keeping different implementations in
24066         their own file.
24067         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24068
24069 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24070
24071         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24072         mmap rather than allocating a huge buffer.
24073         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24074         above.
24075
24076 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24077
24078         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24079         and CheckExecutionRights.
24080         * reflection.c|h: Keep the index of the declarative security to be 
24081         used, instead of the pointer, when AOT compiler is used. Also add 
24082         class initialization when requesting demands.
24083         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24084         CheckExecutionRights. Both properties are now FALSE by default, and
24085         unmodifiable, unless the --security option is used.
24086
24087 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24088
24089         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24090         reflection.c: properly refcount images and assemblies, many leaks fixed.
24091
24092 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24093
24094         * threadpool.c: increase the timeout for threads in the thread pool to
24095         10s.  Fixes bug #67159.
24096
24097 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24098
24099         * class-internals.h: Sun's compiler insists on explicit
24100         signed on bit fields to handle then correctly.
24101
24102 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24103
24104         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24105         Make the size of the array fit only the number of invalid path
24106         chars that we have.
24107
24108         * class.c (_mono_class_get): Improve the error reporting when a
24109         class referenced is not found, to assist debugging. 
24110
24111 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24112
24113         * threads.c: fix off-by-one error.
24114         * domain.c: free data allocated in the domain.
24115
24116 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24117
24118         * reflection.c (mono_method_body_get_object): Fill out exception info
24119         as well.
24120
24121         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24122         structure.
24123         
24124 2005-01-19  Martin Baulig  <martin@ximian.com>
24125
24126         * loader.c (mono_get_method_constrained): Make this work again.
24127
24128 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24129
24130         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24131         guint16 to match the managed side.
24132
24133         * reflection.c (mono_reflection_body_get_object): Fill out local
24134         variables array.
24135
24136         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24137         as well.
24138
24139         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24140         'local_var_sig_token'.
24141
24142 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24143
24144         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24145         System.Drawing.
24146
24147         * reflection.c (mono_method_body_get_object): Handle abstract and
24148         runtime methods.
24149
24150 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24151
24152         * marshal.c, loader.c, class-internals.h, reflection.c:
24153         store the emthod data for a wrapper in an array instead of a list.
24154
24155 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24156
24157         * marshal.c: change the code to allocate memory more
24158         conservatively for method wrappers.
24159
24160 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24161
24162         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24163         fields from MonoClass to the marshal info structure where they belong.
24164
24165 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24166
24167         * class.c, object.c, class-internals.h, marshal.c: rearrange
24168         some fields and tweak some types to lower memory usage.
24169
24170 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24171
24172         * threads.c (signal_thread_state_change): Handle the case when the
24173         target thread is the current thread.
24174
24175         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24176
24177         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24178         emit_ptr_to_object_conv. 
24179
24180         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24181         marshalling. Fixes #71352.
24182
24183 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24184
24185         * metadata.h, blob.h: move table enum to blob.h so it can be included
24186         in any header.
24187         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24188         cut the size of MonoImage/MonoDynamicImage.
24189
24190 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24191
24192         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24193
24194 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24195
24196         * reflection.c, reflection.h, icall.c: add a function to check
24197         if an attribute type is defined for a metadata object.
24198
24199 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24200
24201         * object-internals.h: Added some needed fields from StringBuilder class.
24202         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24203
24204 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24205
24206         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24207         threads before shutting down the runtime.
24208
24209         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24210
24211 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24212
24213         * object-internal.h, threads.c: implement stacksize and 
24214         parameterized thread start functionality (requires
24215         matching corlib). Marked broken code for later removal.
24216
24217 2005-01-12  Martin Baulig  <martin@ximian.com>
24218
24219         * class-internals.h (MonoGenericClass): Moved the `initialized'
24220         flag to MonoDynamicGenericClass, removed `init_pending'.
24221         (MonoGenericInst): Added `is_reference' flag.
24222
24223 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24224
24225         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24226         inside the MSDOS header. Fixes #71201.
24227
24228         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24229         gc thread.
24230         (mono_domain_finalize): Ditto.
24231
24232 2005-01-12  Martin Baulig  <martin@ximian.com>
24233
24234         * class.c (mono_get_shared_generic_class): Use the cache for
24235         non-dynamic generic classes.
24236
24237         * class-internals.h (mono_class_create_generic_2): Removed
24238         function prototype, this function is now static inside class.c.
24239
24240         * class.c (mono_class_create_generic_2): Made this static, only
24241         call it from mono_class_init() and mono_class_setup_parent().
24242         (collect_implemented_interfaces_aux): Call mono_class_init() on
24243         the interfaces we collect.
24244         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24245
24246 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24247
24248         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24249         it a real thread handle.
24250
24251         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24252         MonoJitExceptionInfo, since each catch clause needs its own variable.
24253         
24254 2005-01-11  Dick Porter  <dick@ximian.com>
24255
24256         * image.c (mono_pe_file_open): New variant on mono_image_open()
24257         that does not set up the CLI metadata; used for FileVersionInfo so
24258         it can get the data for windows binaries too.
24259         
24260         * process.c (process_read_string_block): Don't read off the end of
24261         the StringTable block.
24262
24263         These both fix bug 70766.
24264
24265 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24266
24267         * gc.c: set some fields to NULL at GC cleanup time.
24268         * threads.c: if we quit the main thread, call exit ().
24269
24270 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24271
24272         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24273
24274 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24275
24276         * threads.h, threads.c, object.c: added accessor and settor for
24277         main_thread. Handle it specially when exiting from it: wait
24278         for other foreground threads to exit.
24279
24280 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24281
24282         * process.c, verify.c: remove some bloat.
24283
24284 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24285
24286         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24287         the calling convention to cdecl under win32.
24288
24289 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24290
24291         * object.c (mono_object_get_size): New function to get the size of
24292         an object instance.
24293
24294         * profiler.c (simple_allocation): Use above.
24295
24296 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24297
24298         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24299         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24300         get an appdomain by it's id and we can't assume the root's id is 0).
24301         * domain-internals.h: Change the function prototype to match.
24302         * icall.c: Change the icall table for AppDomain.
24303
24304 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24305
24306         * locales.c (string_invariant_compare_char): Only compute
24307         GUnicodeTypes in the case where we need them.  Test for ordinality
24308         first and return if so.
24309
24310         From the commit:
24311
24312                 /*
24313                  * FIXME: here we must use the information from c1type and c2type
24314                  * to find out the proper collation, even on the InvariantCulture, the
24315                  * sorting is not done by computing the unicode values, but their
24316                  * actual sort order.
24317                  */
24318
24319 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24320
24321         * loader.c: for P/Invoke methods, allow the "Internal" shared
24322         library name to refer to the calling process symbol namespace.
24323
24324 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24325
24326         * Makefile.am: Add the security manager to the build.
24327         * security-manager.c|h: New. Initialization of the security manager.
24328
24329 2005-01-07  Dick Porter  <dick@ximian.com>
24330
24331         * threads.c: 
24332         * monitor.c: Update thread state during Monitor and WaitHandle
24333         waits.  Fixes bug 71031.
24334
24335 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24336
24337         * reflection.c (property_encode_signature): Correctly handle when the
24338         property has no methods.
24339
24340 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24341
24342         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24343         
24344         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24345         fields from mb, not rmb. Fixes #71017.
24346
24347         * marshal.c (emit_ptr_to_str_conv): Add support for 
24348         ByValTStr -> string conversion. Fixes #71015.
24349
24350         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24351
24352         * mempool.c (mono_mempool_contains_addr): New helper function.
24353
24354 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24355
24356         * metadata.c (mono_metadata_compute_size): Fix size calculation of
24357         HasSematics encoded fields.
24358         
24359         * metadata.c (mono_type_to_unmanaged): Improve error message for 
24360         invalid string marshalling.
24361
24362         * metadata.c: Fix warnings.
24363         
24364 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24365
24366         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
24367         profiler support.
24368
24369 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24370
24371         * domain.c object.c domain-internals.h: Revert part of r38077 since the
24372         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
24373         tests.
24374
24375 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
24376
24377         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
24378         so methods containing these can be AOTed.
24379
24380 2005-01-03  Martin Baulig  <martin@ximian.com>
24381
24382         * loader.c (find_method): Removed the hack for generic instances.
24383         (method_from_memberref): If our parent is a generic instance, pass
24384         its generic type definition to find_method() and then inflate the
24385         method.
24386         (mono_get_method_constrained): Pass the generic type definition to
24387         find_method() and inflate the method later.
24388
24389         * class-internals.h (MonoStats): Added `generic_class_count'.
24390
24391         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
24392         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
24393
24394         * reflection.c (mono_custom_attrs_from_params): Don't ignore
24395         generic type definitions.
24396
24397 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
24398
24399         * loader.c icall.c: Fix warnings.
24400
24401 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
24402
24403         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
24404         blittable types. Fixes #70864.
24405
24406 2004-12-29  Martin Baulig  <martin@ximian.com>
24407
24408         * icall.c
24409         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
24410
24411         * reflection.c (mono_method_get_object): Create a
24412         "System.Reflection.MonoGenericMethod" for inflated methods; don't
24413         call mono_get_inflated_method().
24414
24415         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
24416
24417 2004-12-27  Martin Baulig  <martin@ximian.com>
24418
24419         * class-internals.h (MonoMethod): Added `is_inflated' flag.
24420         (MonoMethodInflated): Added `inflated' field.
24421
24422         * class.c (mono_class_inflate_generic_method): Don't really
24423         inflate the method here; just set the `is_inflated' flag in the
24424         MonoMethod.
24425         (mono_class_get_inflated_method): Actually inflate the method here
24426         if it's not already inflated; we use the MonoMethodInflated's new
24427         `inflated' field as a cache.
24428
24429 2004-12-26  Martin Baulig  <martin@ximian.com>
24430
24431         * class.c
24432         (inflate_generic_class): Moved some code out of inflate_generic_type().
24433         (mono_class_inflate_generic_method): If we're already inflated,
24434         inflate the context and use the declaring method; ie. make sure
24435         the declaring method of an inflated method is always the generic
24436         method definition.
24437         (mono_class_create_from_typedef): Create
24438         `class->generic_container->context->gclass'.
24439
24440 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
24441
24442         * metadata-internals.h, marshal.c, reflection.c: More
24443         MonoGHashTable->GHashTable.
24444
24445         * domain-internals.h, class.c: Change MonoGHashTable's into
24446         GHashTables for some cases where no gc stuff is used
24447
24448         All users: update apis
24449
24450 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
24451
24452         * metadata.c (builtin_types): Make this `const'. Makes this get
24453         put into the shareable section.
24454         (mono_metadata_init): Casts to make gcc happy.
24455
24456 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
24457
24458         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
24459
24460 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
24461
24462         * icall.c: Added an internal call to retrieve the position and length
24463         of assembly-level declarative security attributes (RequestMinimum, 
24464         RequestOptional and RequestRefuse). This is used by the Assembly class
24465         to re-create the corresponding permission sets.
24466
24467 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
24468
24469         * marshal.c: fix the stelemref wrapper to be type correct
24470         (and faster).
24471
24472 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
24473
24474         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
24475         to do key & 0x7fffffff. Hashtable already does this. It just
24476         results in longer code.
24477
24478 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
24479
24480         * appdomain.c: Bump corlib version.
24481         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
24482         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
24483         * reflection.c|h: Add functions to get declarative security infos
24484         (blob position and length) for assemblies, classes and methods.
24485
24486 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
24487
24488         * reflection.c: sort the constant table (bug #70693).
24489
24490 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
24491
24492         * object-internals.h, threads.c, domain.c: add accessors for
24493         the MonoThread and MonoDomain tls keys.
24494
24495 2004-12-18  Martin Baulig  <martin@ximian.com>
24496
24497         * class.c (inflate_generic_type): If we're inflating a generic
24498         instance, set `ngclass->context->container = context->container';
24499         ie. the container we inflated into.
24500
24501         * metadata.c (mono_metadata_parse_generic_param): Reflect above
24502         inflate_generic_type() changes.
24503
24504 2004-12-17  Martin Baulig  <martin@ximian.com>
24505
24506         * class-internals.h
24507         (MonoGenericClass): Replaced `MonoType *generic_type' with
24508         `MonoClass *generic_class'.  Removed `dynamic_info'; if
24509         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
24510         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
24511
24512 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
24513
24514         * exception.c (mono_exception_from_token): New helper function.
24515
24516 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
24517
24518         * assembly.c (mono_assembly_load_with_partial_name): Call 
24519         mono_assembly_loaded before invoking the preload hooks. Fixes
24520         #70564.
24521
24522         * object-internals.h (MonoThread): Change culture_info and 
24523         ui_culture_info into an array.
24524
24525         * threads.c: Cache culture info objects from more than one appdomain.
24526
24527         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
24528         current UI culture.
24529
24530 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
24531
24532         * threads.h threads.c appdomain.c: Clear the culture_info field of
24533         all threads during unloading if they point to an object in the dying
24534         appdomain.
24535
24536 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
24537
24538         * culture-info.h (TextInfoEntry): New struct
24539         * object-internals.h: sync with managed
24540         * locales.c: fill the `text_info_data' field
24541         * culture-info-tables.h: update
24542
24543 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24544
24545         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
24546         collector.
24547
24548 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
24549
24550         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
24551         (ves_icall_ModuleBuilder_getMethodToken): Ditto
24552
24553 2004-12-12  Martin Baulig  <martin@ximian.com>
24554
24555         * mono-debug-debugger.c (write_type): If we're an enum and the
24556         builtin types have already been initialized, call mono_class_init().
24557
24558 2004-12-11  Martin Baulig  <martin@ximian.com>
24559
24560         * metadata.c (mono_metadata_load_generic_params): Added
24561         `MonoGenericContainer *parent_container' argument; automatically
24562         compute `container->is_method'; pass the correct owner to
24563         get_constraints().      
24564
24565         * reflection.c (compare_genericparam): Sort the GenericParam table
24566         according to increasing owners. 
24567
24568 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
24569
24570         * profiler.c: allow disabling the default profiler.
24571
24572 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
24573
24574         * decimal.c, icall.c: allow disabling System.Decimal support.
24575
24576 2004-12-09  Marek Safar <marek.safar@seznam.cz>
24577
24578         * reflection.c: Add support for null attribute arguments.
24579
24580 2004-12-09  Martin Baulig  <martin@ximian.com>
24581
24582         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
24583         names to get rid of compiler warnings.
24584
24585 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24586
24587         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
24588         mono_marshal_load_type_info (). Fixes #69625.
24589         (mono_marshal_get_ptr_to_struct): Likewise.
24590
24591 2004-12-08  Martin Baulig  <martin@ximian.com>
24592
24593         * mono-debug.h: Bumped version number to 47.
24594
24595         * mono-debug-debugger.c
24596         (mono_debugger_event_handler, mono_debugger_event): Take two
24597         guint64 arguments insteed of a gpointer and a guint32.  
24598
24599 2004-12-08  Martin Baulig  <martin@ximian.com>
24600
24601         * debug-mono-symfile.h
24602         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
24603         `address' to `native_offset'.
24604
24605 2004-12-08  Martin Baulig  <martin@ximian.com>
24606
24607         * class.c (mono_class_create_from_typespec): Only inflate if we
24608         either have `context->gclass' or `context->gmethod'.
24609
24610 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
24611
24612         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
24613
24614         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
24615
24616         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
24617
24618         * reflection.c (mono_assembly_get_object): Remove the workaround put
24619         in for the release.
24620         
24621         * appdomain.c: Use the corlib_internal field from MonoAssembly.
24622
24623         * appdomain.c: Bump corlib version.
24624
24625         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
24626         be visible in other appdomains.
24627
24628 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
24629
24630         * threads.c: Interlocked inc and dec for longs were messed up,
24631         use a KISS based impl for this. Fixes 70234
24632
24633 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
24634
24635         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
24636
24637 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
24638
24639         * icall.c: fix to follow policy not to allow struct
24640         arguments in icalls.
24641
24642 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24643
24644         * process.c: make the patch that handles spaces in file paths work
24645         on mono/windows too.
24646
24647 2004-12-06  Martin Baulig  <martin@ximian.com>
24648
24649         * class.c (mono_class_create_generic): Call
24650         mono_class_setup_supertypes() if we're dynamic.
24651         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
24652
24653 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
24654
24655         * object-internals.h: Add new fields to MonoThread.
24656
24657         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24658
24659         * icall.c threads-types.h threads.c: Add new icalls.
24660
24661         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
24662
24663         * object-internals.h (MonoReflectionAssembly): Sync object layout with
24664         managed side.
24665
24666         * appdomain.c: Bump corlib version.
24667
24668         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
24669         internal assemblies. Fixes #69181.
24670
24671 2004-12-05  Martin Baulig  <martin@ximian.com>
24672
24673         * class.c (mono_class_inflate_generic_signature): Make this a
24674         no-op if `context' is NULL or we don't have any type parameters;
24675         also copy `sentinelpos'.        
24676
24677 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
24678
24679         * image.c: Add unbox_wrapper_cache.
24680
24681         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
24682
24683         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
24684         function generator.
24685         
24686         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
24687         Fixes #70173.
24688
24689         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
24690         
24691 2004-12-04  Martin Baulig  <martin@ximian.com>
24692
24693         * loader.c (mono_method_get_signature_full): New public function;
24694         like mono_method_get_signature(), but with an additional
24695         `MonoGenericContext *' argument.
24696
24697         * class.c (mono_class_inflate_generic_signature): Formerly known
24698         as inflate_generic_signature(); make this public.
24699
24700 2004-12-04  Martin Baulig  <martin@ximian.com>
24701
24702         * metadata.c
24703         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
24704         instead of a `MonoGenericContainer *'.  
24705         (mono_metadata_parse_array_full): Likewise.
24706         (mono_metadata_parse_signature_full): Likewise.
24707         (mono_metadata_parse_method_signature_full): Likewise.
24708         (mono_metadata_parse_generic_inst): Likewise.
24709         (mono_metadata_parse_generic_param): Likewise.
24710         (mono_metadata_parse_mh_full): Likewise.
24711         (mono_type_create_from_typespec_full): Likewise.
24712
24713 2004-12-03  Martin Baulig  <martin@ximian.com>
24714
24715         * class-internals.h (MonoGenericContainer): Replaced the
24716         `MonoGenericContext * pointer with a `MonoGenericContext'
24717         structure and made it the first element.
24718
24719 2004-12-03  Martin Baulig  <martin@ximian.com>
24720
24721         * class.c
24722         (inflate_generic_type): Set the `context->container' when creating
24723         a new MonoGenericContext.
24724         (mono_class_inflate_generic_method): Likewise.
24725         (mono_class_create_from_typespec): Just use `context->container'
24726         to get the container.
24727
24728         * loader.c (method_from_methodspec): Set `context->parent' from
24729         `context->container' - and if that's a method container, use its
24730         parent.  Also set the `context->container' when creating a new
24731         MonoGenericContext.
24732         (mono_get_method_from_token): Use just `context->container' to get
24733         the container.
24734
24735         * metadata.c (do_mono_metadata_parse_generic_class): Also set
24736         `gclass->context->container'.
24737
24738         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
24739         the `context->container' when creating a new MonoGenericContext.
24740
24741 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
24742
24743         * reflection.c (compare_genericparam): Sort params with identical
24744         owner by their number. Fixes gen-111 on sparc.
24745
24746 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
24747
24748         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
24749         around the domain changes.
24750
24751         * appdomain.c (mono_domain_unload): Handle the case when the thread
24752         calling Unload is itself being aborted during unloading. Fixes #70022.
24753
24754         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
24755
24756         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
24757         checkpoint_func as an icall so it gets a wrapper.
24758         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
24759         in the cross-appdomain wrappers too.
24760
24761         * threads.c (mono_thread_has_appdomain_ref): Make this public.
24762
24763         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
24764
24765         * reflection.c: Fix some memory leaks.
24766         
24767 2004-12-02  Martin Baulig  <martin@ximian.com>
24768
24769         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
24770
24771         * metadata.c (generic_class_cache): New static hashtable.
24772         (mono_metadata_lookup_generic_class): New public method.
24773
24774 2004-12-02  Martin Baulig  <martin@ximian.com>
24775
24776         * class.c (mono_class_create_from_typedef): Call
24777         mono_class_setup_parent() and mono_class_create_mono_type() before
24778         parsing the interfaces.
24779
24780 2004-12-02  Martin Baulig  <martin@ximian.com>
24781
24782         * metadata.c (generic_inst_cache): New static hashtable.
24783         (mono_metadata_lookup_generic_inst): New public function.
24784         (mono_metadata_inflate_generic_inst): New public function.
24785         (mono_metadata_parse_generic_inst): New public function.
24786         (do_mono_metadata_parse_generic_class): Use the new
24787         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
24788         since this'll also use the cache.
24789
24790         * reflection.c (mono_reflection_bind_generic_method_parameters):
24791         Use mono_metadata_lookup_generic_inst() to use the new cache.
24792
24793         * class.c (inflate_mono_type): Use
24794         mono_metadata_inflate_generic_inst() to inflate a generic
24795         instance; this'll also use the new cache.
24796
24797         * loader.c (method_from_methodspec): Use
24798         mono_metadata_parse_generic_inst() and
24799         mono_metadata_inflate_generic_inst() rather than parsing it
24800         manually, so we can use the new cache.
24801
24802 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
24803
24804         * threads.c (wait_for_tids): Do not incorrectly free threads when 
24805         the wait times out.
24806
24807 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
24808
24809         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
24810         iter->args based on whether parameters are passed in registers (i.e.
24811         MONO_ARCH_REGPARMS is defined)
24812
24813 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
24814
24815         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
24816         the exception message. Fixes #70070.
24817         (method_from_methodspec): Fix warnings.
24818
24819 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24820
24821         * process.c: (complete_path) return the path quoted
24822
24823 2004-12-01  Martin Baulig  <martin@ximian.com>
24824
24825         * class-internals.h (MonoGenericInst): New structure.
24826         (MonoGenericClass): Replaced `type_argc', `type_argv' and
24827         `is_open' with `MonoGenericInst *inst'.
24828         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
24829         `is_open' with `MonoGenericInst *inst'.
24830
24831 2004-11-30  Martin Baulig  <martin@ximian.com>
24832
24833         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
24834
24835         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
24836         to `generic_class_cache'.
24837
24838         * metadata.c
24839         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
24840         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
24841         (mono_generic_inst_is_valuetype): Renamed to
24842         mono_generic_class_is_valuetype().
24843
24844         * class-internals.h
24845         (MonoGenericInst): Renamed to MonoGenericClass.
24846         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
24847         (MonoClass): Renamed `generic_inst' to `generic_class'.
24848         (MonoGenericContext): Renamed `ginst' to `gclass'.
24849
24850         * object-internals.h
24851         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
24852
24853         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
24854         mono_reflection_generic_class_initialize().
24855
24856         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
24857         now known as "System.Reflection.MonoGenericClass".
24858         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
24859
24860 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
24861
24862         * class-internals.h: Added a flag field to MonoClass to cache the
24863         declarative security attributes actions associated with the class.
24864         * domain-internals.h: Added booleans to MonoJitInfo to cache the
24865         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
24866         applicable to the JITted method.
24867         * reflection.c|h: Added functions to extract (as flags) which security
24868         actions are available (declaratively) for a method, class or assembly.
24869         * metadata.c|h: Added functions to search the declarative security
24870         table in the metadata.
24871         
24872 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
24873
24874         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
24875         EXPORTEDTYPES are already in the class name cache, so there is no
24876         need to add extra code here to look at them. Just removes a bit of
24877         cruft.
24878
24879         (ves_icall_System_Environment_get_TickCount): No need for #if
24880         WINDOWS. We already have the code in io-layer.
24881
24882 2004-11-28  Martin Baulig  <martin@ximian.com>
24883
24884         * loader.c
24885         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
24886         Fixes gen-112.cs.
24887
24888 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
24889
24890         * assembly.c (do_mono_assembly_open): Instead of having a
24891         conditional WITH_BUNDLE, incorporate support for bundles here, by
24892         having a global `bundles' variable holding a pointer to the actual
24893         bundles. 
24894
24895         (mono_register_bundled_assemblies): New API call used by the
24896         bundle code. 
24897
24898         See mkbundle.1 for details.
24899         
24900 2004-11-27  Martin Baulig  <martin@ximian.com>
24901
24902         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
24903         the vtable for generic methods.
24904
24905 2004-11-26  Martin Baulig  <martin@ximian.com>
24906
24907         * metadata.c
24908         (mono_metadata_generic_method_hash): New public function.
24909         (mono_metadata_generic_method_equal): Likewise.
24910
24911         * class-internals.h
24912         (MonoGenericContainer): Added `GHashTable *method_hash'.
24913
24914         * reflection.c (ReflectionMethodBuilder): Added
24915         `MonoGenericContainer *generic_container'.
24916         (reflection_methodbuilder_to_mono_method): Don't create a new
24917         MonoGenericContainer each time we're called.
24918         (mono_reflection_bind_generic_method_parameters): Use
24919         `container->method_hash' to cache the results so we don't create a
24920         different method if we're called several times with the same
24921         arguments.
24922
24923         * loader.c (method_from_methodspec): Use the new
24924         `container->method_hash' here, too.
24925
24926 2004-11-26  Martin Baulig  <martin@ximian.com>
24927
24928         * class.c (inflate_generic_signature): Correctly compute
24929         `res->has_type_parameters'.
24930         (mono_class_vtable): Use the `has_type_parameters' flag to
24931         determine whether we're a generic method.
24932
24933         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
24934
24935 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
24936
24937         * object.c (mono_runtime_run_main): Fix a small memory leak.
24938
24939 2004-11-25  Martin Baulig  <martin@ximian.com>
24940
24941         * class.c (set_generic_param_owner): Fixed the loop.
24942
24943 2004-11-25  Martin Baulig  <martin@ximian.com>
24944
24945         * object.c (mono_class_vtable): Don't create any JIT wrappers for
24946         generic methods.
24947
24948 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
24949
24950         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
24951         names. Fixes #69787.
24952
24953 2004-11-24  Martin Baulig  <martin@ximian.com>
24954
24955         * class.c (mono_class_create_generic_2): If we don't have a
24956         `ginst->parent', inflate `gklass->parent' to get our parent.
24957
24958 2004-11-24  Martin Baulig  <martin@ximian.com>
24959
24960         * reflection.c (compare_genericparam): Correctly sort the
24961         GenericParam table; fixes #69779.
24962
24963 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
24964
24965         * reflection.c: When writing a PE file, don't create a huge
24966         buffer in memory. Just write the arrays we have to the file.
24967         This reduces memory usage.
24968
24969         * metadata-internals.h: MonoDynamicStream pefile is no longer used
24970         globally.
24971
24972 2004-11-17  Martin Baulig  <martin@ximian.com>
24973
24974         * class.c (mono_class_init): Don't setup `class->parent' for
24975         dynamic instances; moved this to mono_class_generic_2().
24976         (mono_class_create_generic): Also set `klass->inited' for dynamic
24977         generic instances.
24978         (mono_class_create_generic_2): Don't do anything for dynamic
24979         generic instances.  Set `klass->parent' here and also call
24980         mono_class_setup_parent() here. 
24981
24982         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
24983         `MonoType *parent' argument; set `ginst->parent' before calling
24984         mono_class_create_generic_2(), so we set the correct parent.
24985
24986 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
24987
24988         * reflection.c: allow getting attributes from ModuleBuilder
24989         (used by ikvm).
24990
24991 2004-11-17  Martin Baulig  <martin@ximian.com>
24992
24993         * class.c (mono_class_create_from_typedef): If a type parameter is
24994         inherited from an outer class, set its owner to that class.
24995
24996 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
24997
24998         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
24999           for (int*) written size. This fixes bug #69592.
25000
25001 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25002
25003         * icall.c: Added IsAuthenticodePresnet internal call.
25004         * image.c|h: New function that check a MonoImage for an Authenticode
25005         signature in the certificate PE data directory.
25006         * security.c|h: New internal call to ask the runtime if an 
25007         Authenticode signature seems referenced in the PE header.
25008
25009 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25010
25011         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25012
25013         * reflection.c (mono_image_create_pefile): Free the assembly streams
25014         after writing out the assembly file.
25015
25016         * object.c (mono_runtime_run_main): Fix small memory leak.
25017
25018         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25019         property access modifiers. Fixes #69389.
25020
25021 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25022
25023         * domain.c, object.c, object-internals.h, domain-internals.h,
25024         object.h, marshal.c: keep dynamic code info per domain.
25025
25026 2004-11-15  Martin Baulig  <martin@ximian.com>
25027
25028         * class.c (mono_type_get_name_recurse): Put type arguments in
25029         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25030         see bug #68387.
25031
25032 2004-11-15  Martin Baulig  <martin@ximian.com>
25033
25034         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25035         (mono_class_setup_vtable): When computing `the_cname' for a
25036         generic instance, don't include the namespace since we'd otherwise
25037         add it twice.
25038
25039 2004-11-15  Martin Baulig  <martin@ximian.com>
25040
25041         * class.c (mono_class_create_generic): Changed return type to void.
25042         (mono_class_create_generic_2): New public function; setup
25043         `class->method', `class->field' and `class->interfaces' here
25044         instead of in mono_class_init().
25045
25046         * class.h (mono_class_create_generic): Moved to class-internals.h.
25047
25048 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25049
25050         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25051         rather than writing to memory, write to this file. Right now,
25052         we are just writting into a buffer, and copying that. However
25053         we can avoid the buffer later.
25054
25055         (mono_dynamic_stream_reset): new function
25056
25057         * icall.c, object-internals.h: update for the above.
25058
25059 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25060
25061         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25062         have been using gc'd memory. First it is slower, unlikely
25063         the comment in the source code said, secondly, it increases
25064         our footprint to do it in the gc.
25065
25066         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25067         the method so that it does not have to copy to managed code.
25068
25069 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25070
25071         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25072
25073 2004-11-12  Martin Baulig  <martin@localhost>
25074
25075         * reflection.c (mono_image_create_token): Allow generic method
25076         definitions here, since they may appear in an `.override'; see
25077         gen-98/gen-99 for an example.
25078
25079 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25080
25081         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25082         #69365.
25083
25084         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25085         descriptive.
25086
25087 2004-11-11  Martin Baulig  <martin@ximian.com>
25088
25089         * class.c (mono_class_setup_vtable): In an explicit interface
25090         implementation, the method name now includes the arity.
25091
25092 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25093
25094         * object.c (mono_array_full_copy): Fix warning.
25095
25096 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25097
25098         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25099         mono_class_get_method_from_name() instead.
25100         
25101         * class-internals.h: Added two new types of wrappers. 
25102         Added MonoRemotingTarget enum. Added new trampoline function type, which
25103         takes an additional MonoRemotingTarget value as parameter, so it is
25104         possible to request a trampoline for a specific target.
25105         
25106         * class.c: Added new mono_class_get_method_from_name() method.
25107         
25108         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25109         general remoting sinks and one specific for cross domain calls.
25110         
25111         * debug-helpers.c: Added new wrapper names.
25112         
25113         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25114         of a remote class.
25115         
25116         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25117         
25118         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25119         with several other methods (mono_marshal_get_xappdomain_dispatch,
25120         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25121         and others) can generate a fast remoting wrapper for cross domain calls.
25122         More information can be found in docs/remoting.
25123         Other changes: Removed mono_find_method_by_name, and used
25124         mono_class_get_method_from_name instead.
25125         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25126         is stored in the remoting invoke hashtable.
25127         
25128         * marshal.h: published the new method for getting the xdomain wrapper,
25129         and also added a method for getting the adequate wrapper for a given
25130         method and target.
25131         
25132         * object-internals.h, object.c: Added a couple of methods for capying and
25133         cloning arrays.
25134         Modified mono_install_remoting_trampoline, which takes the new remoting
25135         trampoline that has a remoting target as parameter.
25136         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25137         will return the most suitable vtable for the target.
25138         Added mono_remote_class_vtable, which returns the vtable of a remote class
25139         (which can be the normal remoting vtable or the xdomain vtable).
25140         
25141         * threads.c: the xdomain invoke and dispatch wrappers must also be
25142         protected against interruptions.
25143
25144 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25145
25146         * icall.c: use memmove in BlockCopyInternal when the source and
25147         destination arrays are the same.
25148
25149 2004-11-09  Martin Baulig  <martin@ximian.com>
25150
25151         * class-internals.h (MonoGenericContainer): Removed `method' and
25152         `signature', replaced them with `is_method' and `is_signature'
25153         flags.  Added `context'.
25154
25155         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25156         instead of a `MonoGenericContainer *'.
25157
25158         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25159         for dynamic type parameters.
25160         (mono_metadata_load_generic_params): Setup `container->context'.
25161
25162         * reflection.c (mono_reflection_setup_generic_class): Setup
25163         `tb->generic_container->context'.
25164         (do_mono_reflection_bind_generic_parameters): Use
25165         mono_class_inflate_generic_type() to correctly inflate types,
25166         rather than using our own hack just for MONO_TYPE_VAR.
25167
25168 2004-11-09  Martin Baulig  <martin@ximian.com>
25169
25170         * class.c (mono_class_inflate_generic_method): Small fix; don't
25171         crash here.
25172
25173         * icall.c
25174         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25175         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25176         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25177         (ves_icall_Type_BindGenericParameters): Likewise.
25178         (ves_icall_Type_get_IsGenericInstance): Likewise.
25179         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25180         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25181         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25182         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25183
25184 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25185
25186         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25187         assembly versions and public key tokens. Fixes #69113.
25188
25189 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25190
25191         * metadata.c: fix bug introduced with the type cache changes
25192         on 2004-11-06.
25193
25194 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25195
25196         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25197         the MonoClass pointer instead of the token in exception clauses.
25198         * reflection.c: updates for the above and make the code not depend
25199         on the structure of MonoExceptionClause.
25200
25201 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25202
25203         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25204         Add support for dynamic assemblies. Fixes #69114.
25205
25206         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25207
25208 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25209
25210         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25211         since most only those methods use it. the code member of
25212         MonoMethodPInvoke was dead, so that can be removed too. Also,
25213         remove inline_count (again, not used), and move slot so that it
25214         can share bits with some other flags. This saves 8 bytes in the
25215         structure and gives us about 50 kb back for mcs helloworld.cs
25216
25217         * *.[ch]: Do naming changes for the above.
25218
25219         * loader.c (mono_method_get_header): Lazily init the header
25220         on first access.
25221         (mono_get_method_from_token): don't init the header here
25222         (mono_free_method): the header may never be allocated
25223
25224         Overall, this saves 150 kb of unmanaged allocations
25225         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25226         memory at runtime.
25227         
25228         * loader.c, loader.h (mono_method_get_header): new accessor.
25229
25230         * *.[ch]: use the above method. Prepares us to lazily load
25231         the header.
25232
25233         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25234         three warnings, which are actual bugs (see 69206).
25235
25236         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25237         unused. Saves a cool 4 bytes / method.
25238
25239 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25240
25241         * metadata.c (builtin_types): Add types for System.Object here.
25242         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25243         for a class or valuetype from klass->this_arg or klass->byval_arg.
25244
25245         On mcs for a hello world, this gets us down from 21836 MonoType's
25246         to 14560.
25247
25248         (mono_metadata_free_type): Account for the above change.
25249
25250 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25251
25252         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25253         exception instead of asserting if name is null.
25254         (ves_icall_System_AppDomain_GetData): Ditto.
25255
25256 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25257
25258         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25259         EnumBuilder.
25260
25261         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25262         Return NULL when the domain does not have entry_assembly set.
25263
25264         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25265         Add a 'resource_modules' argument.
25266         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25267
25268         * reflection.c (mono_reflection_create_runtime_class): Move setting
25269         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25270         for enums too.
25271
25272         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25273         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25274         Throw an ArgumentNullException if 'ptr' is null.
25275
25276         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25277         assemblies here. Fixes #69020.
25278
25279 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25280
25281         * reflection.c (build_compressed_metadata): Fix the previous patch for
25282         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25283         the stack.
25284
25285 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25286
25287         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25288         the cultures is false. Fixes #69090.
25289
25290         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25291         detected by valgrind.
25292         
25293         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25294         TypeResolve multiple times for the same type. Fixes #65577.
25295
25296 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25297
25298         * marshal.c: Avoid using ldftn to call managed functions. It is
25299         much slower than just a call.
25300
25301         * reflection.c (mono_module_get_object): free the basename we
25302         allocate here from glib.
25303         
25304         * reflection.c (ensure_runtime_vtable): make sure to free
25305         overrides.  Also, we were allocating an array of MonoMethod not an
25306         array of MonoMethod*.
25307
25308         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25309
25310         * image.c (mono_image_close): free image->guid here.
25311
25312 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25313
25314         * reflection.c: Fix some spec conformance issues with the PE file
25315         structures so mcs compiled apps run on the Net 2.0 beta.
25316
25317 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25318
25319         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25320         Implement this. Fixes #67264.
25321
25322         * debug-helpers.h debug-helpers.c marshal.c: Move 
25323         mono_find_method_by_name to debug-helpers.c.
25324
25325 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25326
25327         * object.c (mono_release_type_locks): type_initialization_hash is
25328         a GHashTable.
25329
25330         * reflection.c object.c object-internals.h: Fix warnings.
25331
25332         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25333         without accessors. Fixes #61561.
25334
25335         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25336         application base from the root domain if not set. Fixes #65641.
25337         (mono_runtime_init): Fix warning.
25338
25339 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25340
25341         * appdomain.c: call mono_thread_pool_init.
25342         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25343         of worker threads based on the number of CPUs and the environment
25344         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25345         for non-windows (windows) systems.
25346
25347 2004-10-27  Chris Toshok  <toshok@ximian.com>
25348
25349         * mono-debug-debugger.c (write_class): don't call mono_class_init
25350         here, as even with the check for (!klass->init_pending), we get
25351         into a situation where we're hitting cycles in class
25352         initialization.  Fixes #68816.
25353
25354 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25355
25356         * image.c: Avoid overwriting values in the loaded_images_hash when an
25357         assembly is loaded multiple times. Fixes #61152.
25358
25359         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
25360         so multiple satellite assemblies for the same name can be loaded.
25361         Fixes #68259.
25362
25363         * mono_domain_assembly_preload: Actually return the loaded assembly, 
25364         not NULL.
25365
25366         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
25367         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
25368
25369         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
25370         pending finalizers are not invoked after the appdomain has been 
25371         unloaded. Fixes #67862.
25372
25373 2004-10-22  Martin Baulig  <martin@ximian.com>
25374
25375         * mono-debug-debugger.c
25376         (mono_debugger_runtime_invoke): Don't box valuetypes.
25377
25378 2004-10-22  Chris Toshok  <toshok@ximian.com>
25379
25380         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
25381         don't hide private methods.
25382
25383 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
25384
25385         * icall.c: Allows the runtime to "share" (when known) the public key
25386         token of an assembly. This avoid the need to recalculate the token 
25387         (from the public key) in managed code.
25388
25389 2004-10-21  Chris Toshok  <toshok@ximian.com>
25390
25391         * debug-helpers.c (append_class_name): argh, revert last patch.
25392         
25393 2004-10-21  Chris Toshok  <toshok@ximian.com>
25394
25395         * debug-helpers.c (append_class_name): use '+' as the delimiter,
25396         not '/', so that it matches what the debugger uses to look up
25397         methods.
25398
25399 2004-10-21  Martin Baulig  <martin@ximian.com>
25400
25401         * mono-debug-debugger.c (mono_debugger_throw_exception): New
25402         public method; this is called each time an exception is thrown and
25403         allows the debugger to use exception catch points.
25404
25405 2004-10-21  Martin Baulig  <martin@ximian.com>
25406
25407         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
25408         the stack pointer and the exception object in some struct and pass
25409         that to the debugger.
25410
25411 2004-10-21  Chris Toshok  <toshok@ximian.com>
25412
25413         * mono-debug-debugger.c (do_write_class): add instance/static
25414         event support.  We don't expose "raise" or "other" yet.
25415         (event_is_static): new method.
25416
25417 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
25418
25419         * mono-debug-debugger.c
25420         (mono_debugger_handle_exception): Remove
25421         bogus return value for fussy compilers.
25422
25423 2004-10-20  Martin Baulig  <martin@ximian.com>
25424
25425         * mono-debug-debugger.c
25426         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
25427         (mono_debugger_handled_exception): Likewise.
25428
25429 2004-10-20  Martin Baulig  <martin@ximian.com>
25430
25431         * mono-debug-debugger.h (MonoDebuggerEvent): Added
25432         MONO_DEBUGGER_EVENT_EXCEPTION.
25433
25434         * mono-debug-debugger.c (mono_debugger_handle_exception): New
25435         public function to send the debugger a notification for an
25436         exception and inform it about a catch/finally clause.
25437
25438 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
25439
25440         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
25441         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
25442         fix 2.95 build. 
25443
25444         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
25445
25446 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
25447
25448         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
25449         marshalled as [In,Out]. Fixes #58325.
25450
25451 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
25452
25453         * reflection.c (mono_method_body_get_object): Implement some fields.
25454
25455 2004-10-12  Martin Baulig  <martin@ximian.com>
25456
25457         * reflection.c (mono_reflection_bind_generic_parameters): Small
25458         fix, correctly retrieve our parent from a generic instance.
25459
25460 2004-10-12  Martin Baulig  <martin@ximian.com>
25461
25462         * metadata.c (mono_metadata_generic_param_equal): We always have
25463         an owner.
25464
25465         * class.c
25466         (mono_class_from_generic_parameter): We need to have an owner.
25467         (my_mono_class_from_generic_parameter): Likewise.
25468
25469         * reflection.c (mono_reflection_setup_generic_class): Renamed to
25470         mono_reflection_create_generic_class() and added a new
25471         mono_reflection_setup_generic_class().  
25472         (mono_reflection_initialize_generic_param): If we're a nested
25473         generic type and inherited from the containing class, set our
25474         owner to the outer class.
25475
25476 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
25477
25478         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
25479
25480         * reflection.c (mono_method_body_get_object): New function to create
25481         a MethodBody object.
25482
25483         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
25484
25485 2004-10-11  Martin Baulig  <martin@ximian.com>
25486
25487         * metadata.c (_mono_metadata_type_equal): Renamed to
25488         do_mono_metadata_type_equal() and made static.
25489
25490 2004-10-11  Martin Baulig  <martin@ximian.com>
25491
25492         * appdomain.c: Bump corlib version number to 28.
25493
25494 2004-10-10  Martin Baulig  <martin@ximian.com>
25495
25496         * class-internals.h
25497         (MonoGenericInst): Added `MonoGenericContainer *container'.
25498         (MonoGenericMethod): Likewise.
25499         (MonoGenericContext): Likewise.
25500         (MonoGenericParam): Added `MonoGenericContainer *owner'.
25501
25502         * metadata.c
25503         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
25504         (do_mono_metadata_parse_generic_inst): Likewise.
25505         (mono_metadata_parse_type_full): New public method.  This is the actual
25506         mono_metadata_parse_type() implementation - with an additional
25507         `MonoGenericContainer *' argument.
25508         (mono_metadata_parse_array_full): Likewise.
25509         (mono_metadata_parse_signature_full): Likewise.
25510         (mono_metadata_parse_method_signature_full): Likewise.
25511         (mono_metadata_parse_mh_full): Likewise.
25512         (mono_type_create_from_typespec): Likewise.
25513         (mono_metadata_interfaces_from_typedef_full): New public method;
25514         this is similar to the other _full() methods, but we take a
25515         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
25516         (mono_metadata_parse_generic_param): Take an additional
25517         `MonoGenericContainer *' argument and lookup the MonoGenericParam
25518         from that container.
25519         (mono_metadata_generic_param_equal): New static method to compare
25520         two type parameters.
25521         (_mono_metadata_type_equal): New static method; takes an
25522         additional `gboolean signature_only' argument - if true, we don't
25523         compare the owners of generic parameters.
25524         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
25525         with a TRUE argument - do a signature-only comparision.
25526
25527         * loader.c: Use the new _full() methods and pass the
25528         MonoGenericContainer to them.
25529
25530         * object-internals.h (MonoReflectionTypeBuilder): Added
25531         `MonoGenericContainer *generic_container' field.
25532         (MonoReflectionMethodBuilder): Likewise.
25533
25534 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
25535
25536         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
25537         case initial images of dynamic assemblies.
25538
25539         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
25540
25541         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
25542
25543         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
25544         length of event->other array.
25545         (typebuilder_setup_events): Ditto.
25546
25547         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
25548         'assembly_by_name' and add an 'assemblies' list.
25549
25550         * assembly.h assembly.c: Add a new search hook for determining whenever
25551         an assembly is already loaded. Use this instead of searching in the
25552         loaded_assemblies list.
25553
25554         * domain.c appdomain.c: Implement the new search hook so loaded 
25555         assemblies are now scoped by appdomain. Fixes #67727.
25556
25557 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
25558
25559         * threads.c (mono_thread_attach): Initialize synch_lock field so
25560         mono_thread_detach works again.
25561
25562         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
25563         'lib' too. Fixes #63130.
25564
25565 2004-10-06  Jackson Harper  <jackson@ximian.com>
25566
25567         * culture-info-tables.h: regenerated.
25568
25569 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
25570
25571         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
25572         implemented by other interfaces in the result. Fixes #65764.
25573         
25574         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25575         Handle unloadable modules without crashing.
25576
25577         * image.c (load_modules): Revert the previous patch since modules must
25578         have a fixed index inside the array.
25579         
25580         * image.c (load_modules): Don't include native modules in the modules
25581         array.
25582
25583 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
25584
25585         * reflection.h: Add param_defaults field.
25586
25587         * reflection.c: Add support for parameter defaults in dynamic methods.
25588         Fixes #64595.
25589
25590         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
25591         an empty string when a type has no namespace. Fixes #64230.
25592
25593 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
25594
25595         * tabledefs.h: Added "internal" security actions to support non-CAS
25596         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
25597         Note: they do not seems to be used anymore in 2.0 (new metadata format)
25598
25599 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
25600
25601         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
25602         constructor of abstract class. Fixes #61689.
25603
25604 2004-10-04  Martin Baulig  <martin@ximian.com>
25605
25606         * class-internals.h (MonoGenericContainer): New type.
25607         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
25608         `MonoGenericContainer *generic_container'.
25609         (MonoClass): Replaced `gen_params' and `num_gen_params' with
25610         `MonoGenericContainer *generic_container'.
25611
25612         * metadata.c (mono_metadata_load_generic_params): Return a
25613         `MonoGenericContainer *' instead of a `MonoGenericParam *';
25614         removed the `num' argument.
25615
25616 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
25617
25618         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
25619         for dynamic images.
25620
25621         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
25622         machine fields.
25623
25624         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
25625
25626         * reflection.c: Save pe_kind and machine values into the generated
25627         image file.
25628
25629         * appdomain.c: Bump corlib version number.
25630
25631         * object-internals.h: Reorganize layout of LocalBuilder.
25632
25633         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
25634         New helper function.
25635
25636         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
25637         created MonoType for dynamic types. Fixes #66180.
25638
25639 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
25640
25641         * threadpool.c: the ares hashtable needs a critical section around it.
25642         this prevents some nasty segfaults
25643
25644 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
25645
25646         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
25647         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
25648         bug 67324).
25649         
25650 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
25651
25652         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
25653         
25654 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
25655
25656         * image.c: Always canonicalize image file names, to avoid loading
25657         the same assembly twice when referenced using a relative path.
25658
25659 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
25660
25661         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
25662
25663         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
25664
25665         * marshal.c: Fix warnings.
25666
25667 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
25668
25669         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
25670         attempting to marshal the delegate_trampoline as the method_addr.
25671         This patch has a static hashtable of marshalled delegates so that 
25672         we can map delegate_trampoline addresses back to delegates.  This
25673         allows a delegate passed to managed code to be passed back into native
25674         code.  Fixes #67039
25675
25676 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
25677
25678         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
25679
25680         * reflection.c (method_encode_code): Align method headers properly.
25681         Fixes #66025.
25682
25683 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
25684
25685         * marshal.c: In the runtime invoke wrapper, reset the abort
25686         exception if it is cached. This avoids the automatic rethrowal of 
25687         the exception after the catch of the wrapper. Also check for pending
25688         interruptions before calling the managed method. This is done using
25689         the new method emit_thread_force_interrupt_checkpoint, since the
25690         normal checkpoint method is ignored when running the invoke wrapper.
25691         * object.c: If the abort exception is rethrown, set the abort_exc
25692         field of the thread, so it will be rethrown aftere every catch.
25693         * threadpool.c: Only run an interruption checkpoint if what has been
25694         requested is a stop of the thread (aborts will be ignored).
25695         * threads.c: By default, a thread will now never be interrumped while
25696         running the runtime invoke wrapper (this ensures that runtime_invoke
25697         will always return to the caller if an exception pointer is provided).
25698         There is a new special method mono_thread_force_interruption_checkpoint()
25699         to force an interruption checkpoint even if running a protected
25700         wrapper, which is used by the same runtime invoke wrapper to do a check
25701         at a safe point.
25702
25703 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
25704
25705         * object.c, object-internals.h: Implemented mono_release_type_locks,
25706         which releases the cctor locks held by a thread.
25707         * threads.c, threads.h: In thread_cleanup, release cctor locks held
25708         by a thread. Added mono_thread_exit() method to be used to safely stop
25709         a thread.
25710
25711 2004-09-28  Raja R Harinath  <rharinath@novell.com>
25712
25713         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25714         Move null check before dereference.  Avoid indexing beyond the end
25715         of the 'modules' array.
25716
25717 2004-09-28  Raja R Harinath  <rharinath@novell.com>
25718
25719         * metadata-internals.h (MonoImage): Add module_count field.
25720         * image.c (load_modules): Set image->module_count.
25721         (mono_image_load_file_for_image): Use image->module_count.
25722         * reflection.c (mono_image_load_module): Append to image->modules array 
25723         of dynamic assembly.
25724         (mono_module_get_object): Fix loop to actually increment index.
25725         Use image->module_count.
25726         * assembly.c (mono_assembly_load_references): Use image->module_count.
25727         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
25728         Likewise.
25729
25730 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
25731
25732         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
25733         Avoid assert on generic types.
25734
25735 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
25736
25737         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
25738
25739         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
25740
25741         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
25742         function to convert a MarshalSpec structure to its managed counterpart.
25743
25744         * reflection.c: Fix warnings.
25745         
25746         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
25747         field.
25748
25749         * icall.c (mono_create_icall_signature): Fix build.
25750
25751 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
25752
25753         * icall.c: Add MakePointType icall.
25754
25755         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
25756         warnings.
25757
25758 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25759
25760         * threadpool.c: reuse allocated slots in the queue.
25761
25762 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
25763
25764         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
25765
25766         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
25767
25768         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
25769         previous change.
25770
25771         * tabledefs.h: Add constants for pinvoke attributes BestFit and
25772         ThrowOnUnmappableChar.
25773
25774         * icall.c (ves_icall_Type_GetPacking): New icall.
25775
25776 2004-09-24  Martin Baulig  <martin@ximian.com>
25777
25778         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
25779
25780 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25781
25782         * appdomain.c:
25783         (mono_domain_set): allow setting a domain that is being unloaded.
25784         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
25785         being unloaded.
25786
25787 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
25788
25789         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
25790         the GetCustomAttributes icall.
25791
25792 2004-09-23  Martin Baulig  <martin@ximian.com>
25793
25794         * object-internals.h (MonoReflectionGenericParam): Replaced
25795         'has_ctor_constraint', `has_reference_type' and `has_value_type'
25796         with `guint32 attrs'.
25797
25798 2004-09-23  Martin Baulig  <martin@ximian.com>
25799
25800         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
25801
25802 2004-09-23  Martin Baulig  <martin@ximian.com>
25803
25804         * object-internals.h (GenericParameterAttributes): New enum.
25805
25806 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
25807
25808         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
25809         
25810         * class.c (init_events): Fill out event->other field.
25811
25812         * class.c: Fix warnings.
25813
25814         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
25815
25816 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
25817
25818         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
25819         walk which doesn't supply the IL offset.
25820
25821 2004-09-22  Martin Baulig  <martin@ximian.com>
25822
25823         * reflection.c (mono_reflection_setup_internal_class): If we're
25824         System.ValueType, System.Object or System.Enum, set
25825         `klass->instance_size' and create the vtable.
25826         (mono_reflection_create_internal_class): If we're an enum type,
25827         get the base class from our current corlib.
25828
25829 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
25830
25831         * reflection.h (MonoResolveTokenError): New type.
25832
25833         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
25834         icall.
25835
25836         * icall.c: Add an 'error' argument to the ResolveToken icalls.
25837
25838 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
25839
25840         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
25841         Support also calling constructors, but only for already allocated objects.
25842
25843 2004-09-17  Geoff Norton <gnorton@customerdna.com>
25844
25845         * reflection.c (type_get_qualified_name): If the klass is null
25846         return the typename to avoid a NullRefEx.
25847         (encode_cattr_value): Get the qualified name of the boxed type,
25848         not the underlying enumtype.  Fixes #62984.
25849
25850 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
25851
25852         * marshal.c: Fix problems with previous checkin.
25853
25854 2004-09-21    <vargaz@freemail.hu>
25855
25856         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
25857         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
25858
25859         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
25860
25861 2004-09-21  Geoff Norton <gnorton@customerdna.com>
25862
25863         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
25864         should only return a type for pointers, arrays, and passbyref types.
25865         Fixes bug #63841.
25866
25867 2004-09-21  Martin Baulig  <martin@ximian.com>
25868
25869         * domain.c (mono_debugger_check_runtime_version): New public
25870         function.
25871
25872         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
25873
25874 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
25875
25876         * reflection.c: Added missing sort to the declarative security 
25877         attributes table. MS implementation stops seeing the attributes if the
25878         token number regress in the table (as shown by ildasm and permview).
25879
25880 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
25881
25882         * object-internals.h (MonoReflectionModule): Add 'token' field.
25883         
25884         * reflection.c (mono_reflection_get_token): Add support for Module
25885         and Assembly.
25886         (mono_module_get_object): Set 'token' field.
25887         (mono_module_file_get_object): Set 'token' field.
25888
25889         * icall.c: Add new Assembly and Module icalls.
25890
25891         * appdomain.c: Bump corlib version.
25892
25893 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
25894
25895         * loader.h loader.c class.h class.c: Add helper functions for obtaining
25896         tokens of metadata objects.
25897
25898         * reflection.h reflection.c (mono_reflection_get_token): New function
25899         to obtain the token of a metadata object.
25900
25901         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
25902
25903 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
25904
25905         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
25906         
25907         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
25908
25909 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
25910
25911         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
25912         * object-internals.h: Added 3 MonoArray* members to MonoReflection
25913         AssemblyBuilder to access the permissions set in the class lib.
25914         * reflection.c: Added security attributes encoding step in 
25915         mono_image_build_metadata.
25916         * tabledefs.h: Added new security actions defined in 2.0:
25917         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
25918
25919 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
25920
25921         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
25922         macro parameter.
25923
25924 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
25925  
25926         * locales.c: nullify the ICU_collator member of CompareInfo when it is
25927           finalized. There where random SIGSEVs at program termination, when
25928           an object being finalized was trying to do a string comparison and
25929           the current culture was already finalized.
25930  
25931 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25932
25933         * threads.c: call thread_cleanup before finishing the thread if we get
25934         there.
25935
25936 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
25937
25938         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
25939         assemblies from the parent. Fixes #65665.
25940
25941 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
25942
25943         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
25944         modifiers.
25945
25946 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
25947
25948         * reflection.h: add prototype for mono_get_dbnull_object
25949         * reflection.c: add prototypes for get_default_param_value_blobs 
25950         and mono_get_object_from_blob for fussier compilers
25951
25952 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
25953  
25954         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
25955         false deadlock checks in class initialization.
25956  
25957 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
25958
25959         * image.c (mono_image_addref): Fix comment.
25960
25961         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
25962         possible.
25963
25964 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
25965
25966         * reflection.c (mono_param_get_objects): Modified to return
25967         ParameterInfo.DefaultValue object.
25968
25969         (get_default_param_value_blobs):
25970         (mono_get_object_from_blob):
25971         (mono_get_dbnull_object): New helper routines. 
25972
25973         * object.c (mono_get_constant_value_from_blob): New helper routine
25974         carved out from get_default_field_value ()
25975
25976         * object-internals.h (mono_get_constant_value_from_blob): Added
25977         function declaration.
25978
25979 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
25980
25981         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
25982         referenced assemblies. Fixes #62135.
25983
25984         * exception.h exception.c (mono_get_exception_file_not_found2): New
25985         helper function.
25986
25987 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
25988
25989         * class.h class.c: Add mono_type_get_underlying_type ().
25990
25991 2004-09-09  Geoff Norton <gnorton@customerndna.com>
25992
25993         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
25994         Fix GetTypes() to support dynamically created assemblies.
25995
25996 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
25997
25998         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
25999         
26000         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26001         previous patch.
26002
26003         * reflection.h reflection.c loader.c: Allow dynamic construction of
26004         pinvoke methods. Fixes #65571.
26005         
26006         * reflection.c (mono_reflection_get_type): Revert previous change since
26007         it causes regressions.
26008
26009 2004-09-08  Martin Baulig  <martin@ximian.com>
26010
26011         * class.c (class_compute_field_layout): Don't call
26012         mono_class_layout_fields() for open generic instances.
26013
26014 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26015         * threads.c appdomain.c: fix typo in GC macro
26016
26017 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26018
26019         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26020         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26021
26022 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26023
26024         * image.c (mono_image_close): Applied patch from 
26025         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26026         assembly is loaded multiple times from data.
26027         
26028         * image.c (mono_image_open): Fix warning.
26029
26030 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26031
26032         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26033         once. Fixes #58334.
26034         
26035         * reflection.c (mono_reflection_create_runtime_class): Initialize
26036         klass->nested_classes. Fixes #61224.
26037
26038 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26039
26040         * threads.c: sched_yield() on exit, to allow threads to quit.
26041
26042 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26043
26044         * object.c (mono_unhandled_exception): Remove leftover debug code.
26045
26046 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26047
26048         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26049
26050 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26051
26052         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26053         
26054         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26055
26056 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26057
26058         * marshal.c (emit_marshal_array): Null terminate string arrays.
26059         
26060         * marshal.c (raise_auto_layout_exception): Fix warning.
26061
26062         * reflection.c (mono_param_get_objects): Initialize the default value
26063         with DBNull.Value, not null. Fixes #62123.
26064
26065 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26066
26067         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26068         throw an exception with a cute explanation.
26069
26070 2004-09-06  Dick Porter  <dick@ximian.com>
26071
26072         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26073         Close the new process's thread handle, as we don't use it.  The
26074         handle stays around forever otherwise.
26075
26076 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26077
26078         * object.c (arith_overflow): Fix warning.
26079
26080         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26081         calling conventions in method refs. Fixes #65352.
26082
26083         * reflection.c: Fix warnings.
26084
26085 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26086
26087         * icall.c: Add a new icall for Array.Clear
26088
26089 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26090
26091         * object.c: When allocating an array, we have to throw
26092         an overflow exception if any of the lengths are < 0.
26093
26094 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26095
26096         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26097         properly. Also move implementation of string array marshalling to 
26098         managed code. Fixes #42316.
26099
26100 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26101
26102         * assembly.c: provide more information when loading an assembly fails.
26103
26104 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26105
26106         * filewatcher.c: don't expect the development fam package to be
26107         installed.
26108
26109 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26110
26111         * marshal.c: Make a copy of the signature cookie since it will be
26112         freed by the caller.
26113         
26114         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26115
26116         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26117
26118         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26119         marshal specs.
26120
26121         * marshal.c: More refactoring.
26122         
26123         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26124         smaller functions.
26125
26126 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26127
26128         * object.c: In mono_message_invoke, fill the output parameter array after
26129           calling the managed method (it was done before the call). This fixes
26130           bug #59299.
26131
26132 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26133
26134         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26135         as well.
26136
26137 2004-09-02  Martin Baulig  <martin@ximian.com>
26138
26139         * class.c (mono_class_instance_size): Don't allow generic type
26140         definitions or open generic instances.
26141         (mono_class_array_element_size): If we're a value type, call
26142         mono_class_instance_size() on the original class.
26143
26144         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26145         handle generic instances.
26146
26147         * mono-debug-debugger.c (write_type): Handle generic instances
26148         like classes.
26149
26150 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26151
26152         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26153         the allocation request fails. Fixes #65089.
26154
26155         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26156         
26157         * object.c (mono_runtime_free_method): New function to free a dynamic
26158         method.
26159
26160         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26161         delegate trampoline.
26162
26163         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26164         with hasthis as dynamic,
26165
26166         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26167
26168         * domain.c (mono_jit_info_table_remove): New function to remove an
26169         entry from the jit info table.
26170
26171         * class-internals.h (MonoMethod): Add 'dynamic' field.
26172
26173         * loader.c: Fix warnings.
26174
26175 2004-09-01  Martin Baulig  <martin@ximian.com>
26176
26177         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26178         instead of mono_debugger_lock() because the latter one is a no-op
26179         unless running in the debugger.
26180
26181 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26182
26183         * class.c (class_compute_field_layout): Classes with auto-layout or
26184         reference fields are not blittable.
26185         
26186 2004-09-01  Dick Porter  <dick@ximian.com>
26187
26188         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26189         mono_image_get_filename() to get the assembly location.
26190
26191         * icall.c:
26192         * metadata.h: Fix compile warnings
26193
26194 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26195
26196         * class.c (class_compute_field_layout): System.Object is blittable.
26197
26198         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26199         as in/out. Fixes #59909.
26200
26201 2004-09-01  Martin Baulig  <martin@ximian.com>
26202
26203         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26204         mono_metadata_generic_inst_is_valuetype() if we're a generic
26205         instance to check whether our underlying type is a reference type.
26206
26207 2004-09-01  Martin Baulig  <martin@ximian.com>
26208
26209         * metadata.c (mono_type_size): If we're a generic instance, call
26210         mono_class_value_size() for value types.
26211
26212 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26213
26214         * marshal.c: Implement more custom marshalling functionality. Fixes
26215         #64915.
26216
26217 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26218
26219         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26220
26221 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26222
26223         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26224
26225         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26226
26227         * icall.c: Fix some warnings.
26228
26229         * threads.c (abort_appdomain_thread): Fix unref errors.
26230         (mono_thread_current): Fix THREAD_DEBUG define.
26231
26232 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26233
26234         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26235
26236         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26237
26238 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26239
26240         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26241         string arrays.
26242
26243 2004-08-28  Martin Baulig  <martin@ximian.com>
26244
26245         * metadata.c
26246         (mono_metadata_generic_inst_is_valuetype): New public function.
26247
26248         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26249         mono_metadata_generic_inst_is_valuetype() if we're a generic
26250         instance to check whether our underlying type is a valuetype.
26251
26252 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26253
26254         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26255         #63768.
26256
26257 2004-08-25  Martin Baulig  <martin@ximian.com>
26258
26259         * loader.c (mono_get_method_from_token): Abstract methods can also
26260         be generic and thus have type parameters.
26261
26262         * metadata-internals.h
26263         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26264
26265         * reflection.c (mono_image_get_generic_param_info): Don't create a
26266         metadata row, just add an entry to the `gen_params' array.
26267         (build_compressed_metadata): Sort the `gen_params' array and then
26268         actually create the metadata.
26269
26270 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26271
26272         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26273
26274 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26275
26276         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26277
26278 2004-08-24  Martin Baulig  <martin@ximian.com>
26279
26280         * class.cs (mono_class_is_subclass_of): Like an interface, a
26281         generic instance also derives from System.Object.
26282
26283 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26284
26285         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26286         custom modifiers to be in any order. Fixes #61990.
26287
26288 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26289
26290         * object.c: Register mono_object_new_fast icall.
26291         
26292         * object.c (mono_class_get_allocation_ftn): Return to calling
26293         mono_object_new_fast, since it seems faster to compute the object 
26294         size in unmanaged code than passing it as a parameter.
26295
26296         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26297
26298         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26299         this function with Boehm as the oom handler, so we don't have to check
26300         the result of GC_malloc.
26301
26302         * object.c: Remove checks for oom.
26303
26304         * object.h object.c (mono_class_get_allocation_ftn): New function to
26305         return the icall which can be used to allocate an instance of a given
26306         class. 
26307
26308         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26309
26310         * class-internals.h: Add 'enabled' field.
26311
26312 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26313
26314         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26315
26316 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26317         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26318         value 0x0010.
26319
26320 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26321
26322         * appdomain.c: use the Tls function for appdomain too,
26323         at Zoltan's request. Actually return in mono_context_get
26324
26325         * appdomain.c, profiler.c, threads.c: use __thread
26326
26327 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26328
26329         * appdomain.c threads.c: Call GC_CreateThread on windows.
26330
26331         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26332         multiple libraries since this don't work on windows.
26333
26334 2004-08-18  Martin Baulig  <martin@ximian.com>
26335
26336         * class-internals.h
26337         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26338         MonoMethodHeader.
26339
26340         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26341         MonoMethodNormal since we also need it for abstract and interface
26342         methods.
26343
26344         * reflection.c
26345         (build_compressed_metadata): Sort the GenericParam table.
26346         (mono_image_create_token): Added `gboolean create_methodspec'
26347         argument; this is false when generating a MethodImpl token.
26348         (reflection_methodbuilder_to_mono_method): Abstract and interface
26349         methods may also have generic parameters.
26350
26351 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26352
26353         * appdomain.c: thread local alloc
26354
26355 2004-08-17  Martin Baulig  <martin@ximian.com>
26356
26357         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
26358
26359         * icall.c
26360         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
26361         argument.
26362
26363         * class.c (mono_type_get_full_name): New public function.
26364         (mono_type_get_name): Don't include the type arguments.
26365
26366 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
26367
26368         * Makefile.am: Build static versions of libmetadata and libmonoruntime
26369         for inclusion into the mono executable.
26370
26371 2004-08-16  Martin Baulig  <martin@ximian.com>
26372
26373         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
26374         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
26375
26376 2004-08-14  Martin Baulig  <martin@ximian.com>
26377
26378         * class.c (dup_type): Also copy the `byref' field.
26379
26380 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
26381
26382         * reflection.c (create_dynamic_mono_image): Revert the last change 
26383         since it breaks bootstrap.
26384
26385 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
26386
26387         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
26388
26389         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
26390         not free them with g_free.
26391
26392 2004-08-11  Martin Baulig  <martin@ximian.com>
26393
26394         * reflection.c (mono_reflection_setup_internal_class): Also call
26395         mono_class_setup_mono_type() if we already have a `tb->type.type'.
26396
26397 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
26398
26399         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
26400         called during default (first) AppDomain creation. Keep track of
26401         Evidence when loading assemblies.
26402
26403 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26404
26405         * opcodes.c, opcodes.h: reduce runtime relocations.
26406
26407 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
26408
26409         * culture-info.h, locales.c: fixes and chages to sue the new
26410         optimized format of the locale data.
26411         * culture-info-tables.h: regenerated.
26412
26413 2004-08-06  Geoff Norton <gnorton@customerdna.com>
26414         
26415         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
26416
26417 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
26418
26419         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
26420         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
26421         * domain-internals.h: icall declaration.
26422         * icall.c: icall registration.
26423         * object-internals.h: New fields in MonoAssembly for CAS.
26424
26425 2004-08-05  Duncan Mak  <duncan@ximian.com>
26426
26427         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
26428         CEE_LDELEM_ANY.
26429
26430 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26431
26432         * reflection.c: fix to deal with object[] arrays in custom ctors
26433         (bug #62550).
26434
26435 2004-08-05  Martin Baulig  <martin@ximian.com>
26436
26437         * class.c (mono_class_array_element_size): Added support for
26438         generic instances and correctly handle "recursive" types.
26439
26440 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
26441
26442         * assembly.c: Fix warnings.
26443
26444 2004-08-04  Martin Baulig  <martin@ximian.com>
26445
26446         * class.c
26447         (mono_type_get_name_recurse): Added `gboolean include_arity'
26448         argument specifying whether or not we should include the generic
26449         arity in the type name.
26450         (_mono_type_get_name): New static function.
26451         (mono_class_setup_vtable): If we're a generic instance, don't
26452         include the generic arity in the names of explicit method
26453         implementations.        
26454
26455 2004-08-03  Martin Baulig  <martin@ximian.com>
26456
26457         * class.c (mono_type_get_name_recurse): Enclose the generic type
26458         arguments in `<', '>'.
26459
26460 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26461
26462         * gc.c: make GC warning messages use the trace API, they are just
26463         noise to most of the users.
26464
26465 2004-08-03  Martin Baulig  <martin@ximian.com>
26466
26467         * debug-mono-symfile.c (read_string): Correctly read the string.
26468
26469 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
26470
26471         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
26472         
26473         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
26474         icalls.
26475         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
26476
26477 2004-07-30  Martin Baulig  <martin@ximian.com>
26478
26479         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
26480         Reflect latest symbol writer changes.   
26481
26482 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26483
26484         * object.c: always create an object if null is passed
26485         to Invoke() where a valuetype is expected.
26486
26487 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
26488
26489         * marshal.c (mono_marshal_init): make managed
26490         signatures match native ones better for 64bits.
26491
26492 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26493
26494         * appdomain.c: hack to build correctly the private bin path on windows.
26495         Fixes bug #61991.
26496
26497 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
26498
26499         * assembly.c: Load mscorlib from the correct framework directory
26500           (mono/<version>/mscorlib.dll).
26501         * appdomain.h: Added prototypes for new functions.
26502         * internals.h: Added some prototypes.
26503         * domain.c: When initializing the runtime, get from the executable and
26504           the configuration files the runtime version that the app supports.
26505           Added support methods for reading app.exe.config. Added list of versions
26506           supported by the JIT. Added two new methods: mono_init_from_assembly,
26507           which initializes the runtime and determines the required version from
26508           the provided exe file, and mono_init_version, which initializes
26509           the runtime using the provided version.
26510         * icall.c: Get machine.config from version-specific directory.
26511         * reflection.c: When generating an image, embed the version number
26512           of the current runtime.
26513
26514 2004-07-28  Dick Porter  <dick@ximian.com>
26515
26516         * socket-io.c
26517         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
26518         returned sockaddr size before creating the remote address object.
26519         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
26520         61608.
26521
26522 2004-07-28  Dick Porter  <dick@ximian.com>
26523
26524         * locales.c (string_invariant_compare_char): Fix invariant char
26525         compares between upper and lower cases.  Fixes bug 61458.
26526
26527 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
26528         
26529         * marshal.c: actually cache stelem.ref wrappers.
26530         
26531 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
26532
26533         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
26534         sections and remove the mono_cli_rva_map () function.
26535
26536 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26537
26538         * debug-mono-symfile.c: fix one more endianess issue, from a patch
26539         by Geoff Norton (<gnorton@customerdna.com>).
26540
26541 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
26542
26543         * class.c: fix class loads for pointer types (typeof(int) !=
26544         typeof(int*)).
26545
26546 2004-07-27  Martin Baulig  <martin@ximian.com>
26547
26548         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
26549         reading the debugging information from an external ".mdb" file.
26550
26551 2004-07-24  Martin Baulig  <martin@ximian.com>
26552
26553         * reflection.c (mono_image_get_type_info): Only write a class
26554         layout entry if we actually have a size or a packing size.
26555
26556 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26557
26558         * reflection.c (type_get_fully_qualified_name): 
26559         insert cast to get type checking of ?: with non-gcc compilers
26560
26561 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
26562
26563         * rand.c: use g_getenv for both lookups of
26564         MONO_EGD_SOCKET
26565
26566 2004-07-17  Martin Baulig  <martin@ximian.com>
26567
26568         * reflection.c (mono_reflection_bind_generic_method_parameters):
26569         Set `gmethod->reflection_info'.
26570
26571 2004-07-17  Martin Baulig  <martin@ximian.com>
26572
26573         * class.c (mono_class_create_from_typedef): Insert the newly
26574         created class into the hash table before computing the interfaces
26575         since we could be called recursively.
26576
26577 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
26578
26579         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
26580         function to implement stelem.ref in managed code
26581         * class-internals.h, debug-helpers.c: a new wrapper type
26582         for the above.
26583
26584 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
26585
26586         * gc.c: allow GC handles to work even when no GC is compiled in.
26587         Fix part of bug #61134 (GetAddrOfPinnedObject).
26588
26589 2004-07-13  Peter Williams  <peter@newton.cx>
26590  
26591         * process.c (complete_path): Make sure we don't attempt to execute
26592         directories.
26593  
26594 2004-07-12  Geoff Norton <gnorton@customerdna.com>
26595
26596         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
26597           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
26598           and will add/subtract the hour if needed
26599
26600 2004-07-12  Martin Baulig  <martin@ximian.com>
26601
26602         * reflection.c (mono_field_get_object): If we have
26603         `field->generic_info', take the attributes from
26604         `field->generic_info->generic_type'.    
26605
26606 2004-07-12  Martin Baulig  <martin@ximian.com>
26607
26608         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
26609         This function must be called before initializing the runtime.
26610         (mono_debug_init_1): New function; call this after initializing
26611         the runtime, but before loading the assembly.  It tells the
26612         debugger to load corlib and the builtin types.
26613
26614         * mono-debug-debugger.c: Did some larger changes in the debugging
26615         code; support recursive class declarations, make sure we actually
26616         add all classes.
26617
26618 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26619
26620         * debug-helpers.c: undo my previous patch and fixed the real issue in
26621         ../mini/exceptions-x86.c
26622
26623 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26624
26625         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
26626         when no HOME env. variable was set and a NullRef was thrown in a .cctor
26627         called from other .cctors.
26628
26629 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
26630
26631         * loader.c: Removed the mono_loader_wine_init hack now that we are
26632         doing a managed version of Windows.Forms.
26633
26634 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
26635
26636         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
26637         threadpool.c, threads.c: remove static data from rootset.
26638
26639 2004-07-09  Dick Porter  <dick@ximian.com>
26640
26641         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
26642         Don't do any more processing if the matched length was 0.  It was
26643         increasing the size of the string before.  Fixes bug 61167.
26644
26645 2004-07-09  Dick Porter  <dick@ximian.com>
26646
26647         * socket-io.h:
26648         * socket-io.c
26649         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
26650         Add support for SO_PEERCRED if its available.
26651
26652 2004-07-09  Peter Bartok <pbartok@novell.com>
26653         * loader.c: winelib.exe.so error message is now only displayed if
26654         MONO_DEBUG is set. To help us avoid questions when people are trying
26655         out the new Managed.Windows.Forms.
26656
26657 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
26658
26659         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
26660         for isinst and castclass wrappers.
26661
26662         * class-internals.h icall.c: Move registration and lookup of JIT icalls
26663         to libmetadata from the JIT, so they could be used by the marshalling
26664         code and the interpreter.
26665
26666         * marshal.c: Register marshalling related JIT icalls here instead of
26667         in mini.c. Use CEE_MONO_ICALL instead of the family of 
26668         CEE_MONO_PROC<x> opcodes to call marshalling functions.
26669
26670         * metadata.h: Remove unneeded marshalling conversions.
26671
26672         * opcodes.c: Update for new opcodes.
26673         
26674 2004-07-08  Martin Baulig  <martin@ximian.com>
26675
26676         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
26677         (mono_debug_get_domain_data): Make this function static.
26678
26679 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
26680
26681         * gc.c, object.h: add nice GC handle API for embedders.
26682
26683 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
26684
26685         * reflection.c: more changes for the new api
26686
26687         * object.c: When we reflect on a field w/ a constant value, it
26688         will not have a memory location, so we must access metadata. Also,
26689         allow easier reading of strings so that we can read them from
26690         the constant data.
26691
26692         * class.c (mono_class_layout_fields): no need for literal fields here.
26693
26694         * class-internals.h: api changes for const fields
26695
26696         * icall.c (ves_icall_get_enum_info): use new apis for const fields
26697
26698 2004-07-06  Martin Baulig  <martin@ximian.com>
26699
26700         * mono-debug.h: Increment version number to 44.
26701
26702         * mono-debug.c (mono_debug_add_wrapper): The second argument is
26703         now a gpointer, rewrote this whole method.
26704
26705         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
26706         function.  Add information about the wrapper in a new "misc table".
26707
26708         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
26709         for the new misc table.
26710
26711 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
26712
26713         * metadata-internals.h image.c: Add a cache for helper signatures.
26714
26715         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
26716
26717 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
26718
26719         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
26720         delegates from a delegate. Fixes #61033.
26721         
26722         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
26723         marshalling of stringbuilder arrays. Fixes #59900.
26724
26725 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
26726
26727         * icall.c: Add EnumBuilder:setup_enum_type icall.
26728
26729 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
26730
26731         * icall.c: Added a new icall for the property version of
26732         OffsetOfStringData.
26733
26734 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
26735
26736         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
26737         it has a constant size across platforms.
26738
26739         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
26740         stack trace.
26741
26742 2004-06-29  Martin Baulig  <martin@ximian.com>
26743
26744         * mono-debug.c (mono_debug_add_method): Protect the whole function
26745         in mono_debugger_lock(), not just parts of it.
26746
26747 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26748
26749         * reflection.c: make sure padding bytes in heaps are zeroed.
26750
26751 2004-06-24  David Waite  <mass@akuma.org>
26752
26753         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
26754         image.c, loader.c, locales.c, marshal.c, metadata.c,
26755         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
26756         string-icalls.c, threads.c: change to C90-style comments from C99 /
26757         C++ -style
26758
26759 2004-06-24  Dick Porter  <dick@ximian.com>
26760
26761         * threads.c
26762         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
26763         return createdNew.  Fixes bug 60412.
26764
26765         * threads-types.h: 
26766         * icall.c: Add createdNew parameter to CreateMutex icall
26767
26768 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
26769
26770         * reflection.c, object-internals.h: save default value in params.
26771
26772 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26773
26774         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
26775         no need to build a new path combining that with the application base.
26776         Fixes bug #60442.
26777
26778 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
26779
26780         * reflection.c: fixed minor standard compliance issues.
26781
26782 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
26783
26784         * reflection.c: fixed issue with encoding some custom attributes
26785         (arrays in properties and fields, bug #60411).
26786
26787 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26788
26789         * reflection.c: fix start address when copying the public key token.
26790
26791 2004-06-23  Martin Baulig  <martin@ximian.com>
26792
26793         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
26794         the `exc' object in a static object to put it into the GC's root set.
26795
26796 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
26797
26798         * reflection.c: make mono_reflection_setup_internal_class ()
26799         callable a second time to setup a new parent class.
26800
26801 2004-06-23  Dick Porter  <dick@ximian.com>
26802
26803         * threads.c: Check for WAIT_IO_COMPLETION return values.
26804
26805 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
26806
26807         * appdomain.c: Removed the g_free on the public key token. Now copy 
26808         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
26809         * assembly.c: Added public key token string value when loading 
26810         assemblies. Fix bug #60439.
26811         * icall.c: Added missing informations (like public key) in 
26812         GetReferencedAssemblies. Fix #60519.
26813         * image.h: Changed definition for public key token from const char*
26814         public_tok_value to guchar public_key_token [17];
26815         * reflection.c: Updated for changes to public key token.
26816
26817 2004-06-22  Lluis Sanchez Gual
26818
26819         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
26820         for the field in base classes.
26821
26822 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
26823
26824         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
26825         mark headers as not supported, they are installed only for use by the
26826         debugger.
26827
26828 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
26829
26830         * *.c, *.h: avoid namespace pollution in public headers.
26831
26832 2004-06-21  Martin Baulig  <martin@ximian.com>
26833
26834         * exception.c (mono_get_exception_security): It's in
26835         "System.Security", not in "System".
26836
26837         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
26838         the exception classes.
26839
26840 2004-06-21  Martin Baulig  <martin@ximian.com>
26841
26842         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
26843         Protect the exception object from being finalized.
26844
26845 2004-06-21  Martin Baulig  <martin@ximian.com>
26846
26847         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
26848         public function.
26849
26850 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
26851
26852         * reflection.c: Load the assembly in mono_reflection_type_from_name,
26853         if it was not loaded before. Fix parts of #60439.
26854
26855 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
26856
26857         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
26858         code that was broken since Ben's change: wrappers are now
26859         dependent on the method signature only again.
26860
26861 2004-06-21  Martin Baulig  <martin@ximian.com>
26862
26863         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
26864         added interface support.
26865
26866 2004-06-21  Martin Baulig  <martin@ximian.com>
26867
26868         * class.c (mono_vtable_get_static_field_data): New public method.
26869
26870 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
26871
26872         * filewatcher.c : Windows build fix to be compliant with API changes.
26873
26874 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
26875
26876         * class.h, class.c: more accessors.
26877         * metadata.h, metadata.c: prepare for hiding MonoType and
26878         MonoMethodSignature: people should use the accessors from now on
26879         outside of the tree.
26880
26881 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
26882
26883         * *.c, *.h: more API cleanups.
26884
26885 2004-06-18  Jackson Harper  <jackson@ximian.com>
26886
26887         * assembly.c: Trace loading assemblies.
26888         * loader.c: Trace loading native libraries.
26889         * mono-config.c: Trace loading config files.
26890         
26891 2004-06-18  Dick Porter  <dick@ximian.com>
26892
26893         * locales.c: Tell ICU the lengths of strings, it can cope with
26894         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
26895
26896 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
26897
26898         * image.c: swapped name/filename;
26899
26900 2004-06-18  Martin Baulig  <martin@ximian.com>
26901
26902         * mono-debug-debugger.c (write_class): Write the parent class at
26903         the end of the header.
26904
26905 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
26906
26907         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
26908
26909 2004-06-17  Raja R Harinath  <rharinath@novell.com>
26910
26911         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
26912         (bundle_obj): New conditional define.
26913         (BUILT_SOURCES): Remove.
26914         ($(bundle_srcs)): Make parallel-make safe.
26915         (libmonoruntime_la_LIBADD): Make unconditional.
26916         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
26917         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
26918
26919 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
26920
26921         * culture-info-tables.h: It was inconsistent with the latest
26922           supp info files.
26923
26924 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
26925
26926         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
26927         be loaded.
26928
26929         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
26930         with gcc 2.95.
26931
26932 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
26933
26934         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
26935         cleaned up public header threads.h.
26936
26937 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
26938
26939         * Makefile.am, *.c, *.h: more API cleanups.
26940
26941 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
26942
26943         * Makefile.am: removed monosn from compilation.
26944         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
26945         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
26946         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
26947         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
26948         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
26949         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
26950
26951 2004-06-15  Jackson Harper  <jackson@ximian.com>
26952
26953         * assembly.c: Make locales lower case when searching the GAC for
26954         assemblies. gacutil will always make locales lowercase when
26955         installing so this effectively makes them case insensitive.
26956         
26957 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
26958
26959         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
26960         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
26961           parameter which allows to choose whether the wait can be interrupted or 
26962           not. Also added the method mono_monitor_enter(), which locks the monitor
26963           using an infinite wait and without allowing interruption.
26964           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
26965           interrupted.
26966         * object.h: Added new fields in MonoThread. suspend_event holds the event
26967           used to susped/resume the thread. synch_lock is the lock object to use for
26968           modifying the thread state.
26969         * threads.c: Use the new synch_lock object for locking, instead of "this",
26970           which can generate deadlocks.
26971           Moved thread state change in Thread.Sleep and Thread.Join from managed
26972           to unmanaged code. This avoids a deadlock when the thread was suspended
26973           just after acquiring the thread lock.
26974           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
26975           Implemented Thread.Suspend using an event instead of ThreadSuspend,
26976           which is not fully implemented in the io-layer.
26977         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
26978
26979 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
26980
26981         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
26982         threads-types.h: more API cleanups.
26983
26984 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
26985
26986         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
26987         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
26988         threadpool.c, threads.c: first pass at the exported API cleanup.
26989
26990 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
26991
26992         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
26993
26994 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26995
26996         * icall.c: added internalGetHome.
26997
26998 2004-06-14  Dick Porter  <dick@ximian.com>
26999
27000         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27001         possible to return successfully when '.' or '..' were the only
27002         entries in a directory, but were skipped.  The MonoIOStat was not
27003         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27004         Fixes bug 59574.
27005
27006 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27007
27008         * reflection.c: make binaries run on .Net 1.1 by default.
27009
27010 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27011
27012         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27013
27014 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27015
27016         * marshal.c: keep track of struct size with explicit layout
27017         (bug #59979).
27018
27019 2004-06-12  Martin Baulig  <martin@ximian.com>
27020
27021         * mono-debug-debugger.c: Comment out a debugging g_message().
27022
27023 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27024
27025         * reflection.c, reflection.h: do not free custom attrs that are cached.
27026         * icall.c: use braces to make code clearer.
27027
27028 2004-06-11  Martin Baulig  <martin@ximian.com>
27029
27030         * class.h (MonoInflatedField): New type.
27031         (MonoClassField): Replaced `MonoType *generic_type' with
27032         `MonoInflatedField *generic_info'.
27033
27034         * icall.c
27035         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27036
27037 2004-06-11  Martin Baulig  <martin@ximian.com>
27038
27039         * reflection.c (mono_image_create_method_token): Correctly encode
27040         varargs methods.
27041
27042 2004-06-11  Martin Baulig  <martin@ximian.com>
27043
27044         * metadata.c (mono_metadata_parse_method_signature): When parsing
27045         a MethodDef which has VarArgs, also set sentinelpos if we don't
27046         have any parameters.
27047
27048 2004-06-11  Martin Baulig  <martin@ximian.com>
27049
27050         * verify.c (mono_method_verify): In CEE_CALL, use
27051         mono_method_get_signature() to get the method's signature, unless
27052         we're a PInvoke method.
27053
27054 2004-06-10  Jackson Harper  <jackson@ximian.com>
27055
27056         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27057         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27058         logical name as the supplied path is just a prefix to the gac not
27059         the direct path to it.
27060         
27061 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27062
27063         * reflection.c: make the token for a created method match
27064         the token of the MethodBuilder it was created from
27065         (IKVM requires this behaviour now).
27066
27067 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27068
27069         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27070         reflection.c, socket-io.c: leak fixes.
27071
27072 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27073
27074         * icall.c: handle sentinel pos in vararg methods in position different
27075         from 0.
27076
27077 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27078
27079         * culture-info-tables.h: freshly generated.
27080
27081 2004-06-09  Martin Baulig  <martin@ximian.com>
27082
27083         * loader.c (mono_get_method_constrained): Call `mono_class_init
27084         (constrained_class)'.   
27085
27086 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27087
27088         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27089         any methods. Fixes #59629.
27090
27091 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27092
27093         * culture-info-tables.h: reflecting locale-builder updates.
27094
27095 2004-06-08  Dick Porter  <dick@ximian.com>
27096
27097         * object.h:
27098         * locales.c: Fixed compile warnings, including a real bug in
27099         CompareInfo_internal_compare.
27100         
27101 2004-06-08  Dick Porter  <dick@ximian.com>
27102
27103         * locales.c
27104         (ves_icall_System_Globalization_CompareInfo_internal_index):
27105         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27106         Double-check the resuls of usearches, because ICU currently
27107         ignores most of the collator settings here.  Fixes bug 59720.
27108         
27109 2004-06-08  Dick Porter  <dick@ximian.com>
27110
27111         * locales.c
27112         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27113         Fix memory leak and segfault-causing typo.  No idea how this one
27114         lasted so long without being noticed.
27115
27116 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27117
27118         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27119         any methods. Fixes #59629.
27120
27121 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27122
27123         * assembly.c:
27124         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27125         own the critical section before). Removed dead code (that's done
27126         in the preload hook).
27127
27128         (mono_assembly_load_with_partial_name): call the preload hook.
27129
27130 2004-06-08  Martin Baulig  <martin@ximian.com>
27131
27132         * metadata.c (mono_metadata_signature_alloc): Default
27133         `sentinelpos' to -1.
27134
27135         * reflection.c (mono_image_get_array_token): Likewise.
27136
27137 2004-06-08  Martin Baulig  <martin@ximian.com>
27138
27139         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27140
27141         * metadata.c (mono_metadata_parse_method_signature): When parsing
27142         a MethodDef which has VarArgs, set sentinelpos.
27143
27144         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27145         `gint16' since we're using -1 for non-varargs methods.
27146
27147         * reflection.c
27148         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27149         (method_encode_signature): Added varargs support.
27150         (method_builder_encode_signature): Likewise.
27151         (mono_image_get_varargs_method_token): New static method.
27152         (mono_image_create_method_token): New public method; this is
27153         called via an icall instead of mono_image_create_token() when
27154         calling a varargs method.       
27155
27156 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27157
27158         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27159
27160 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27161
27162         * culture-info-tables.h : Reflecting the latest locale-builder that
27163           fixed empty array representation ({} to {0}).
27164
27165 2004-06-07  Jackson Harper  <jackson@ximian.com>
27166
27167         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27168         looking up extra gac paths. This allows MONO_GAC_PATH to act
27169         exactly like a prefix.
27170         
27171 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27172
27173         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27174         type name before modifying it. Fixes #59405.
27175
27176 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27177
27178         * culture-info.h: added fields for "all datetime patterns".
27179         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27180           _construct_datetime_format ()): fill xxx_patterns fields.
27181         * object.h: added fields for "all datetime patterns" to
27182           MonoDateTimeFormatInfo.
27183         * culture-info-tables.h: reflecting locale-builder updates.
27184
27185 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27186
27187         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27188         the event has no add and remove methods. Fixes #59629.
27189
27190 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27191
27192         * object.c: Fixed possible integer overflow when allocating large
27193         strings.
27194
27195 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27196
27197         * culture-info-tables.h: reflecting locale-builder updates.
27198
27199 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27200
27201         * culture-info-tables.h: reflecting locale-builder updates.
27202
27203 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27204
27205         * culture-info-tables.h: reflecting locale-builder updates.
27206
27207 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27208
27209         * threads.c: Made Thread.Sleep abortable.
27210
27211 2004-06-02  Martin Baulig  <martin@ximian.com>
27212
27213         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27214
27215         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27216
27217 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27218
27219         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27220
27221 2004-05-30  Jackson Harper  <jackson@ximian.com>
27222
27223         * reflection.c: Do not hardcode assembly versions or public key
27224         tokens anymore. All of this except the corlib section was dead
27225         code anyways.
27226         
27227 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27228
27229         * object.c (mono_runtime_invoke_array): Automatically create boxed
27230         objects for byref valuetypes if needed. Fixes #59300.
27231         
27232         * object.c (mono_method_return_message_restore): Handle 
27233         MONO_TYPE_OBJECT as well.
27234
27235 2004-05-28  Jackson Harper  <jackson@ximian.com>
27236
27237         * reflection.c: The modified type encoding was causing build
27238         problems. Reverted for now.
27239         
27240 2004-05-28  Jackson Harper  <jackson@ximian.com>
27241
27242         * reflection.c/h: Take an assembly ref so that we dont create
27243         fully qualified names when encoding types in the same assembly as
27244         the custom attribute being emitted.
27245         * appdomain.c: Increment version number.
27246         
27247 2004-05-26  Duncan Mak  <duncan@ximian.com>
27248
27249         * icall.c
27250         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27251         Set the full version number (major, minor, build, revision).
27252
27253 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27254
27255         * marshal.c (emit_struct_conv): increment src/dst after blit
27256         (mono_marshal_get_managed_wrapper,
27257         mono_marshal_get_native_wrapper): make sure we have marshalling
27258         info before marshalling params (info computation affects
27259         blittable)
27260
27261         * class.c (class_compute_field_layout): correctly deal with
27262         blittable
27263         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27264         value types (as per what windows dows by default)
27265         (mono_class_setup_mono_type): System.ValueType is blittable
27266         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27267         blittable
27268
27269         * marshal.c (mono_marshal_load_type_info): flag types  as
27270         non-blittable if the native layout doesn't match the managed
27271         layout
27272
27273 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27274
27275         * appdomain.c: don't add stuff in the private search path that is
27276         above the application base. If application base is not set, there's
27277         no private search path.
27278
27279 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27280
27281         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27282         byref struct arguments in native->managed marshalling.
27283
27284 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27285
27286         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27287         cache methods using signature (special case for methods
27288         that are value type or string class)
27289         
27290         * image.c (mono_image_close): clean up allocated GSList's
27291         in runtime_invoke_cache.
27292
27293 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27294
27295         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27296         there's no MONO_CFG_DIR environment variable defined.
27297
27298 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27299
27300         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27301
27302 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27303
27304         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27305           is interrumped.
27306         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27307           before waiting for it, and call CloseHandle after the wait to unref it.
27308           This will make sure that handles are not disposed too early.
27309
27310 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27311
27312         * appdomain.c:
27313         * appdomain.h:
27314         * icall.c: removed
27315         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27316         needed now.
27317
27318         * object.c: se the application_base only for the domain that runs
27319         Main. Fixes bug #59216,
27320
27321 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27322
27323         * appdomain.c:
27324         * object.c: only the domain in which Main is run have
27325         SetupInformation.ConfigurationFile set, so moved a few lines from
27326         appdomain.c to object.c.
27327
27328 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27329
27330         * appdomain.c: we tried to load [name].(dll|exe), but according
27331         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27332         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27333         There's a test case attached to bug #58922.
27334
27335 2004-05-27  Dick Porter  <dick@ximian.com>
27336
27337         * icall.c:
27338         * file-io.c: Implemented icalls for locking and unlocking regions
27339         in a file.
27340         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27341         FALSE on error (fixes both compiler warning and real bug.)
27342
27343 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27344
27345         * culture-info-tables.h: reflecting locale-builder updates.
27346
27347           (Added missing ChangeLog entry for 05/26)
27348
27349 2004-05-27  Jackson Harper  <jackson@ximian.com>
27350
27351         * locales.c: Fix some cut and paste errors.
27352         
27353 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27354
27355         * mono-config.c: set the correct path for config. directory on windows.
27356
27357 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27358
27359         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
27360           on win32.
27361
27362 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27363
27364         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
27365         from pinvoke functions.
27366         
27367         * marshal.c (mono_ftnptr_to_delegate): Implement this.
27368
27369 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
27370
27371         * culture-info-tables.h: reflecting locale-builder updates.
27372
27373 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
27374
27375         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
27376         #59086.
27377
27378 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
27379
27380         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
27381         * icall.c: Modified icalls for RNG.
27382         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
27383         Windows (CryptoAPI).
27384
27385 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27386
27387         * locales.c: Fix build.
27388
27389 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
27390
27391         * culture-info-tables.h: reflecting locale-builder updates.
27392
27393 2004-05-25  Jackson Harper  <jackson@ximian.com>
27394
27395         * locales.c: When creating the current culture use the $LANGs
27396         specific culture. So DateTimeFormat and NumberFormat entries are created.
27397         
27398 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
27399
27400         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
27401         a char array as parameter.
27402
27403 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
27404
27405         * image.c: In mono_image_open(), always use an absolute path name to
27406           look for already loaded images.
27407
27408 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
27409
27410         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
27411         missing in the windows build (like older cygwin include files).
27412
27413 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
27414
27415         * icall.c: Fixed check for possible integer overflow in Buffer_
27416         BlockCopy icall. Replaced comments style // by /* */.
27417
27418 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
27419
27420         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
27421         
27422         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
27423         check after MONO_VTADDR. Fixes pinvoke2.exe.
27424
27425         * marshal.h marshal.c metadata.h: Add beginnings of support for
27426         ftnptr -> delegate marshalling.
27427
27428 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
27429
27430         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
27431         * threads.c: Fix warnings.
27432
27433 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
27434
27435         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
27436         * icall.c: Registered icalls for Suspend and Resume.
27437         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
27438           Thread.Abort.
27439         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
27440         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
27441         * process.c: Use WaitForSingleObjectEx.
27442         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
27443           checkpoints.
27444         * threads.c, threads.h: Make use of new Ex wait methods. Improved
27445           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
27446           for Suspend and Resume. Added new mono_thread_stop, used for stoping
27447           background threads. Added basic support for Abort in Windows.
27448           Start new threads using a managed delegate invoke wrapper. This wrapper
27449           has an interruption checkpoint that is needed since an interruption
27450           can be requested before the thread leaves the unmanaged code that starts 
27451           the thread.
27452         * marshal.c: Added interruption checkpoint after every native call, and
27453           also before managed calls for wrappers called from unmanaged code to
27454           go into managed code.
27455         * object.h: Added new field in MonoThread to keep track of interruption
27456           requests.
27457
27458 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
27459
27460         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
27461         calls.
27462
27463 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27464
27465         * appdomain.c:
27466         * assembly.c:
27467         * gc.c:
27468         * locales.c:
27469         * mono-config.c:
27470         * rand.c: getenv -> g_getenv (windows!)
27471
27472         * process.c: complete_path is also used on non-windows platforms.
27473
27474 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27475
27476         * icall.c: new signature for Process_Start.
27477
27478         * process.[ch]: new signature for Process_Start. If we're on windows
27479         and UseShellExecute is false, we have to search for the program by
27480         ourselves if we don't get a full path.
27481
27482 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
27483
27484         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
27485         marshalling and call CleanUpNativeData if needed. Fixes #58646.
27486
27487 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27488
27489         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
27490         Fixes bug #58373.
27491
27492 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27493
27494         * process.c: use double quotes to quote program name and arguments on
27495         windows. Fixes bug #58575.
27496
27497 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27498
27499         * file-io.c: don't return "." and ".." when using windows Find*File.
27500
27501 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
27502
27503         * marshal.c: Don't pass wrappers to message init because method 
27504         addressed used to lookup metadata. part of remoting[2|3] fix.
27505
27506 2004-05-15  Jackson Harper  <jackson@ximian.com>
27507
27508         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
27509         path is essentially the same as MONO_PATH except that it points to
27510         GACs instead of lib directories.
27511         * loader.h: The user gac is gone so we dont need function to
27512         enable/disable it.
27513         * mono-config.c: user gac option is now gone.
27514         
27515 2004-05-15  Jackson Harper  <jackson@ximian.com>
27516
27517         * culture-info.h: Make defines more consistent, add calendar data
27518         to the culture info table.
27519         * culture-info-tables.h: Add basic calendar data. Basically
27520         everyone gets default gregorian until all the data is
27521         updated.
27522         * locales.c: Use the new consistent defines. Set calendar data for
27523         culture info objects.
27524         * object.h: add a field for calendar data to CultureInfo
27525         
27526 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
27527
27528         * image.c: image->runtime_invoke_cache is keyed on signatures now.
27529         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
27530         a signature.
27531         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
27532         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
27533         an extra param that is the pointer of the method to invoke. The IL for
27534         the invoke method is no longer specific to the method, but to the
27535         signature of the method. Thus, we can share the same code for multiple
27536         methods. This reduces the number of methods that have to be compiled.
27537
27538 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
27539
27540         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
27541
27542         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27543
27544         * icall.c: Optimize Buffer.BlockCopy.
27545
27546 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27547
27548         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
27549         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
27550         quote). Changed them to "MMMM yyyy".
27551
27552 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
27553
27554         * rand.c
27555         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
27556
27557 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
27558
27559         * reflection.h: Updated after changes to managed structures.
27560
27561         * appdomain.c: Bump corlib version.
27562
27563 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27564
27565         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
27566         windows.
27567
27568 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27569
27570         * Makefile.am: link to ../os/libmonoos.la on windows.
27571
27572         * assembly.c:
27573                 -If MONO_DEBUG, warn about non-existing directories in
27574                 MONO_PATH.
27575                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
27576                 compile time variable.
27577                 -Removed init_default_path and call mono_set_rootdir from
27578                 libmonoos.a instead (windows only).
27579
27580         * assembly.h: declare mono_assembly_getrootdir().
27581
27582         * domain.c:
27583         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
27584
27585         * loader.c: s/getenv/g_getenv/
27586
27587 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
27588
27589         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
27590
27591         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
27592
27593         * metadata.h: Add new marshalling conversions.
27594
27595         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
27596         function.
27597
27598         * reflection.c (mono_reflection_get_type): Lookup the type in all
27599         modules of a multi-module assembly. Fixes #58291.
27600
27601 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
27602
27603         * threads.c: Before aborting a background, set the StopRequested
27604         state.  This avoids throwing the Abort exception.
27605         In mono_thread_manage, don't continue with the shutdown until all
27606         aborted threads have actually stopped.
27607
27608 2004-05-10  Jackson Harper  <jackson@ximian.com>
27609
27610         * locales.c: Remove the modifier from culture names.
27611         
27612 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27613
27614         * Makefile.am: monosn is not installed any more. It has been deprecated
27615         in favor of sn.
27616
27617 2004-05-07  Jackson Harper  <jackson@ximian.com>
27618
27619         * locales.c
27620         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
27621         Fix array construction, add bailout if the length is 0.
27622
27623 2004-05-07  Dick Porter  <dick@ximian.com>
27624
27625         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
27626         machine doesn't have a DNS entry.  Patch by Urs Muff
27627         (umuff@quark.com), fixes bug 57928.
27628
27629 2004-05-06  Jackson Harper  <jackson@ximian.com>
27630
27631         * reflection.c: Handle null PublicTokens properly. alloc mem for
27632         assembly names culture so we dont crash when freeing it.
27633         
27634 2004-05-06  Jackson Harper  <jackson@ximian.com>
27635
27636         * assembly.c: Check the usergac when loading with partial names.
27637         
27638 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
27639
27640         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
27641         does nothing for now (not required for Linux/Windows) but the class
27642         library can call it (and a newer or modified runtime could need it).
27643         * icall.c: Registred icall.
27644
27645 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27646
27647         * loader.c: prints a message on module loading error we set MONO_DEBUG
27648         environment variable.
27649
27650 2004-05-05  Jackson Harper  <jackson@ximian.com>
27651
27652         * appdomain.c: Handle PublicKeyToken=null properly.
27653         
27654 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
27655
27656         * environment.c|h: Added icall ves_icall_System_Environment_
27657         GetOSVersionString to get the current OS version as a string.
27658         * icall.c: Registred icall.
27659
27660 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
27661
27662         * object.c: in mono_object_get_virtual_method(), take into account that
27663         non-virtual methods don't have a slot in the vtable. Check needed when
27664         the object is a proxy.
27665
27666 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
27667
27668         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
27669         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
27670
27671         * object.c (mono_class_compute_gc_descriptor): Fix warning.
27672
27673         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
27674         passed when a valuetype is expected.
27675
27676         * object.c (mono_unhandled_exception): Only set the exit code if the
27677         exception happens in the main thread. Fixes thread5.exe.
27678
27679         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
27680         invalid names. Fixes #58047.
27681
27682 2004-05-03  Jackson Harper  <jackson@ximian.com>
27683
27684         * assembly.c: This line was committed accidently and is unneeded.
27685         
27686 2004-05-03  Jackson Harper  <jackson@ximian.com>
27687
27688         * icall.c: Add new icall for Assembly::LoadWithPartialName
27689         * assembly.c/.h: new function that probes the GAC to load partial
27690         assembly names by Paolo Molaro.
27691         
27692 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27693
27694         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
27695         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
27696         (type_get_fully_qualified_name): Added PublicKeyToken when building a
27697         full type name.
27698
27699 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27700
27701         * appdomain.c: fixed check for 'neutral' culture and removed warning.
27702         * reflection.c: fix bug when parsing a full type name and Version is not
27703         the last thing in the string.
27704
27705 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
27706
27707         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
27708         crashes when it is freed.
27709
27710 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27711
27712         * assembly.c: print the compat warning to stderr.
27713
27714 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
27715
27716         * assembly.c (mono_assembly_load_references): Add a compatibility
27717         hack to run old applications that might be still referencing the
27718         3300-based assemblies, only do this for System.xxx.
27719
27720 2004-05-01  Jackson Harper  <jackson@ximian.com>
27721
27722         * appdomain.c: If the culture is neutral we set it to "".
27723         
27724 2004-04-29  Jackson Harper  <jackson@ximian.com>
27725
27726         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
27727
27728 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
27729  
27730         * string-icalls.c: added low overhead function for copying chars
27731         * icall.c: added needed icall for the above function
27732  
27733 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27734
27735         * icall.c: fix return value of get_global_assembly_cache.  Implemented
27736         Environment.GetLogicalDrives.
27737
27738 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
27739
27740         * rand.c: try and talk to egd or prngd
27741         for random bytes if opening devices fail.
27742
27743 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
27744
27745         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
27746         alignment for the type using the native alignment of its members 
27747         instead of using klass->min_align.
27748
27749         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
27750
27751 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27752
27753         * file-io.c:
27754         * socket-io.c: added check for sys/aio.h.
27755
27756 2004-04-28  Dick Porter  <dick@ximian.com>
27757
27758         * threads.c: Don't abort a thread thats already aborting, when
27759         terminating everything.
27760
27761 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27762
27763         * icall.c: added 2 new async calls for Socket.
27764
27765         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
27766         IO on *nix systems.
27767
27768         * threadpool.c: removed unused variable.
27769
27770 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
27771
27772         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
27773
27774 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27775
27776         * locales.c: put back string_invariant_tolower () and
27777         string_invariant_toupper ().
27778
27779 2004-04-26 David Waite <mass@akuma.org>
27780
27781         * file-io.h:
27782         * socket-io.h:
27783         * threads.h:
27784         * unicode.h: remove comma from end of enumeration declarations
27785
27786 2004-04-26 David Waite <mass@akuma.org>
27787
27788         * debug-mono-symfile.h:
27789         * decimal.c:
27790         * mono_debug.h:
27791         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
27792
27793
27794 2004-04-26  Jackson Harper  <jackson@ximian.com>
27795
27796         * appdomain.c: Increment version number.
27797         
27798 2004-04-26  Jackson Harper  <jackson@ximian.com>
27799
27800         * appdomain.c: Set assembly references public token value when
27801         PublicKeyToken is specified, not the hash_value. Free public token
27802         values when free assembly name data. Previously the public key
27803         token was hex decoded, however we are using hex encoded public key
27804         tokens, so this is not neccasary.
27805         * assembly.c: Lookup assemblies in the gac if their public token
27806         value is set. Add function to allow enabling user gac
27807         lookups. Specify whether or not the assembly was loaded from the
27808         GAC. Compare full assembly names when checking the cache for
27809         assemblies (Temporarily disabled see comment in code). Remove
27810         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
27811         specifies trace-loader they get extra info to stdout on the
27812         loading of assemblies.
27813         * image.h: Add a field for an assembly references public token
27814         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
27815         whether an assembly has been loaded from the GAC.
27816         * image.c: Remove a corlib -> mscorlib name mapping.
27817         * loader.h: Add function to enable/disable the user gac.
27818         * mono-config.c: Check if the usergac is enabled in the config
27819         file.
27820         * icall.c: New icall to determine whether or not an assembly has
27821         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
27822         * tabldefs.h: Add constant for assemblyref flag that specifies a
27823         full public key is used instead of a public token.
27824         * reflection.c: Remove mscorlib -> corlib mappings. Set
27825         PublicTokenValue instead of hash value. This value is a hex
27826         string so it does not need to be expanded.
27827
27828 2004-04-26  Martin Baulig  <martin@ximian.com>
27829
27830         * mono-debug-debugger.c (mono_debugger_initialize): Set
27831         `mono_debugger_initialized' before calling mono_debug_lock().
27832
27833 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
27834
27835         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
27836           InternalToUpper/InternalToLower.
27837         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
27838           removed invariant culture shortcut.  This is now done in managed code.
27839         * locales.c: (string_invariant_toupper/tolower) removed.
27840
27841 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27842
27843         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
27844         Added Poll internal call.
27845
27846         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
27847         call for Poll. Select was too heavy for polling a single socket.
27848
27849         * threadpool.[ch]: added mono_threadpool_cleanup.
27850         * threads.c: use it. Don't use Thread_Abort on windows.
27851
27852 2004-04-23  Martin Baulig  <martin@ximian.com>
27853
27854         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
27855
27856 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
27857
27858         * icall.c: Registred new icalls for key pair protection and added an
27859         icall for Environment.GetFolderPath on Windows.
27860         * security.c|h: Added new icalls for key pair protection.
27861
27862 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27863
27864         * socket-io.c: don't display the non-supported family warning for known
27865         families. Now this is not displayed on windows when checking support
27866         for IPv4/IPv6.
27867
27868 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27869
27870         * class.c: don't display the layout warning for static fields.
27871
27872 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
27873
27874         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
27875         * locales.c, locales.h: Added new icalls for culture-specific
27876         Char.ToLower and Char.ToUpper.
27877
27878 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27879
27880         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
27881         by David Waite.
27882
27883 2004-04-20  Martin Baulig  <martin@ximian.com>
27884
27885         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
27886         of the type name before passing it to mono_reflection_type_from_name().
27887
27888 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
27889
27890         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
27891         encodings here. Fixes #56965.
27892
27893 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
27894
27895         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
27896         fix test on strstr result not that I can see anything that
27897         relies on the result.
27898
27899 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
27900
27901         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
27902         Fixes #57081.
27903
27904         * marshal.c (mono_marshal_get_string_encoding): New helper function.
27905
27906         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
27907         function to determine which marshalling to use for strings. Fixes
27908         #56965.
27909
27910         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
27911
27912         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
27913
27914 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
27915
27916         * icall.c: #include mono-config.h
27917
27918 2004-04-15  Jackson Harper  <jackson@ximian.com>
27919
27920         * culture-info-tables.h: Fix date formats for en-US culture.
27921         
27922 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
27923
27924         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
27925         ThreadPool.SetMinThreads.
27926         * threadpool.c: Implemented ThreadPool.GetMinThreads and
27927         ThreadPool.SetMinThreads.
27928
27929 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27930
27931         * mono-config.c: also load the .config file in the directory
27932         where the assembly was found.
27933
27934 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
27935
27936         * assembly.c: load per-assembly config files.
27937         * icall.c: decrapified code to get the config dir and moved to
27938         mono-config.c.
27939         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
27940         per-assembly config files. When doing a dll map lookup give precedence
27941         to the per-assembly data.
27942
27943 2004-04-14  Martin Baulig  <martin@ximian.com>
27944
27945         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
27946         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
27947         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
27948
27949         * mono-debugger-debugger.c: While the debugger is locked, remember
27950         whether the symbol tables have changes and send one single
27951         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
27952
27953 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
27954
27955         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
27956
27957         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
27958         function.
27959
27960         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
27961         account when marshalling string arrays. Fixes #56965.
27962
27963 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
27964
27965         * icall.c: Add new icalls mapping for security.
27966         * security.c|h: Add internal calls for WindowsIdentity,
27967         WindowsImpersonationContext and WindowsPrincipal.
27968
27969 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
27970
27971         * class.c: Added comment to ensure the System.MonoDummy class
27972         is removed when no longer necessary
27973
27974 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
27975
27976         * appdomain.c: Pass arguments to the bootstraping exceptions to
27977         minimize JITed methods at boot
27978
27979         * metadata.c (mono_exception_from_name_two_strings): Allow for the
27980         second string to be null.
27981
27982         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
27983         Change the protocol to minimize the JIT methods at startup.  Now
27984         it Returns the internal codepage, if the value of "int_code_page"
27985         is 1 at entry, and we can not compute a suitable code page
27986         number, returns the code page as a string.
27987
27988 2004-04-13  Jackson Harper  <jackson@ximian.com>
27989
27990         * culture-info-tables.h: Fix number of decimal digits for all
27991         english locales.
27992
27993 2004-04-13  Jackson Harper  <jackson@ximian.com>
27994
27995         * icall.c: Clairfy out of sync error message. It is not always
27996         your corlib that is out of sync.
27997
27998 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
27999
28000         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28001         properties when only the set accessor is overriden. Fixes #55874.
28002
28003 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28004
28005         * assembly.c (mono_assembly_load_references): Make this thread safe.
28006         Fixes #56327.
28007
28008 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28009
28010         * monosn.c: Add missing initialization calls.
28011
28012 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28013
28014         * locales.c:
28015         ves_icall_System_Globalization_CultureInfo_construct_number_format
28016         Fix g_assert so it compiles on fussier compilers re int/ptr
28017         mismatch
28018
28019 2004-04-08  Dick Porter  <dick@ximian.com>
28020
28021         * socket-io.h:
28022         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28023         53992.  Also rearrange the code so that the internal calls return
28024         an error value and exceptions are thrown from managed code.
28025
28026         * icall.c: Add type info to the socket icalls.
28027
28028 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28029
28030         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28031         owes me a beer.
28032
28033 2004-04-07  Martin Baulig  <martin@ximian.com>
28034
28035         * class.c (mono_class_from_generic_parameter): Don't default
28036         `klass->parent' to `mono_defaults.object_type'.
28037
28038 2004-04-07  Martin Baulig  <martin@ximian.com>
28039
28040         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28041         `param->pklass->reflection_info'.       
28042
28043 2004-04-07  Jackson Harper  <jackson@ximian.com>
28044
28045         * culture-info-tables.h: Fix date separator symbol.
28046         
28047 2004-04-07  Martin Baulig  <martin@ximian.com>
28048
28049         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28050         from System.Type to System.MonoType.
28051
28052 2004-04-07  Martin Baulig  <martin@ximian.com>
28053
28054         * reflection.h
28055         (MonoReflectionGenericParam): Added `has_reference_type' and
28056         `has_value_type' fields.
28057
28058         * reflection.c (mono_image_get_generic_param_info): Encode the
28059         correct flags if we have the `class' or `struct' constraint.
28060
28061 2004-04-07  Martin Baulig  <martin@ximian.com>
28062
28063         * reflection.h
28064         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28065
28066 2004-04-07  Jackson Harper  <jackson@ximian.com>
28067
28068         * appdomain.c: Revert extra patches, just wanted to bump the
28069         version number.
28070         
28071 2004-04-07  Jackson Harper  <jackson@ximian.com>
28072
28073         * Makefile.am: Add culture-info private headers.
28074         * icall.c: Add new icalls for contructing locales.
28075         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28076         * locales.h: Declare new culture info construction methods.
28077         * object.h: Add new fields used to avoid the CultureMap to
28078         MonoCultureInfo.
28079         * culture-info.h: Definition of structs used in the culture info
28080         tables.
28081         * culture-info-tables.h: Autogenerated tables that contain culture
28082         info data. This file was generated with the locale-builder tool.
28083         * appdomain.c: Incement corlib version number.
28084         
28085 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28086
28087         * appdomain.c: (mono_runtime_init) move mono_thread_init
28088         to before mono_object_new calls so critical sections
28089         are initialized before use.
28090
28091 2004-04-07  Martin Baulig  <martin@ximian.com>
28092
28093         * icall.c
28094         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28095         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28096         (ves_icall_MonoGenericParam_initialize): Removed.
28097         (monogenericparam_icalls): Removed.
28098         (generictypeparambuilder_icalls): Added new table for
28099         System.Reflection.Emit.GenericTypeParameterBuilder.
28100
28101         * reflection.c
28102         (mono_reflection_define_generic_parameter): Removed.
28103         (mono_reflection_initialize_generic_parameter): This is now called
28104         from GenericTypeParameterBuilder's .ctor.
28105
28106 2004-04-06  Martin Baulig  <martin@ximian.com>
28107
28108         * class.c (mono_class_init): Don't inflate nested classes in a
28109         generic instance.
28110         (mono_type_get_name_recurse): Include the generic arguments for
28111         generic instances and generic type declarations.
28112         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28113         (_mono_class_get_instantiation_name): Removed.
28114         (mono_class_create_generic): Always use `gklass->name' as our name.
28115
28116         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28117
28118         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28119         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28120         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28121         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28122         closed generic methods here.
28123
28124         * reflection.c
28125         (mono_reflection_generic_inst_get_nested_types): Removed.
28126         (inflate_mono_method): Copy the generic parameters from the
28127         MonoMethodHeader into out MonoGenericMethod.
28128
28129 2004-04-06  Martin Baulig  <martin@ximian.com>
28130
28131         * row-indexes.h
28132         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28133
28134         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28135
28136         * reflection.c (build_compressed_metadata): If we have any entries
28137         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28138         set the header version to 1.1.
28139
28140 2004-04-06  Martin Baulig  <martin@ximian.com>
28141
28142         * class.c (mono_class_init): If we're a generic instance,
28143         initialize our nested classes, too.
28144         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28145         suffix. 
28146
28147 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28148
28149         * process.c: quote the argument passed to the shell on windows.
28150
28151 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28152
28153         * threads.c (mono_alloc_special_static_data): Allow this to be
28154         called during startup.
28155
28156 2004-04-02  Martin Baulig  <martin@ximian.com>
28157
28158         * icall.c
28159         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28160
28161 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28162
28163         * icall.c: Fix build.
28164
28165 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28166
28167         * Makefile.am: Added security.c|h.
28168         * icall.c: Added icall for get_UserName;
28169         * security.c: New file for security related icalls. Added function
28170         get_UserName for System.Environment (fix #56144).
28171         * security.h: New. Header file for security.c
28172
28173 2004-04-02  Dick Porter  <dick@ximian.com>
28174
28175         * icall.c: Deleted the icalls that were obsoleted some time ago
28176         by the ICU string code, and which were mixed into the icall
28177         rearranging.  Fixes bug 55969.
28178
28179         * string-icalls.h: 
28180         * string-icalls.c: Deleted the code that those icalls reference.
28181
28182 2004-04-01  Martin Baulig  <martin@ximian.com>
28183
28184         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28185
28186         * class.c (mono_class_from_generic_parameter): Don't set 
28187         TYPE_ATTRIBUTE_INTERFACE.
28188         (my_mono_class_from_generic_parameter): Likewise.
28189
28190 2004-04-01  Martin Baulig  <martin@ximian.com>
28191
28192         * loader.c (find_method): Added an optional `MonoClass *ic'
28193         argument to search in a specific interface.
28194         (mono_get_method_constrained): New public function.
28195
28196 2004-04-01  Martin Baulig  <martin@ximian.com>
28197
28198         * reflection.c (mono_image_get_generic_field_token): Use the
28199         `handleref' cache here.
28200
28201 2004-04-01  Martin Baulig  <martin@ximian.com>
28202
28203         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28204
28205         * reflection.c (create_generic_typespec): Use the `typespec' hash
28206         here, not the `typeref' one.    
28207
28208 2004-04-01  Martin Baulig  <martin@ximian.com>
28209
28210         * class.c (mono_class_inflate_generic_type): Moved the
28211         functionality into a new static inflate_generic_type() which
28212         returns NULL if it didn't do anything.  Only increment the
28213         `mono_stats.inflated_type_count' if we actually inflated
28214         something.
28215         (mono_class_get_full): Check the classes type to see whether we
28216         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28217
28218 2004-04-01  Jackson Harper  <jackson@ximian.com>
28219
28220         * reflection.c: Set culture for assembly references.
28221         
28222 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28223
28224         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28225
28226 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28227
28228         * assembly.c:
28229         (do_mono_assembly_open): the critical section also covers
28230         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28231
28232 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28233
28234         * threads.c:
28235         (mono_manage_threads): abort the background threads when finishing.
28236         Fixes bug #47232.
28237
28238 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28239
28240         * gc.c: only close the done_event handle if there was no timeout.
28241         C-ified comments.
28242
28243 2004-03-30  Martin Baulig  <martin@ximian.com>
28244
28245         * icall.c (icall_entries): It's called "System.Activator", not
28246         "System.Activation".    
28247
28248 2004-03-30  Martin Baulig  <martin@ximian.com>
28249
28250         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28251         (mono_class_create_from_typespec): Likewise.
28252
28253 2004-03-30  Martin Baulig  <martin@ximian.com>
28254
28255         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28256         `has_ctor_constraint' and `initialized'.
28257
28258 2004-03-30  Martin Baulig  <martin@ximian.com>
28259
28260         * reflection.c (encode_new_constraint): New static function to add
28261         the constructor constraint attribute to a type parameter.
28262         (encode_constraints): Call encode_new_constraint() if necessary.
28263
28264         * reflection.h
28265         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28266
28267         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28268         
28269 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28270
28271         * reflection.c, icall.c: add support for pinning variables. 
28272
28273 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28274
28275         * marshal.c (mono_marshal_get_managed_wrapper):
28276         init bool local with zero rather than null.
28277
28278 2004-03-29  Martin Baulig  <martin@ximian.com>
28279
28280         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28281         the "official" behavior here.
28282         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28283
28284 2004-03-29  Martin Baulig  <martin@ximian.com>
28285
28286         * icall.c: Reflect latest API changes.
28287
28288 2004-03-29  Martin Baulig  <martin@ximian.com>
28289
28290         * loader.c (mono_get_method_from_token): Also call
28291         mono_metadata_load_generic_params () for abstract and interface
28292         methods; replace the type arguments in the method signature with
28293         the ones which are loaded from the metadata.
28294
28295 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28296
28297         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28298         of the lock is not the current thread. MS.NET don't do it, in spite of
28299         what the documentation says. See bug #56157.
28300
28301 2004-03-28  Martin Baulig  <martin@ximian.com>
28302
28303         * class.c (mono_class_init): Don't call init_properties() and
28304         init_events() for generic instances; set `prop->parent' when
28305         inflating properties.
28306
28307         * reflection.c (mono_generic_inst_get_object): Call
28308         `mono_class_init (ginst->klass)'.
28309         (mono_type_get_object): Only create a MonoGenericInst if your
28310         generic type is a TypeBuilder.
28311         (do_mono_reflection_bind_generic_parameters): Only set
28312         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28313
28314 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28315
28316         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28317         Fixes #56091.
28318
28319 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28320
28321         * icall.c: added Kill_internal icall.
28322         * process.[ch]: added Kill_internal icall.
28323
28324 2004-03-25  Martin Baulig  <martin@ximian.com>
28325
28326         * class.h (MonoStats): Added `generic_instance_count',
28327         `inflated_method_count', `inflated_type_count' and
28328         `generics_metadata_size'.       
28329
28330 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28331
28332         * reflection.c: no warnings now.
28333
28334 2004-03-25  Martin Baulig  <martin@ximian.com>
28335
28336         * class.c (mono_class_get_full): New public function; does a
28337         mono_class_get(), but also takes a `MonoGenericContext *'.
28338
28339         * loader.c (mono_field_from_memberref): Renamed to
28340         `field_from_memberref', made static and added `MonoGenericContext *'
28341         argument.
28342         (mono_field_from_token): Added `MonoGenericInst *' argument.
28343         (method_from_memberef): Likewise.
28344         (mono_get_method_from_token): Likewise.
28345         (mono_get_method_full): New public function; does a
28346         mono_get_method(), but also takes a `MonoGenericContext *'.
28347
28348         * verify.c (mono_method_verify): Get the method's generic context
28349         and pass it to mono_field_from_token(), mono_get_method_full() and
28350         mono_class_get_full().
28351
28352 2004-03-25  Martin Baulig  <martin@ximian.com>
28353
28354         * class.c (mono_class_inflate_generic_type): Take a
28355         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28356         `MonoGenericMethod *'.
28357
28358 2004-03-25  Martin Baulig  <martin@ximian.com>
28359
28360         * loader.h (MonoMethodInflated): Store the MonoGenericContext
28361         instead of the MonoGenericMethod here.
28362
28363 2004-03-25  Martin Baulig  <martin@ximian.com>
28364
28365         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
28366         each time we create a new MonoGenericInst, we also create a new
28367         context which points back to us.
28368
28369         * class.c (inflate_method): Use `ginst->context' instead of
28370         creating a new context.
28371
28372         * loader.c (method_from_memberref): Use
28373         `klass->generic_inst->context' instead of creating a new context.
28374
28375 2004-03-25  Martin Baulig  <martin@ximian.com>
28376
28377         * class.h (MonoGenericContext): New struct.
28378         (MonoGenericMethod): Removed `generic_inst'.
28379
28380         * class.c (mono_class_inflate_generic_method): Take a
28381         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
28382
28383 2004-03-25  Martin Baulig  <martin@ximian.com>
28384
28385         * loader.h (MonoMethodInflated): New typedef.
28386
28387         * metadata.h (MonoMethodSignature): Removed `gen_method', make
28388         `generic_param_count' consume just 30 bits, added `is_inflated'
28389         and `has_type_parameters' flags (one bit each).
28390
28391         * class.c (mono_class_inflate_generic_method): Create a
28392         MonoMethodInflated instead of a MonoMethodNormal and set
28393         `is_inflated' in the method signature.
28394
28395         * class.h (MonoGenericMethod): Removed `generic_method'.
28396
28397 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
28398
28399         * image.c: Make sure the name of a MonoImage is always an absolute path.
28400           This fixes bug #54415.
28401
28402 2004-03-24  Martin Baulig  <martin@ximian.com>
28403
28404         * class.c (mono_class_setup_vtable): If we're a generic instance,
28405         use our generic type's vtable size.
28406
28407 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
28408
28409         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
28410         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
28411         problems.
28412
28413 2004-03-23  Martin Baulig  <martin@ximian.com>
28414
28415         * class.h (MonoDynamicGenericInst): Added `int count_events' and
28416         `MonoEvent *events'.
28417
28418         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
28419         (typebuilder_icalls): Added "get_event_info"; calls
28420         mono_reflection_event_builder_get_event_info(). 
28421
28422         * reflection.c (mono_reflection_generic_inst_initialize): Added
28423         `MonoArray *events'.
28424         (mono_reflection_event_builder_get_event_info): New function.
28425
28426 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
28427
28428         * object.h: add mono_type_initialization_init
28429
28430         * object.c (mono_runtime_class_init): 
28431         implement class constructor synchronization rules
28432         to cope with threading issues.  
28433         add mono_type_initialization_init
28434
28435         * appdomain.c (mono_runtime_init): call 
28436         mono_type_initialization_init
28437
28438         * class.h: removing initializing field from MonoVTable
28439
28440 2004-03-23  Martin Baulig  <martin@ximian.com>
28441
28442         * class.c (my_mono_class_from_generic_parameter): Use
28443         `param->name' if it's not NULL. 
28444
28445 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
28446
28447         * class.c: do not insert non-virtual methods in the vtable.
28448         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
28449         that means the method is non-virtual. This never would have
28450         happened before.
28451
28452 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
28453
28454         * profiler.c: Added lock for accessing coverage_hash.
28455
28456 2004-03-22  Martin Baulig  <martin@ximian.com>
28457
28458         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
28459         `method->method->signature->generic_param_count != 0' to make it
28460         work for interface methods.
28461
28462 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28463
28464         * process.c: quote the string passed to the shell using g_shell_quote.
28465
28466 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28467
28468         * threads.c:
28469         (mono_threads_manage): don't remove the finalizer thread and self
28470         from the threads hash table so that mono_thread_manage can be called
28471         more than once.
28472
28473 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28474
28475         * process.c: quote the arguments when UseShellExecute is true. Fixes
28476         bug #55790.
28477
28478 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28479
28480         * threads.c: set mono_thread_detach as a cleanup routine for every
28481         thread. This way it's always executed upon thread termination, either
28482         aborted or finished normally. No more xsp hangs!
28483
28484 2004-03-17  Martin Baulig  <martin@ximian.com>
28485
28486         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
28487         `int count_nested' and a `MonoType **nested'.
28488
28489         * reflection.c (mono_reflection_bind_generic_parameters): Moved
28490         most of the functionality into a new static
28491         do_mono_reflection_bind_generic_parameters() and don't take a
28492         `MonoType *nested_in' argument any more.  Don't compute nested
28493         types here.
28494         (mono_reflection_generic_inst_get_nested_types): New public method
28495         to get nested types.
28496
28497         * class.c (mono_class_create_generic): Set `klass->nested_in' if
28498         we're a nested class.
28499
28500         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
28501         mono_reflection_generic_inst_get_nested_types() to compute the
28502         nested types.
28503
28504 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28505
28506         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
28507         descriptive error message under windows.
28508         
28509 2004-03-17  Martin Baulig  <martin@ximian.com>
28510
28511         * class.c (dup_type): Added `const MonoType *original' argument;
28512         copy the attrs from the original type.
28513
28514 2004-03-17  Martin Baulig  <martin@ximian.com>
28515
28516         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
28517         `m->generic_inst_cache' here.
28518
28519 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
28520
28521         * exception.h exception.c: Add stack_overflow_exception.
28522
28523 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28524
28525         * threadpool.c:
28526         (overlapped_callback): call SetEvent *after* invoking the callback.
28527         No need to call CloseHandle.
28528
28529 2004-03-16  Martin Baulig  <martin@ximian.com>
28530
28531         * reflection.c (mono_image_get_fieldref_token): Take a
28532         `MonoReflectionField *' instead of a `MonoClassField *' and a
28533         `MonoClass *'; store the `MonoReflectionField *' in the hash.
28534
28535 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28536
28537         * appdomain.c: don't add the culture to the filename we're looking for
28538         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
28539
28540 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28541
28542         * locales.c: don't ignore symbols when doing case insensitive compares.
28543         Thanks Dick! Fixes bug #54046.
28544
28545         * threads.c: surround 'threads' usage with enter/leave in
28546         mono_thread_manage.
28547
28548 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
28549
28550         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
28551         implicitly marshalled as [Out]. Fixes #55450.
28552
28553         (mono_marshal_get_runtime_invoke): Zero out the result if there is
28554         an exception.
28555
28556 2004-03-16  Martin Baulig  <martin@ximian.com>
28557
28558         * class.c (mono_class_from_generic_parameter): Use the actual
28559         parameter name. 
28560
28561 2004-03-16  Martin Baulig  <martin@ximian.com>
28562
28563         * reflection.c (type_get_signature_size): New static function.
28564         Compues the size of the type in a method signature.
28565         (method_get_signature_size): New static function; calls
28566         type_get_signature_size() to compute the actual size of the
28567         method's signature.
28568         (method_encode_signature): Use method_get_signature_size() to get
28569         the signature's size rather than using `nparams * 10'.
28570
28571 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28572
28573         * file-io.h: define here WapiOverlapped on windows. I don't want the
28574         regular OVERLAPPED one.
28575
28576         * file-io.c:
28577         * threadpool.c: somehow, BindIoCompletionCallback is not found.
28578         Disabling AIO on windows.
28579
28580 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28581
28582         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
28583         bug #55385.
28584
28585 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28586
28587         * appdomain.c: upgraded corlib version.
28588
28589         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
28590         and BeginWrite. Allow opening files for asynchrnous operations.
28591
28592         * file-io.h: new struct that maps FileStreamAsyncResult.
28593         * icall.c: added new icalls.
28594         * process.[ch]: support setting child process environment variables
28595         and use the SHELL or COMSPEC when UseShellExecute is true.
28596
28597         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
28598         callback for async. IO is here and also BindHandle.
28599
28600         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
28601         from here.
28602
28603 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
28604
28605         * reflection.c (create_custom_attr): Allow len == 0.
28606
28607         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
28608         computation on big-endian machines.
28609
28610 2004-03-13  Martin Baulig  <martin@ximian.com>
28611
28612         * class.h (MonoGenericInst): Added `int count_ifaces'.
28613
28614         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
28615         `ginst->count_ifaces' instead `klass->interface_count' since we
28616         may get called before the vtable is created.
28617
28618         * loader.c (mono_method_get_param_names): If we're a generic
28619         instance, return and don't initialize the class.
28620
28621         * reflection.c (mono_reflection_setup_generic_class): Don't call
28622         ensure_runtime_vtable().
28623         (mono_reflection_bind_generic_parameters): Set
28624         `ginst->count_ifaces'.
28625
28626 2004-03-11  Jackson Harper <jackson@ximian.com>
28627
28628         * icall.c:
28629         * unicode.c:
28630         * unicode.h: Remove unused System.Char icalls.
28631         
28632 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
28633
28634         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
28635         code when we P/Invoke the first library in Windows.Forms, instead
28636         of when we first open the assembly.
28637
28638         * assembly.c: Drop the lookup from here.
28639
28640 2004-03-10  Martin Baulig  <martin@ximian.com>
28641
28642         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
28643         class for properties, fields and events.  Finally fixes #54945.
28644
28645 2004-03-10  Martin Baulig  <martin@ximian.com>
28646
28647         * metadata.c (mono_metadata_class_equal): New static function;
28648         checks whether two generic instances or two generic parameters are
28649         equal.
28650         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
28651         compare classes.        
28652
28653 2004-03-10  Martin Baulig  <martin@ximian.com>
28654
28655         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
28656
28657         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
28658         argument and write it into the `reflection_info' field.
28659
28660         * icall.c
28661         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
28662         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
28663
28664 2004-03-09  Jackson Harper  <jackson@ximian.com>
28665
28666         * char-conversions.h: use 8 bits for numeric data its all we need
28667         * icall.c: numeric data is only 8 bits now.
28668
28669 2004-03-09  Martin Baulig  <martin@ximian.com>
28670
28671         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
28672
28673         * class.c (init_properties, init_events): Initialize the new
28674         `parent' field.
28675
28676         * reflection.c (typebuilder_setup_properties): Likewise.
28677         (typebuilder_setup_events): Likewise.
28678
28679         * reflection.h (MonoEventInfo): Replaced `parent with
28680         `declaring_type' and `reflected_type'.
28681
28682         * icall.c (ves_icall_get_property_info): Distinguish between
28683         declaring and reflected type.
28684         (ves_icall_get_event_info): Likewise.
28685
28686 2004-03-09  Martin Baulig  <martin@ximian.com>
28687
28688         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
28689         (ves_icall_Type_GetField): Correctly set field->klass.
28690
28691 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
28692
28693         * loader.h: Fix warning.
28694
28695 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
28696
28697         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
28698         library routine if present.  Notice that it will still continue
28699         executing even if its missing, for those working on the Gtk#
28700         edition of Windows.Forms.
28701
28702         * assembly.c (do_mono_assembly_open): If loading the
28703         System.Windows.Forms call mono_loader_wini_init.
28704
28705 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
28706
28707         * class.h: Added MonoRemoteClass struct.
28708         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
28709         function for MonoStrings.
28710         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
28711         Added internal call for getting the proxy type.
28712         * marshal.c: Get the type of transparent proxies from its remote_class.
28713         Added methods that generate the IL for type checks and casts:
28714         mono_marshal_get_isinst, mono_marshal_get_castclass, 
28715         mono_marshal_get_proxy_cancast.
28716         * marshal.h: Declaration of the previous new methods.
28717         * object.c: Added new moethods for creating and updating MonoRemoteClass
28718         instances: mono_remote_class, mono_upgrade_remote_class, 
28719         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
28720         * verify.c: FIx transparent_proxy_fields layout.
28721         * appdomain.c: Bump corlib version.
28722
28723 2004-03-04  Jackson Harper  <jackson@ximian.com>
28724
28725         * icall.c: Add icall to access char conversion tables.
28726         * char-conversions.h: Character conversion tables.
28727         * Makefile.am: Add char-conversions.h private header file.
28728         
28729 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
28730
28731         * appdomain.c (unload_thread_main): Increase unloading timeout to
28732         10 sec as a temporary workaround for Nant problems.
28733
28734 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
28735
28736         * gc.c: Add checks for GC_enable and GC_disable.
28737
28738         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
28739         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
28740         (bug #54988).
28741         
28742 2004-02-27  Martin Baulig  <martin@ximian.com>
28743
28744         * reflection.c (mono_reflection_bind_generic_parameters): Take a
28745         `MonoReflectionType *' instead of a `MonoType *'.
28746
28747 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
28748
28749         * gc.c (run_finalize): Avoid finalizing the object representing the
28750         finalizer thread.
28751         (finalizer_thread): Fix warning.
28752
28753 2004-02-25  Martin Baulig  <martin@ximian.com>
28754
28755         * class.c (_mono_class_get_instantiation_name): Added `int offset'
28756         argument for nested types.
28757         (mono_class_create_generic): Added support for nested generictypes.
28758
28759         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
28760         `GList *nested'.
28761
28762         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
28763
28764         * reflection.c (method_encode_signature): Increase the minimum
28765         value of `size' from 10 to 11.
28766         (mono_reflection_bind_generic_parameters): Take `int type_argc'
28767         and `MonoType **types' arguments instead of the `MonoArray
28768         *types'; added `MonoType *nested_in'.  Recursively instantiate
28769         nested classes. 
28770
28771 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
28772
28773         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
28774         stack_overflow_ex members which are used by exception handling.
28775
28776         * appdomain.c (mono_runtime_init): Initialize the new members.
28777
28778         * gc.c (mono_gc_enable): New helper function.
28779         * gc.c (mono_gc_disable): New helper function.
28780
28781 2004-02-23  Martin Baulig  <martin@ximian.com>
28782
28783         * icall.c: I must have been really stupid - make it actually work
28784         this time ;-)
28785
28786 2004-02-23  Martin Baulig  <martin@ximian.com>
28787
28788         * loader.c (method_from_memberref): Only inflate the method if
28789         it's in another klass.
28790
28791 2004-02-23  Martin Baulig  <martin@ximian.com>
28792
28793         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
28794         (mono_class_init): If we're a generic instance and an interface,
28795         compute `class->interface_id'; also create `class->interfaces'
28796         here and inflate them.
28797
28798         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
28799         `ginst->is_open'.
28800         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
28801
28802         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
28803
28804 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
28805
28806         * reflection.c (method_encode_code): Improved the error message
28807         generated by the exception.
28808
28809 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28810
28811         * icall.c: Martin did not do what he said in the ChangeLog for
28812         2004-02-18, but put back the changes for properties and events.
28813         Commenting those changes out again and adding comment to bug #54518.
28814         
28815         * process.c: removed warning.
28816
28817 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
28818
28819         * marshal.c (emit_struct_conv): Print an error message instead of
28820         asserting when a type does not have the StructLayout attribute.
28821
28822 2004-02-20  Martin Baulig  <martin@ximian.com>
28823
28824         * reflection.c (mono_type_get_object): Also use the cache for
28825         generic instances.
28826         (mono_reflection_bind_generic_parameters): Always compute
28827         `ginst->ifaces'.        
28828
28829 2004-02-20  Martin Baulig  <martin@ximian.com>
28830
28831         * class.h (MonoGenericMethod): Removed `klass'.
28832
28833         * class.c (mono_class_inflate_generic_method): Added `MonoClass
28834         *klass' argument.
28835
28836 2004-02-20  Martin Baulig  <martin@ximian.com>
28837
28838         * reflection.c (method_encode_methodspec): Actually use the
28839         uninflated signature for the memberref.
28840
28841 2004-02-20  Martin Baulig  <martin@ximian.com>
28842
28843         * class.h (MonoGenericMethod): Removed `declaring'.
28844
28845         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
28846         is NULL, compute it here.
28847
28848 2004-02-20  Martin Baulig  <martin@ximian.com>
28849
28850         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
28851
28852         * metadata.c (mono_metadata_generic_inst_hash): New method.
28853         (mono_metadata_generic_inst_equal): New method.
28854
28855         * reflection.c (mono_reflection_bind_generic_parameters): Use the
28856         `klass->image->generic_inst_cache' cache to avoid creating
28857         duplicate MonoGenericInst's.
28858
28859         * class.c (mono_class_inflate_generic_type): Use the cache.
28860
28861 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
28862
28863         * object.c: fixed gc descriptor calculation for embedded valuetypes.
28864
28865 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28866
28867         * icall.c: added Socket.WSAIoctl icall.
28868
28869         * socket-io.[ch]: implemented
28870         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
28871
28872 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
28873
28874         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
28875
28876 2004-02-18  Urs C Muff  <umuff@quark.com>
28877
28878         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
28879         this work on PPC and other big-endian architectures.
28880
28881         * debug-mono-symfile.h: Prepended the names of all the `guint32'
28882         fields with an underscore to make sure they're only accessed by
28883         the read32() macro.
28884
28885 2004-02-18  Martin Baulig  <martin@ximian.com>
28886
28887         * icall.c: Put the klass->refclass changes back for methods and
28888         fields, but not for properties and events.  We're currently not
28889         distinguishing between DeclaringType and ReflectedType for
28890         properties and events, that's what caused the regressions.
28891
28892 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28893
28894         * object.c:
28895         (mono_async_result_new): the handle can be NULL.
28896
28897         * threadpool.c: Use an event instead of a semaphore, don't initialize
28898         it until needed. This saves quite a few semaphores from being created
28899         when using the threadpool.
28900
28901 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
28902
28903         * object.c (mono_string_is_interned_lookup): Fix interning of long
28904         strings. Fixes #54473.
28905
28906         * domain.c (ldstr_equal): Optimize if the two strings are equal.
28907
28908         * icall.c: Revert the klass->refclass changes since they introduce
28909         regressions (bug #54518).
28910
28911 2004-02-18  Martin Baulig  <martin@ximian.com>
28912
28913         * class.c (mono_class_init): If we're a generic instance and don't
28914         come from a TypeBuilder, inflate our members here.
28915         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
28916         (mono_class_create_generic): New public method.
28917         (mono_class_initialize_generic): Removed.
28918         (get_instantiation_name): Renamed to
28919         _mono_class_get_instantiation_name() and made it public.
28920
28921 2004-02-18  Martin Baulig  <martin@ximian.com>
28922
28923         * class.c (mono_class_inflate_generic_type): Clear the new
28924         instance's `nginst->klass' when inflating a generic instance.
28925         (mono_class_is_subclass_of): Added (basic) support for generic
28926         instances.
28927
28928 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
28929
28930         * appdomain.h, domain.c: use a MonoCodeManager instead of a
28931         MonoMempool to hold compiled native code.
28932
28933 2004-02-17  Martin Baulig  <martin@ximian.com>
28934
28935         * class.h (MonoDynamicGenericInst): Added `count_properties' and
28936         `properties'.
28937
28938         * reflection.c (mono_reflection_generic_inst_initialize): Added
28939         `MonoArray *properties' argument.
28940
28941         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
28942
28943 2004-02-17  Martin Baulig  <martin@ximian.com>
28944
28945         * icall.c (ves_icall_Type_GetFields): Renamed to
28946         ves_icall_Type_GetFields_internal() and added a
28947         `MonoReflectionType *rtype' argument; pass it to
28948         mono_field_get_object() to set the field's "reflected" type.
28949         (ves_icall_Type_GetConstructors): Likewise.
28950         (ves_icall_Type_GetEvents): Likewise.
28951         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
28952         argument; pass it to mono_method_get_object() to set the method's
28953         "reflected" type.       
28954
28955 2004-02-17  Martin Baulig  <martin@ximian.com>
28956
28957         * class.h (MonoDynamicGenericInst): New type.
28958         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
28959
28960         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
28961         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
28962         (ves_icall_MonoGenericInst_GetFields): New interncall.
28963
28964         * class.c (mono_class_from_generic): Don't call
28965         mono_class_initialize_generic() if this is a dynamic instance;
28966         ie. it's being created from a TypeBuilder.
28967         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
28968         `class->byval_arg.type'.
28969
28970         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
28971         to `inflate_method' and made static.
28972         (mono_reflection_inflate_field): Removed.
28973         (mono_reflection_generic_inst_initialize): New public method.
28974
28975         * reflection.h (MonoReflectionGenericInst): Removed `methods',
28976         `ctors' and `fields'; added `initialized'.
28977
28978 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
28979
28980         * debug-helpers.c (mono_method_full_name): Fix output for empty
28981         namespaces.
28982
28983 2004-02-12  Martin Baulig  <martin@ximian.com>
28984
28985         * class.h (MonoClassField): Added `MonoType *generic_type'.
28986
28987         * reflection.c (mono_image_get_fieldref_token): Added support for
28988         instantiated generic types.
28989         (field_encode_inflated_field): Removed.
28990         (mono_image_get_inflated_field_token): Removed.
28991         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
28992
28993         * reflection.h (MonoReflectionInflatedField): Removed.
28994
28995 2004-02-12  Martin Baulig  <martin@ximian.com>
28996
28997         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
28998         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
28999
29000         * reflection.c (mono_image_get_methodspec_token): Take a
29001         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29002         (mono_image_create_token): Check whether we have a
29003         `method->signature->gen_method' and call
29004         mono_image_get_methodspec_token() if appropriate.
29005         (inflated_method_get_object): Removed.
29006         (mono_reflection_bind_generic_method_parameters): Return a
29007         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29008         (mono_reflection_inflate_method_or_ctor): Likewise.
29009
29010         * reflection.h (MonoReflectionInflatedMethod): Removed.
29011
29012 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29013
29014         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29015         for custom valuetype marshalling.
29016
29017         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29018
29019 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29020
29021         * icall.c: fixed WSAGetLastError_internal name.
29022
29023 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29024
29025         * threads.c (mono_thread_attach): Allow this to be called multiple
29026         times for a thread.
29027         
29028         * threads.c (build_wait_tids): Do not wait for ourselves.
29029
29030         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29031         appdomain list is empty.
29032
29033         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29034         memory returned by mono_string_builder_to_utf16, since it points into
29035         managed memory. Thanks to Bernie Solomon for noticing this.
29036
29037         * icall.c: Add AppDomainSetup icalls.
29038
29039         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29040
29041         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29042         types.
29043
29044         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29045         custom attributes to the method_aux struct. Also fix array indexes etc.
29046
29047         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29048         
29049 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29050
29051         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29052         (both static and runtime) and reduce startup time.
29053
29054 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29055
29056         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29057         AsAny marshalling conversion instead of crashing.
29058
29059         * marshal.c: Fix warnings.
29060
29061 2004-02-09  Martin Baulig  <martin@ximian.com>
29062
29063         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29064
29065         * reflection.h (MonoReflectionInflatedMethod): Removed the
29066         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29067
29068         * reflection.c (method_encode_methodspec): Removed the `method'
29069         argument; we get it from `gmethod->declaring'.
29070         (inflated_method_get_object): Removed the `declaring' argument.
29071
29072 2004-02-09  Martin Baulig  <martin@ximian.com>
29073
29074         * class.h (MonoGenericMethod): New type.
29075         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29076         `generic_method'.
29077
29078         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29079         a `MonoGenericMethod *gen_method' one.
29080
29081         * class.c (mono_class_inflate_generic_type): Take an additional
29082         `MonoGenericMethod * argument.  This is only non-NULL if we're
29083         inflating types for a generic method.   
29084         (mono_class_inflate_generic_signature): Renamed to
29085         inflate_generic_signature() and made static; take a
29086         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29087         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29088         instead of a `MonoGenericInst *' one.
29089         (mono_class_inflate_generic_method): Likewise.
29090
29091         * reflection.c (encode_generic_method_sig): Take a
29092         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29093         (method_encode_methodspec): Likewise.
29094         (inflated_method_get_object): Likewise. 
29095
29096         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29097         field with a `MonoGenericMethod *gmethod' one.  
29098
29099 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29100
29101         * class.h (mono_class_has_parent): add parens to expansion
29102         so you can ! this.
29103
29104 2004-02-08  Martin Baulig  <martin@ximian.com>
29105
29106         * image.h (MonoImage): Removed `generics_cache'.
29107
29108         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29109         instead of a `MonoType *' argument; removed the `inflate_methods'
29110         argument.  Don't inflate methods here.
29111
29112         * loader.c (find_method): If it's a generic instance, call
29113         mono_class_init() on the `sclass->generic_inst->generic_type'.
29114
29115         * metadata.c (mono_type_size): Make this work on uninitialized
29116         generic instances; call it on the `ginst->generic_type's class.
29117
29118         * reflection.c (mono_reflection_bind_generic_parameters): Call
29119         mono_class_from_generic() to create the `ginst->klass'.
29120
29121 2004-02-08  Martin Baulig  <martin@ximian.com>
29122
29123         * class.h (MonoClass): Changed type of `generic_inst' from
29124         `MonoType *' to `MonoGenericInst *'.
29125
29126 2004-02-08  Martin Baulig  <martin@ximian.com>
29127
29128         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29129         mono_type_get_object(), this is now creating a `MonoGenericInst'
29130         for MONO_TYPE_GENERICINST.
29131         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29132         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29133
29134         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29135         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29136         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29137         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29138         and reflected type.
29139
29140         * reflection.h (MonoReflectionInflatedMethod): Removed
29141         `declaring_type' and `reflected_type'.
29142
29143 2004-02-08  Martin Baulig  <martin@ximian.com>
29144
29145         * class.h (MonoGenericInst): Added `MonoType *parent' and
29146         `MonoType **ifaces'.
29147
29148         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29149         `parent' and `interfaces'.
29150
29151         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29152         `MonoType *' argument and return a `MonoType *'.
29153
29154         * icall.c
29155         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29156         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29157
29158 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29159
29160         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29161         valuetype marshalling.
29162
29163 2004-02-06  Martin Baulig  <martin@ximian.com>
29164
29165         * class.c
29166         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29167         (my_mono_class_from_generic_parameter): Likewise.
29168
29169 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29170
29171         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29172         contents of the symbol files lazily.
29173
29174         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29175
29176         * threads.h threads.c icall.c: New icalls for getting and setting the
29177         threads name.
29178
29179 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29180
29181         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29182         Raise an exception when the domain is not found.
29183
29184 2004-02-03  Martin Baulig  <martin@ximian.com>
29185
29186         * reflection.c (mono_image_get_methodspec_token): Use the
29187         uninflated signature; fixes gen-33.
29188
29189 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29190
29191         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29192         the finalizer code can use thread functionality.
29193
29194         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29195         the finalizer thread.
29196
29197         * threads.c: Make some functions more robust.
29198
29199         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29200
29201         * metadata.h: Add new marshalling conventions.
29202
29203         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29204         stringbuilder marshalling. Fixes #53700.
29205
29206         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29207
29208         * reflection.c (mono_image_get_type_info): Save declarative security
29209         info.
29210
29211         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29212         unmanaged fields as well.
29213
29214         * appdomain.c: Bump corlib version.
29215
29216 2004-02-01  Martin Baulig  <martin@ximian.com>
29217
29218         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29219         method type arguments.  
29220
29221 2004-01-30  Duncan Mak  <duncan@ximian.com>
29222
29223         * marshal.h: Add prototype for
29224         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29225         and
29226         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29227         fix the build.
29228
29229 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29230
29231         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29232         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29233
29234 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29235
29236         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29237         custom marshalling of valuetypes.
29238
29239         * marshal.c: Fix some warnings.
29240
29241 2004-01-29  Martin Baulig  <martin@ximian.com>
29242
29243         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29244         for generic method parameters.
29245
29246         * reflection.c (method_encode_methodspec): Write the uninflated
29247         signature into the methodspec table.
29248         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29249         is always the uninflated method.
29250         (reflection_methodbuilder_to_mono_method): Copy the generic
29251         parameters from the MethodBuilder into `header->gen_params'.
29252
29253 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29254
29255         * class.c (mono_class_from_generic_parameter): Fix warning.
29256
29257 2004-01-27  Martin Baulig  <martin@ximian.com>
29258
29259         * class.c (mono_class_from_generic_parameter): Don't create
29260         `klass->methods' here.  
29261
29262 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29263
29264         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29265         extension since it does not work with libraries named lib<FOO>.dll.so.
29266
29267 2004-01-25  Martin Baulig  <martin@ximian.com>
29268
29269         * class.c (mono_class_inflate_generic_type): Added support for
29270         MONO_TYPE_GENERICINST.
29271
29272         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29273         inflate methods on open constructed types.      
29274
29275 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29276
29277         * object.c: fire ProcessExit event in the root AppDomain after running
29278         Main. Fixes bug #53299.
29279
29280 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29281
29282         * socket-io.c: include the new socket-wrappers.h header.
29283         Use the wrappers instead of the unix socket functions to make the code
29284         more clear.
29285
29286 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29287
29288         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29289
29290         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29291         Fixes #22532.
29292
29293 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29294
29295         * reflection.c (mono_image_create_pefile): Handle the case when the
29296         entry point is not a MethodBuilder.
29297
29298         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29299         field to ReflectionMethod since it is not allways a builder.
29300
29301         * reflection.c (type_get_fully_qualified_name): New helper function to
29302         return the fully qualified name of a type.
29303
29304         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29305         type name for custom marshallers.
29306
29307         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29308
29309         * class.c (mono_class_setup_vtable): If a parent class already 
29310         implements an interface, use the implementing methods from that class.
29311         Fixes #53148.
29312
29313 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29314
29315         * threadpool.c: just return instead of ExitThread to allow for thread
29316         clean up earlier.
29317
29318 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29319
29320         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29321         when closing resource modules.
29322
29323         * reflection.c (mono_image_create_pefile): Handle the case when the
29324         entry point is not a MethodBuilder.
29325
29326         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29327         field to ReflectionMethod since it is not allways a builder.
29328
29329 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29330
29331         * marshal.c (mono_marshal_get_managed_wrapper): 
29332         mono_marshal_alloc takes native int so CONV_I
29333         the arg for 64bits.
29334
29335 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29336
29337         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29338         tokens in the cattr table. Fixes #53108.
29339
29340 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29341
29342         * loader.c: don't trim ".dll" before looking up in the config file.
29343         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29344
29345 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29346
29347         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29348         Return the module which contains the resource as well.
29349         (ves_icall_System_Reflection_Module_Close): New icall.
29350
29351         * appdomain.c: Bump corlib version number.
29352
29353         * image.c (mono_image_addref): New public function.
29354
29355         * assembly.c: Call mono_image_addref.
29356
29357         * reflection.c (mono_module_get_object): Increase reference count of 
29358         the image.
29359
29360         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29361         Fixes #22532.
29362
29363         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
29364         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
29365         proper exceptions on DllImport problems.
29366
29367 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
29368
29369         * class.c, metadata.c: eliminate CSIZE macro.
29370
29371 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
29372
29373         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
29374         * object.h: Added async_callback field in MonoAsyncResult.
29375         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
29376         * verify.c: Added async_callback in MonoAsyncResult layout.
29377
29378 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
29379
29380         * reflection.c (mono_reflection_get_custom_attrs): Add support
29381         for Modules.
29382
29383 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29384
29385         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
29386         marshalling.
29387         (mono_marshal_method_from_wrapper): Add null pointer check.
29388
29389 2004-01-16  Martin Baulig  <martin@ximian.com>
29390
29391         * debug-mono-symfile.h: Set version number to 36 and reflect
29392         latest symbol writer changes.
29393
29394 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
29395
29396         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
29397         multi-dimensional arrays.
29398         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
29399         (mono_class_from_mono_type): Use bounded_array_class_get.
29400         
29401         * class.c (mono_bounded_array_class_get): New function which takes
29402         a 'bounded' bool argument to distinguish vectors from one dimensional
29403         arrays.
29404
29405         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
29406         bounded_array_class_get if the array has bounds.
29407
29408         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29409         Search modules loaded using AssemblyBuilder:AddModule as well.
29410
29411 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29412
29413         * appdomain.c: increased corlib version.
29414         * filewatcher.c: removed g_print.
29415         * icall.c:
29416         (get_property_info): only allocate what is actually requested.
29417         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
29418
29419 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29420
29421         * Makefile.am: added filewatcher.[ch]
29422         * filewatcher.[ch]: FileSystemWatcher runtime support.
29423         * icall.c: added new FSW icalls.
29424
29425 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
29426
29427         * string-icalls.c: fix stringbuilder regression as suggested by
29428         Iain McCoy <iain@mccoy.id.au>.
29429
29430 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
29431
29432         * process.c (process_read_stringtable_block): Recognize '007f' as
29433         a language neutral stringtable block.
29434
29435 2004-01-12  Patrik Torstensson
29436
29437         * object.h (MonoStringBuilder) : Changed layout to support our
29438         new stringbuilder class.
29439         * marshal.c: Change marshalling to support the new layout of 
29440         string builder.
29441         * appdomain.c: increased version number because new layout of
29442         string builder.
29443
29444 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
29445
29446         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
29447         assembly name as an string instead of an AssemblyName, since it is
29448         easier to extract info from it.
29449
29450         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
29451         the culture subdirectories too. Fixes #52231.
29452
29453 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29454
29455         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
29456         It takes 2 new parameters with an optional name for the method to look
29457         for and case ignoring info.
29458
29459         * threadpool.c: removed unused variable.
29460
29461 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29462
29463         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
29464         It takes 2 new parameters with an optional name for the property to look
29465         for and case ignoring info.
29466         Fixes bug #52753.
29467
29468 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
29469
29470         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
29471         Fix #52451.
29472
29473 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29474
29475         * appdomain.c:
29476         * assembly.c: escape the uri before passing it to g_filename_from_uri.
29477         Fixes bug #52630.
29478
29479 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
29480
29481         * reflection.c: Add support for more than one unmanaged resource.
29482
29483         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
29484         in field->def_value, as done in all other cases.
29485
29486         * reflection.c (mono_reflection_get_custom_attrs): Add support for
29487         TypeBuilders.
29488
29489         * reflection.c (mono_reflection_create_runtime_class): Remove 
29490         errorneous assignment to klass->element_class, since it is already
29491         done in mono_reflection_setup_internal_class.
29492
29493 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29494
29495         * gc.c: added missing LeaveCriticalSection.
29496         * icall.c: indented a couple of lines.
29497         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
29498         if we call EndInvoke inside a callback. Fixes bug #52601.
29499
29500 2004-01-07  Martin Baulig  <martin@ximian.com>
29501
29502         * mono-debug-debugger.h
29503         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
29504
29505 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
29506
29507         * appdomain.c: Use messages in NotImplementedException.
29508
29509         * exception.c (mono_get_exception_not_implemented): Now this takes
29510         a message argument.
29511
29512         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
29513         exception instead of g_asserting an aborting when something is not
29514         implemented.
29515
29516         Add some inline docs.
29517
29518 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
29519
29520         * reflection.h: Update after changes to object layout.
29521
29522         * reflection.c: Implement saving of unmanaged aka win32 resources.
29523
29524         * appdomain.c: Bump version number.
29525
29526         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
29527         Handle missing domains gracefully.
29528
29529 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
29530
29531         * file-io.c : On Windows, there are much more invalid_path_chars.
29532
29533 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
29534
29535         * class.h, object.c: prepare for GetType () speedup.
29536
29537 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
29538
29539         * profiler.c: workaround for --profile null reference exception on
29540           cygwin. Patch by Patrik Torstensson.
29541
29542 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
29543
29544         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
29545         make work for unaligned access.
29546
29547 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
29548
29549         * class.c: small cleanup (class->fields [i] -> field).
29550         * image.c: check address of metadata is valid.
29551
29552 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
29553
29554         * assembly.h assembly.c (mono_assembly_loaded): New public function to
29555         search the list of loaded assemblies.
29556
29557         * reflection.c (mono_reflection_type_from_name): Use 
29558         mono_assembly_loaded instead of mono_image_loaded.
29559
29560         * reflection.c: Fix warnings.
29561
29562 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
29563
29564         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
29565         is dynamic. This is needed since an assembly can contain both dynamic and
29566         non-dynamic images.
29567
29568         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
29569         assembly->dynamic.
29570
29571         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
29572
29573         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
29574         to store modules loaded using AddModule.
29575
29576         * reflection.c (mono_image_fill_file_table): Generalize this so it works
29577         on Modules.
29578
29579         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
29580
29581         * reflection.c (mono_image_fill_export_table_from_module): New function to
29582         fill out the EXPORTEDTYPES table from a module.
29583
29584         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
29585         into a separate function. Also handle loaded non-dynamic modules.
29586
29587         * reflection.c (mono_image_basic_init): Fix memory allocation.
29588
29589         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29590
29591         * assembly.c (mono_assembly_load_references): Make this public.
29592
29593 2003-12-19  Martin Baulig  <martin@ximian.com>
29594
29595         * class.c (mono_class_initialize_generic): Made this static, take
29596         a `MonoGenericInst *' instead of a `MonoClass *'.
29597         (mono_class_from_generic): Call mono_class_initialize_generic()
29598         unless we're already initialized or being called from
29599         do_mono_metadata_parse_generic_inst().
29600
29601         * class.h (MonoGenericInst): Added `initialized' and
29602         `init_pending' flags.
29603
29604         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
29605         `mono_class_init (gklass)' or mono_class_initialize_generic()
29606         here; set `generic_inst->init_pending' while parsing the
29607         `type_argv'.
29608
29609 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
29610
29611         * locales.c: include string.h for memxxx prototypes
29612
29613 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
29614
29615         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
29616         constructor when accessing literal fields.
29617
29618 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
29619
29620         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
29621
29622         * reflection.c (assembly_add_resource_manifest): New function to fill
29623         the MANIFESTRESOURCE table.
29624
29625         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
29626
29627         * reflection.h: Update to changes in class layout.
29628
29629         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
29630         Reenable call to mono_runtime_is_shutting_down ().
29631
29632         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
29633         determine if the runtime is shutting down.
29634
29635 2003-12-16  Jackson Harper <jackson@ximian.com>
29636
29637         * icall.c: comment out call to mono_runtime_is_shutting_down to
29638         fix build.
29639         
29640 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
29641
29642         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
29643         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
29644
29645 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
29646
29647         * reflection.c: move definition of swap_with_size
29648         to before its first call
29649
29650 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
29651
29652         * appdomain.c (mono_runtime_is_shutting_down): New public function.
29653
29654         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
29655         icall.
29656
29657         * object.c: Fix warnings.
29658
29659         * icall.c (ves_icall_Type_Get...): Only consider inherited static
29660         members if FlattenHierarchy is set.
29661
29662         * reflection.c (mono_image_add_decl_security): New function to emit
29663         declarative security.
29664
29665         * reflection.h reflection.c: Add support for declarative security.
29666
29667         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
29668         
29669 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
29670
29671         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
29672         
29673         * appdomain.c verify.c: Moved corlib version checking into its own
29674         function in appdomain.c since it needs to create vtables etc.
29675
29676 2003-12-13  Patrik Torstensson <p@rxc.se>
29677
29678         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
29679         instead of unwrapped server.
29680
29681 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
29682
29683         * verify.c (check_corlib): Fix field index.
29684
29685 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
29686
29687         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
29688         GetGacPath icall.
29689
29690 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
29691
29692         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
29693         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
29694         cope with sizeof(size_t) != sizeof(guint32).
29695
29696 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29697
29698         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
29699         in case of failure.
29700
29701 2003-12-10  Mark Crichton <crichton@gimp.org>
29702
29703         * icall.c: removed the GetNonZeroBytes.  We now handle this case
29704         in managed code.
29705
29706         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
29707
29708 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
29709
29710         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
29711         marked as deleted.
29712
29713 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
29714
29715         * verify.c (check_corlib): Handle the case when the version field is 
29716         initialized by a static constructor.
29717
29718 2003-12-08  Patrik Torstensson  <p@rxc.se>
29719
29720     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
29721
29722 2003-12-08  Martin Baulig  <martin@ximian.com>
29723
29724         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
29725         a MonoReflectionGenericParameter, also take the parameter index
29726         and name as arguments.
29727         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
29728         (ves_icall_MonoGenericParam_initialize): New interncall.
29729         (ves_icall_Type_make_byref_type): New interncall.
29730
29731         * reflection.h (MonoReflectionGenericParam): Derive from
29732         MonoReflectionType, not just from MonoObject.  Added `refobj' and
29733         `index' fields.
29734
29735         * reflection.c (mono_reflection_define_generic_parameter): Create
29736         and return a new MonoReflectionGenericParam; don't initialize the
29737         constraints here.
29738         (mono_reflection_initialize_generic_parameter): New public method;
29739         initializes the constraints and creates the `param->pklass'.
29740
29741 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
29742
29743         * reflection.h reflection.c: Use the new fields 'num_types', 
29744         'num_fields' and 'num_methods' to track the number of types etc.
29745
29746         * verify.c (check_corlib): Check corlib version number.
29747
29748 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
29749
29750         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
29751         function works on all methods.
29752
29753 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
29754
29755         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
29756         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
29757         the custom_type_info flag of the transparent proxy.
29758         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
29759         objects that supports IRemotingTypeInfo.
29760         * object.h: Added custom_type_info field in transparent proxy.
29761
29762 2003-12-06  Martin Baulig  <martin@ximian.com>
29763
29764         * class.c (mono_class_create_from_generic): Removed.
29765         (mono_class_from_generic): Check `ginst->klass' before doing
29766         anything else.  This is important to fully support "recursive"
29767         generic types.
29768
29769         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
29770         empty `generic_inst->klass' before doing anything else.
29771
29772 2003-12-06  Dick Porter  <dick@ximian.com>
29773
29774         * verify.c: 
29775         * object.h:
29776         * icall.c:
29777         * locales.c: Use C structs to access class fields.  Don't do a
29778         conversion between MonoString and UChar because both are
29779         platform-endian UTF-16.  Compare now takes startindex and count
29780         parameters.  Add a char overload for IndexOf.  Speed up the
29781         invariant string IndexOf.
29782
29783 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
29784
29785         * Makefile.am (monosn_LDADD): Fix parallel build.
29786
29787 2003-12-04  Martin Baulig  <martin@ximian.com>
29788
29789         * icall.c
29790         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
29791         (ves_icall_Type_make_array_type): New interncall.       
29792
29793 2003-12-04  Martin Baulig  <martin@ximian.com>
29794
29795         * locales.c: also change it in the !HAVE_ICU case.
29796
29797 2003-12-04  Dick Porter  <dick@ximian.com>
29798
29799         * icall.c:
29800         * locales.c: construct_compareinfo is now in CompareInfo, not
29801         CultureInfo.
29802
29803 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
29804
29805         * image.c (mono_image_load_file_for_image): Cache loaded images in the
29806         image->files array.
29807
29808         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
29809         table as well.
29810
29811         * assembly.c (mono_assembly_load_references): Only load references
29812         once.
29813
29814         * class.c (mono_class_from_name): Avoid linear search of the 
29815         EXPORTEDTYPE table.
29816
29817         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
29818
29819 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
29820
29821         * image.h (MonoImage): Add 'field_cache' field.
29822
29823         * loader.c (mono_field_from_token): Cache field lookups.
29824         
29825         * reflection.c (mono_module_get_object): Fix name property.
29826
29827         * icall.c (ves_icall_get_enum_info): Update after changes to 
29828         mono_metadata_get_constant_index ().
29829
29830         * icall.c: Get rid of get_type_info icall, use a separate icall for
29831         each type property to avoid needless memory allocations. Fixes #51514.
29832
29833         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
29834         to avoid needless binary searches.
29835
29836         * class.c (class_compute_field_layout): Move the initialization of
29837         field->def_value to mono_class_vtable ().
29838
29839         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
29840         non-corlib types.
29841
29842         * object.c (mono_object_allocate): Make it inline.
29843
29844         * object.c (mono_object_allocate_spec): Make it inline.
29845         
29846 2003-12-02  Dick Porter  <dick@ximian.com>
29847
29848         * locales.c (create_NumberFormat): NumberFormatInfo construction.
29849         Patch by Mohammad DAMT (mdamt@cdl2000.com).
29850
29851 2003-12-01  Dick Porter  <dick@ximian.com>
29852
29853         * threads.c: Fix signature and call in CreateMutex and
29854         CreateEvent.
29855
29856 2003-12-01  Dick Porter  <dick@ximian.com>
29857
29858         * icall.c: 
29859         * locales.c: Implement string compares and searching
29860
29861         * object.h: Add extra Thread field
29862
29863 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
29864
29865         * reflection.c (fixup_method): Add support for MonoCMethod.
29866
29867 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
29868
29869         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
29870
29871         * reflection.c (assembly_name_to_aname): Allow extra characters in
29872         assembly names. Fixes #51468.
29873
29874 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
29875
29876         * exception.c (mono_exception_from_name_domain): New helper function.
29877
29878         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
29879         exception object in the correct domain.
29880
29881         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
29882         formatting + make a copy a the input data.
29883
29884         * loader.c (mono_get_method_from_token): Methods which contain
29885         native code do not have entries in the ImplMap.
29886
29887         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
29888         Thanks to Gonzalo for spotting this.
29889         
29890         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
29891         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
29892
29893         * assembly.h (mono_assembly_load_from): Split the second part of 
29894         assembly loading into a new public function.
29895
29896         * exception.h (mono_get_exception_bad_image_format): New function.
29897
29898 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
29899
29900         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
29901         Enumerate all modules inside a dynamic assembly. Fixes #51293.
29902         
29903         * icall.c: Add new icall for creating dynamic methods.
29904
29905         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
29906
29907         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
29908
29909         * reflection.c (mono_reflection_create_dynamic_method): New icall to
29910         create a dynamic method.
29911
29912         * reflection.c (resolve_object): New helper function.
29913
29914         * reflection.c: Generalize ReflectionMethodBuilder and the functions
29915         which manipulate it so they can also work on dynamic methods.
29916
29917         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
29918         creating the MonoReflectionMethodAux structure if it is not needed.
29919         
29920         * reflection.h verify.c: Update after changes to object layout.
29921
29922         * reflection.c (method_builder_encode_signature): Fix compilation on
29923         gcc 2.95.x.
29924
29925 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
29926
29927         * appdomain.h: Added support for context static fields. Added static_data
29928           field to MonoAppContext and renamed thread_static_fields to a more
29929           generic special_static_fields in MonoAppDomain, since it can now contain
29930           context static fields.
29931         * domain.c: Updated hashtable name.
29932         * object.c: Replaced field_is_thread_static() for a more generic
29933           field_is_special_static() which also checks for context static attribute.
29934           In mono_class_vtable(), added support for static context fields.
29935         * threads.c: Changed methods that manage thread static fields to more
29936           generic methods so they can be reused both for thread and context static
29937           data.
29938         * threads.h: Declared some new methods.
29939
29940 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
29941
29942         * reflection.h: Update after changes to the managed types.
29943
29944         * reflection.c (encode_custom_modifiers): New helper function.
29945
29946         * reflection.c (method_encode_signature): Emit custom modifiers.
29947
29948         * reflection.c (field_encode_signature): Emit custom modifiers.
29949
29950 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
29951
29952         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
29953
29954         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
29955         implementation.
29956
29957         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
29958         icall.
29959
29960         * object.c (mono_field_get_value_object): New function.
29961
29962         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
29963         specific.
29964
29965 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
29966
29967         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
29968         return a preallocated out-of-memory exception instance.
29969
29970         * object.c (out_of_memory): Use the new function.
29971
29972         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
29973         flag is before the custom modifiers. Fixes #49802.
29974
29975 2003-11-16  Martin Baulig  <martin@ximian.com>
29976
29977         * class.c (mono_class_is_open_constructed_type): Implemented the
29978         MONO_TYPE_GENERICINST case.
29979
29980 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
29981
29982         * assembly.c (mono_assembly_fill_assembly_name): New function to
29983         fill out the MonoAssemblyName structure.
29984         (mono_assembly_open): Use the new function.
29985
29986         * icall.c (fill_reflection_assembly_name): New helper function.
29987
29988         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
29989         new function.
29990
29991         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
29992
29993 2003-11-15  Martin Baulig  <martin@ximian.com>
29994
29995         * class.c (mono_class_is_open_constructed_type): New public
29996         function; checks whether a type is an open constructed type,
29997         ie. whether it still contains type parameters.
29998         (mono_class_inflate_generic_type): If we're a type parameter and
29999         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30000         type.
30001
30002         * class.h (MonoGenericInst): Added `guint32 is_open'.
30003
30004         * loader.c (method_from_methodspec): Check whether we're an open
30005         or closed constructed type and set `ginst->is_open'.
30006
30007         * reflection.c (mono_reflection_bind_generic_parameters): Check
30008         whether we're an open or closed constructed type and set
30009         `ginst->is_open'.
30010         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30011         from open constructed types.
30012
30013 2003-11-15  Martin Baulig  <martin@ximian.com>
30014
30015         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30016         a generic instance (instead of a generic type declaration) with
30017         unbound generic parameters, bind them to our actual types.
30018
30019 2003-11-14  Martin Baulig  <martin@ximian.com>
30020
30021         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30022
30023         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30024         an interface type, populate `res->interfaces' with instantiated
30025         versions of all the interfaces we inherit.
30026
30027 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30028
30029         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30030         when MONO_PATH is set but doesn't contain the install dir.
30031
30032 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30033
30034         * icall.c:
30035         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30036         it's also implemented in base classes. Fixes bug #50927.
30037
30038 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30039
30040         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30041         if this method is called from a finalizer. Fixes #50913.
30042
30043 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30044
30045         * threads.c: Implement VolatileRead/VolatileWrite
30046
30047         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30048
30049 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30050
30051         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30052         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30053         2.95.3.
30054
30055         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30056         from Peter Ross (pro@missioncriticalit.com).
30057         
30058 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30059
30060         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30061
30062 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30063
30064         * assembly.c (mono_assembly_load_references): Disable check because it
30065         triggers on older corlibs which lots of people have.
30066
30067 2003-11-12  Jackson Harper  <jackson@ximian.com>
30068
30069         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30070         load corlib.dll if mscorlib.dll is not found.
30071         * assembly.h: Remove corlib name define.
30072         * class.c:
30073         * domain.c:
30074         * image.c: Change corlib name to mscorlib.
30075         
30076 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30077
30078         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30079
30080 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30081
30082         * appdomain.h: Added loader_optimization here to sync with the C#
30083         code, and add disallow_binding_redirects field.
30084
30085 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30086
30087         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30088
30089         * reflection.c (mono_image_build_metadata): Fix crash on modules
30090         with no types.
30091
30092         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30093
30094         * icall.c (ves_icall_get_method_info): Return callingConvention as
30095         well.
30096
30097         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30098         namespaces from the EXPORTEDTYPE table as well.
30099
30100         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30101         from all modules inside the assembly.
30102         
30103 2003-11-11  Martin Baulig  <martin@ximian.com>
30104
30105         * reflection.c (mono_reflection_bind_generic_parameters): Make
30106         this work for interfaces.
30107
30108 2003-11-11  Martin Baulig  <martin@ximian.com>
30109
30110         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30111
30112 2003-11-11  Martin Baulig  <martin@ximian.com>
30113
30114         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30115         "MonoInflatedMethod" and "MonoInflatedCtor".
30116
30117 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30118
30119         * reflection.c (resolution_scope_from_image): Use the assembly table
30120         from the manifest module, since other modules don't have it.
30121
30122         * debug-helpers.c (mono_type_full_name): New helper function.
30123
30124         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30125
30126         * image.c (mono_image_load_file_for_image): New public function which
30127         is a replacement for the load_file_for_image in class.c.
30128
30129         * assembly.c (mono_assembly_load_module): A wrapper for the function
30130         above which does assembly association and reference loading too.
30131
30132         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30133
30134 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30135
30136         * appdomain.c: not all of the attributes for the full assembly name
30137         are required and the order doesn't matter. Fixes bug #50787.
30138
30139 2003-11-10  Dick Porter  <dick@ximian.com>
30140
30141         * locales.c: Use platform-endian UTF16
30142
30143 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30144
30145         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30146         
30147 2003-11-10  Martin Baulig  <martin@ximian.com>
30148
30149         * metadata.c
30150         (mono_metadata_load_generic_params): Make this actually work.
30151
30152         * reflection.c (mono_reflection_bind_generic_parameters): If our
30153         parent is a generic instance, pass all the `types' to it, no
30154         matter whether it has the same number of type parameters or not.
30155
30156 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30157
30158         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30159
30160         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30161         assignment code to this function so it gets called recursively for all
30162         modules.
30163
30164         * image.c (load_modules): Remove the assembly assignment since it is
30165         now done by mono_assembly_load_references.
30166         
30167         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30168         Add 'module' argument.
30169         (mono_module_get_types): New helper function.
30170         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30171
30172 2003-11-08  Martin Baulig  <martin@ximian.com>
30173
30174         * class.c (mono_class_inflate_generic_method): Interface method
30175         don't have a header.
30176
30177         * reflection.c (mono_image_get_methodspec_token): Take an
30178         additional `MonoGenericInst *' argument instead of reading it from
30179         the header; this is necessary to support interfaces.
30180         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30181         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30182         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30183         argument.
30184
30185         * reflection.h (MonoReflectionInflatedMethod): Added
30186         `MonoGenericInst *ginst'.
30187
30188 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30189
30190         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30191
30192 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30193
30194         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30195
30196 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30197
30198         * reflection.c 
30199         (reflection_methodbuilder_from_method_builder):
30200         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30201         initialize a ReflectionMethodBuilder structure.
30202         (mono_image_get_methodbuilder_token):
30203         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30204         tokens which point to types in another module inside the same assembly.
30205
30206         * reflection.c: Use the new helper functions.
30207         
30208         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30209
30210         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30211         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30212
30213         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30214         neccesary.
30215
30216         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30217         current module. Emit the manifest only for the main module.
30218
30219         * reflection.c (mono_image_create_token): Add assertion when a 
30220         memberref needs to be created.
30221
30222         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30223
30224         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30225         larger buffer for the custom attribute blob. Fixes #50637.
30226         
30227 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30228
30229         * threadpool.c: notify listener on async processing handles after
30230         invoking the async callback. Thanks to Zoltan.
30231
30232 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30233
30234         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30235         avoid code duplication.
30236
30237         * reflection.h (MonoDynamicImage): New type which is currently unused,
30238         but will be used through the ref.emit code in place of 
30239         MonoDynamicAssembly.
30240
30241         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30242         object layout.
30243
30244         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30245         a MonoDynamicImage instead of just a MonoImage.
30246         
30247         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30248         icalls to ModuleBuilder but keep their semantics, so they will work
30249         with moduleb->assemblyb. This will change later.
30250         
30251 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30252
30253         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30254         object layout.
30255
30256         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30257         main module, since it is now done by the managed code.
30258
30259 2003-11-03  Martin Baulig  <martin@ximian.com>
30260
30261         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30262         `ginst->klass' here.
30263         (method_encode_methodspec): Don't use the `ginst->generic_method's
30264         klass if it's a generic instance, use `ginst->klass' in this case.
30265
30266 2003-11-03  Martin Baulig  <martin@ximian.com>
30267
30268         * reflection.c (mono_image_get_generic_method_param_info):
30269         Removed, use mono_image_get_generic_param_info() instead.
30270         (mono_image_get_type_info): Write the GenericParam table before
30271         the Method table.  This is neccessary because in the GenericParam
30272         table, type parameters of the class (ie. '!0' etc.) must come
30273         before the ones from its generic methods (ie. '!!0' etc).
30274
30275 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30276
30277         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30278
30279 2003-11-02  Martin Baulig  <martin@ximian.com>
30280
30281         * reflection.c (create_generic_typespec): Take a
30282         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30283         the generic parameters from it.
30284
30285 2003-11-02  Martin Baulig  <martin@ximian.com>
30286
30287         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30288         instead of a `MonoClassField *' since we just need the type.
30289         (create_generic_typespec): New static function.  Creates a
30290         TypeSpec token for a generic type declaration.
30291         (mono_image_get_generic_field_token): New static function.
30292         (mono_image_create_token): If we're a FieldBuilder in a generic
30293         type declaration, call mono_image_get_generic_field_token() to get
30294         the token.
30295
30296 2003-11-02  Martin Baulig  <martin@ximian.com>
30297
30298         * reflection.h
30299         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30300         `MonoReflectionGenericInst *declaring_type' and
30301         `MonoReflectionGenericInst *reflected_type' fields.
30302
30303         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30304         `MonoReflectionGenericInst *declaring_type' and a
30305         `MonoReflectionGenericInst *reflected_type' argument instead of a
30306         single `MonoReflectionGenericInst *type' one.  Set
30307         `res->declaring_type' and `res->reflected_type' from them.
30308         (mono_reflection_inflate_field): Likewise.      
30309
30310 2003-11-02  Martin Baulig  <martin@ximian.com>
30311
30312         * class.c (mono_class_setup_vtable): Don't store generic methods
30313         in the vtable.  
30314
30315 2003-11-02  Martin Baulig  <martin@ximian.com>
30316
30317         * reflection.h (MonoReflectionGenericInst): Added
30318         `MonoReflectionType *declaring_type'.
30319
30320         * reflection.c (mono_reflection_bind_generic_parameters): Use
30321         `if (tb->parent)' instead of `klass->parent'.
30322
30323 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30324
30325         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30326         with an empty ASSEMBLY table.
30327
30328         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30329         variable in the inner and outer loops.
30330
30331 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30332
30333         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30334         argument.
30335
30336         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30337         
30338         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30339         icalls. Instead, do everything in managed code. This is needed since
30340         it is hard to restore the original domain etc. in unmanaged code in the
30341         presence of undeniable exceptions.
30342
30343         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30344         New icalls to push and pop appdomain refs.
30345
30346 2003-10-31  Martin Baulig  <martin@ximian.com>
30347
30348         * class.c (inflate_generic_type): Renamed to
30349         mono_class_inflate_generic_type() and made it public.
30350
30351         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30352         New interncall.
30353
30354         * loader.c (mono_field_from_memberref): Also set the retklass for
30355         typespecs.
30356
30357         * fielder.c (mono_image_get_inflated_field_token): New static
30358         method; creates a metadata token for an inflated field.
30359         (mono_image_create_token, fixup_method): Added support for
30360         "MonoInflatedField".
30361         (fieldbuilder_to_mono_class_field): New static function.
30362         (mono_reflection_inflate_field): New public function.
30363
30364         * reflection.h
30365         (MonoReflectionGenericInst): Added `MonoArray *fields'.
30366         (MonoReflectionInflatedField): New typedef.     
30367
30368 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
30369
30370         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
30371         for Solaris and other platforms without s6_addr16
30372
30373 2003-10-30  Martin Baulig  <martin@ximian.com>
30374
30375         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
30376         argument instead of two.
30377         (mono_class_inflate_generic_signature): Likewise.
30378         (inflate_generic_header): Likewise.
30379         (mono_class_inflate_generic_method): Likewise.  In addition, if
30380         `ginst->klass' is set, it becomes the new `method->klass'.
30381
30382         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
30383         field.
30384
30385         * reflection.c (encode_generic_method_sig): Write a 0xa as the
30386         first byte. [FIXME]
30387         (method_encode_methodspec): If we have generic parameters, create
30388         a MethodSpec instead of a MethodRef.
30389         (fixup_method): Added support for "MonoInflatedMethod" and
30390         "MonoInflatedCtor".
30391         (mono_image_create_token): Added support for "MonoInflatedMethod"
30392         and "MonoInflatedCtor".
30393         (inflated_method_get_object): New static function; returns a
30394         managed "System.Reflection.MonoInflatedMethod" object.
30395         (mono_reflection_bind_generic_method_parameters): Return a
30396         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
30397         (mono_reflection_inflate_method_or_ctor): Likewise.
30398         (mono_image_get_generic_method_param_info): Initialize unused
30399         fields to zero.
30400         (mono_image_get_generic_param_info): Likewise.
30401
30402         * reflection.h (MonoReflectionInflatedMethod): New public
30403         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
30404         "S.R.MonoInflatedCtor" classes.
30405
30406         * loader.c (method_from_memberref): If we're a TypeSpec and it
30407         resolves to a generic instance, inflate the method.
30408
30409 2003-10-28  Dick Porter  <dick@ximian.com>
30410
30411         * object.c (mono_runtime_run_main): Convert command-line arguments
30412         into utf8, falling back to the user's locale encoding to do so.
30413
30414 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
30415
30416         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
30417         at this time.
30418
30419         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
30420
30421         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
30422         up icalls at method definition time. Partially fixes #33569.
30423
30424 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
30425
30426         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
30427         marshalling of arrays. Fixes #50116.
30428
30429         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
30430
30431         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
30432         points to a vtable in the dying appdomain.
30433
30434         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
30435         listeners into unmanaged code inside the lock.
30436
30437         * object.c (mono_class_vtable): Turn off typed allocation in non-root
30438         domains and add some comments.
30439
30440 2003-10-25  Martin Baulig  <martin@ximian.com>
30441
30442         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
30443
30444         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
30445
30446         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
30447         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
30448         currently parsing.  Create the generic class and store it in
30449         `generic_inst->klass' before parsing the type arguments.  This is
30450         required to support "recursive" definitions; see mcs/tests/gen-23.cs
30451         for an example.
30452         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
30453         to support recursive typespec entries.
30454
30455         * class.c (mono_class_setup_parent): If our parent is a generic
30456         instance, we may get called before it has its name set.
30457         (mono_class_from_generic): Splitted into
30458         mono_class_create_from_generic() and mono_class_initialize_generic().
30459
30460 2003-10-25  Martin Baulig  <martin@ximian.com>
30461
30462         * icall.c (ves_icall_Type_BindGenericParameters): Return a
30463         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
30464         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
30465         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
30466
30467         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
30468         (create_typespec): Likewise.
30469         (mono_reflection_bind_generic_parameters): Return a
30470         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
30471         (mono_reflection_inflate_method_or_ctor): New public function.
30472
30473         * reflection.h (MonoReflectionGenericInst): New typedef.        
30474
30475 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
30476
30477         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
30478         inside the domain lock. Fixes #49993.
30479         
30480         * object.c (mono_class_vtable): When typed allocation is used, 
30481         allocate vtables in the GC heap instead of in the mempool, since the
30482         vtables contain GC descriptors which are used by the collector even
30483         after the domain owning the mempool is unloaded.
30484
30485         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
30486
30487         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
30488         reflect what it does. Also invalidate mempools instead of freeing
30489         them if a define is set.
30490
30491         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
30492         of the appdomain.
30493         
30494         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
30495         hold the finalizable objects in this domain.
30496
30497         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
30498         appdomain.
30499
30500         * appdomain.c (mono_domain_set): New function to set the current
30501         appdomain, but only if it is not being unloaded.
30502
30503         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
30504         appdomain which is being unloaded.
30505         
30506         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
30507         unloading of the root appdomain.
30508
30509         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
30510         icall to execute a method in another appdomain. Intended as a 
30511         replacement for InternalSetDomain, which can confuse the code 
30512         generation in the JIT.
30513
30514         * appdomain.c (mono_domain_is_unloading): New function to determine
30515         whenever an appdomain is unloading.
30516
30517         * appdomain.c (mono_domain_unload): New function to correctly unload
30518         an appdomain.
30519
30520         * assembly.c (mono_assembly_load_references): Check that an assembly
30521         does not references itself.
30522
30523         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
30524         domain manually, it asks the finalizer thread to do it, then waits for
30525         the result. Also added a timeout.
30526
30527         * icall.c: Register the new icalls.
30528
30529         * threads.h threads.c: Export the mono_gc_stop_world and 
30530         mono_gc_start_world functions.
30531         
30532         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
30533         function to fill out the mempool with 0x2a.
30534
30535 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
30536
30537         * reflection.h (MonoReflectionMethodAux): New structure to store
30538         information which is rarely used, thus is not in the MonoMethod
30539         structure.
30540
30541         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
30542         store the aux info.
30543
30544         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
30545         and marshalling info into the aux structure.
30546
30547         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
30548         from the aux structure.
30549
30550         * loader.c (mono_method_get_param_names): Retrieve the param names from
30551         the aux structure.
30552         
30553 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
30554
30555         * exception.h exception.c: Add AppDomainUnloadedException && fix 
30556         warning.
30557
30558 2003-10-21  Dick Porter  <dick@ximian.com>
30559
30560         * socket-io.c
30561         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
30562         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
30563
30564 2003-10-21  Martin Baulig  <martin@ximian.com>
30565
30566         * reflection.c (mono_reflection_bind_generic_parameters):
30567         `klass->parent' is NULL for interfaces.
30568
30569 2003-10-21  Martin Baulig  <martin@ximian.com>
30570
30571         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30572
30573 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
30574
30575         * exception.c (mono_exception_from_name_msg): New helper function for
30576         creating exceptions and initializing their message field.
30577
30578         * exception.c: Simplify functions using the new helper.
30579
30580         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
30581         New function.
30582
30583         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
30584         mono_raise_exception, since otherwise gcc doesn't generate the function
30585         epilog for raise_exception, confusing the stack unwinding in the JIT.
30586         Fixes #45043.
30587
30588         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
30589         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
30590         Fixes #49499.
30591
30592 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30593
30594         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
30595         utf8.
30596
30597 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
30598
30599         * icall.c: Removed GetUninitializedObject method because
30600           AllocateUninitializedClassInstance does the same.
30601
30602 2003-10-18  Martin Baulig  <martin@ximian.com>
30603
30604         * class.c (inflate_generic_signature): Renamed to
30605         mono_class_inflate_generic_signature() and made it public.
30606         (my_mono_class_from_generic_parameter): New static function; if we
30607         don't already have the generic parameter's MonoClass, create a
30608         very simple one which is just used internally in the runtime and
30609         not passed back to managed code.
30610
30611         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
30612
30613         * metadata.h (MonoMethodSignature): Moved the
30614         `MonoGenericParam *gen_params' to the MonoMethodHeader.
30615         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
30616
30617         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
30618         ves_icall_MonoMethod_GetGenericArguments(); this is now an
30619         interncall on the MonoMethod class, not on MethodInfo.
30620         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
30621         calling mono_reflection_bind_generic_method_parameters() directly.
30622
30623         * loader.c (mono_method_get_signature): If this is a MethodSpec;
30624         return the already computed `method->signature'.
30625         (method_from_methodspec): New static function to load a method
30626         from a MethodSpec entry.
30627         (mono_get_method_from_token): Call the new method_from_methodspec()
30628         for MethodSpec tokens.  
30629         (mono_get_method_from_token): If we're a generic method, load the
30630         type parameters.
30631
30632         * reflection.c (mono_image_get_memberref_token): Allow
30633         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
30634         table.
30635         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
30636         (mono_image_create_token): First check whether it's a generic
30637         method (so we'd need to create a MethodSpec), then do the other
30638         two alternatives.
30639         (mono_reflection_bind_generic_method_parameters): Return a
30640         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
30641         called directly from the interncall.
30642
30643 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
30644
30645         * reflection.c (load_public_key): Move loading of the public key
30646         into managed code.
30647
30648         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
30649
30650         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
30651         fields.
30652
30653         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
30654         culture, hash_alg and public_key. Fixes #49555.
30655
30656 2003-10-17  Martin Baulig  <martin@ximian.com>
30657
30658         * class.h (MonoGenericInst): Moved this declaration here and added
30659         `MonoMethod *generic_method'.
30660
30661         * icall.c
30662         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
30663         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
30664
30665         * metadata.c (mono_metadata_type_equal): Two types of
30666         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
30667         index; ie. don't compare the address of the `MonoGenericParam'
30668         structure.
30669         (mono_metadata_load_generic_params): Removed the `MonoMethod
30670         *method' argument.
30671
30672         * metadata.h (MonoGenericInst): Moved declaration to class.h.
30673         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
30674
30675         * reflection.c (method_encode_signature): Encode the number of
30676         generic parameters.
30677         (encode_generic_method_sig): New static function.
30678         (method_encode_methodspec): New static function; creates an entry
30679         in the MethodSpec table for a generic method.
30680         (mono_image_get_methodspec_token): New static function.
30681         (mono_image_create_token): Call mono_image_get_methodspec_token()
30682         for generic methods.
30683         (mono_reflection_bind_generic_method_parameters): New public
30684         function.  Instantiates a generic method.
30685
30686 2003-10-16  Martin Baulig  <martin@ximian.com>
30687
30688         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
30689         *gen_params' here from MonoMethodHeader.
30690
30691         * metadata.c (mono_metadata_parse_method_signature): If we have
30692         generic parameters, initialize `method->gen_params' and then set
30693         the correct `type->data.generic_param' in all the parameters.
30694
30695 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
30696
30697         * threads.c (mono_threads_get_default_stacksize): New function to 
30698         return the default stacksize.
30699
30700         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
30701         termination of the finalizer thread, since the previous method had
30702         race conditions. Fixes #49628.
30703
30704         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
30705         as for the other managed threads.
30706
30707 2003-10-16  Martin Baulig  <martin@ximian.com>
30708
30709         * class.c (inflate_generic_signature): Copy `generic_param_count'
30710         and `gen_params'.
30711
30712         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
30713         New interncall.
30714
30715         * metadata.c (mono_metadata_parse_method_signature): Actually set
30716         the `method->generic_param_count' here.
30717         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
30718
30719 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
30720
30721         * object.h: Add a new field to TypedRef to simplify the implementation
30722         of the REFANY opcodes in the JIT.
30723
30724         * icall.c: Make use of the new field.
30725
30726         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
30727         dynamically.
30728
30729 2003-10-15  Martin Baulig  <martin@ximian.com>
30730
30731         * class.c (mono_class_from_gen_param): Renamed to
30732         mono_class_from_generic_parameter() and moved most of the
30733         functionality from mono_reflection_define_generic_parameter()
30734         here; ie. we create a "real" class here.
30735         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
30736         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
30737         previously been called.
30738
30739         * class.h (MonoGenericParam): Moved the declaration of this struct
30740         here from metadata.h and added `MonoMethod *method'.
30741
30742         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
30743         interncall.
30744
30745         * loader.c (mono_get_method_from_token): If we have any generic
30746         parameters, call mono_metadata_load_generic_params() to read them
30747         from the MONO_TABLE_GENERICPAR.
30748
30749         * metadata.c (mono_metadata_load_generic_params): Added
30750         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
30751
30752         * metadata.h (MonoMethodSignature): Replaced
30753         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
30754         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
30755
30756         * reflection.c (mono_reflection_define_generic_parameter): Moved
30757         most of the functionality into the new
30758         mono_class_from_generic_parameter(); set the `method' field if
30759         we're a method parameter.       
30760
30761 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
30762
30763         * marshal.c (emit_struct_conv): if native size is 0
30764         emit no code.
30765
30766 2003-10-14  Martin Baulig  <martin@ximian.com>
30767
30768         * icall.c: The generics API has changed in the spec since it was
30769         added to System.Type; these modifications make it match the spec
30770         again.
30771         (ves_icall_Type_GetGenericParameters): Renamed to
30772         `ves_icall_Type_GetGenericArguments'.
30773         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
30774         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
30775         `ves_icall_MonoType_get_HasGenericArguments'.
30776         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
30777         `ves_icall_MonoType_get_IsGenericParameter'.
30778         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
30779         this is no interncall anymore.
30780         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
30781         `ves_icall_TypeBuilder_get_IsGenericParameter'.
30782
30783 2003-10-14  Martin Baulig  <martin@ximian.com>
30784
30785         * reflection.c (mono_reflection_bind_generic_parameters): Also
30786         inflate generic methods if we're reading the class from IL.
30787
30788 2003-10-13  Martin Baulig  <martin@ximian.com>
30789
30790         * reflection.c (mono_reflection_define_generic_parameter): This
30791         method isn't called directly from the icall anymore; take a
30792         `MonoReflectionAssemblyBuilder *' so we can use this for type and
30793         method generic parameters.
30794         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
30795         (method_builder_encode_signature): Encode generic parameters.
30796         (mono_image_get_method_info): Write generic params to the
30797         MONO_TABLE_GENERICPARAM table.
30798
30799         * reflection.h (MonoReflectionMethodBuilder): Added
30800         `MonoArray *generic_params'.
30801
30802         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
30803
30804         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
30805         wrapper for mono_reflection_define_generic_parameter().
30806         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
30807
30808 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
30809
30810         * marshal.h: Add missing function to fix build.
30811
30812         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
30813         the SetLastError pinvoke attribute.
30814
30815         * marshal.c (mono_marshal_set_last_error): New helper function called
30816         by the generated code.
30817         
30818         * marshal.c (mono_mb_emit_branch): New helper function.
30819
30820         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
30821
30822         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
30823         classes as parameters and return values of delegates. Fixes #29256. 
30824
30825 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
30826
30827         * locales.c: use gint32 in non HAVE_ICU case
30828
30829 2003-10-11  Martin Baulig  <martin@ximian.com>
30830
30831         * mono-debug.c (mono_debug_add_method): Added a workaround for
30832         bug #48591.
30833
30834 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
30835
30836         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
30837         delegates passed to native code must use the STDCALL calling 
30838         convention. Fixes #35987.
30839
30840 2003-10-10  Martin Baulig  <martin@ximian.com>
30841
30842         * class.c (inflate_generic_type): If we're inflating for a generic
30843         type instance (and not for a generic method), return
30844         MONO_TYPE_MVAR unchanged.
30845
30846 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30847
30848         * string-icalls.c: Join ignores null strings in the source array.
30849         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
30850         * threads.c: GetAvailableTheads is slightly more accurate.
30851
30852 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
30853
30854         * threads.h threads.c : add mono_threads_set_default_stacksize
30855         and pass default to CreateThread calls.
30856
30857 2003-10-09  Dick Porter  <dick@ximian.com>
30858
30859         * icall.c:
30860         * locales.h:
30861         * locales.c: Internal calls for constructing CultureInfo and
30862         related objects from libicu (if its available.)
30863
30864 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
30865
30866         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
30867
30868 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30869
30870         * threadpool.c: added an argument to async_invoke_thread that is the
30871         item to process, pass the MonoAsyncResult to the thread start function
30872         when creating a new thread. This way we don't need to acquire any lock
30873         when we're creating a new thread. Readded a semaphore for faster
30874         response times (instead of that Sleep i added).
30875
30876 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
30877
30878         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30879         get daylight change dates better on Windows, fix handling
30880         of platforms without tm_gmtoff.
30881
30882 2003-10-06  Martin Baulig  <martin@ximian.com>
30883
30884         * class.c (inflate_generic_method): Renamed to
30885         mono_class_inflate_generic_method() and made public.
30886         (mono_class_init): Don't inflate the generic methods here.
30887         (mono_class_from_generic): Added `gboolean inflate_methods'
30888         argument.  Inflate the methods here.
30889
30890         * loader.c (mono_method_get_param_names): Ignore instances of
30891         generic types for the moment.
30892
30893         * reflection.c (fixup_method): Added support for inflated methods.
30894         (mono_image_create_token): Use mono_image_get_methodref_token()
30895         for inflated methods.
30896         (mono_custom_attrs_from_param): Ignore instances of generic types
30897         for the moment.
30898         (mono_reflection_bind_generic_parameters): New public function.
30899         Moved all the functionality from
30900         ves_icall_Type_BindGenericParameters() here and added support for
30901         dynamic types.
30902         (mono_reflection_define_generic_parameter): Initialize
30903         `klass->methods' here.
30904
30905         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
30906         functionality into mono_reflection_define_generic_parameter().
30907         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
30908         TypeBuilder, return that TypeBuilder.
30909
30910 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30911
30912         * appdomain.c: removed mono_delegate_semaphore.
30913
30914         * threadpool.c:
30915         (mono_thread_pool_add): moved hash table creation inside and the thread 
30916         creation outside of the critical region.
30917         (mono_thread_pool_finish): removed obsolete code.
30918         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
30919         continue or exit the thread depending on the queue.
30920
30921 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
30922
30923         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
30924         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
30925         handle more bool marshalling options
30926
30927 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
30928
30929         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
30930         arrays of structs. Also add a more descriptive error message when
30931         a structure member is marshalled as LPArray.
30932
30933 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
30934
30935         * marshal.c (mono_marshal_get_native_wrapper): Add support for
30936         marshalling arrays of complex types. Fixes #29098. Also remove an
30937         usused and incomplete function.
30938
30939 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
30940
30941         * gc.c: report heap_size - free_bytes as total memory allocated
30942         (bug#49362).
30943
30944 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
30945
30946         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
30947         fix timezone handling problems on Windows.
30948         
30949         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
30950         asserts when the year is outside the range handled by ms the functions.
30951
30952         * class.c (setup_interface_offsets): If the class is an interface,
30953         fill out its interface_offsets slot.
30954
30955 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30956
30957         * threadpool.c: mark threadpool threads as background.
30958
30959 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
30960
30961         * decimal.c - define DECINLINE to nothing if not using GCC
30962
30963 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
30964
30965         * assembly.c: More refcount fixes.
30966
30967 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30968
30969         * string-icalls.c: if we're not trimming, return the same string.
30970         When not splitting, don't create a new string.
30971
30972 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30973
30974         * image.c:
30975         (mono_image_open): increment the ref_count inside the critical section.
30976
30977 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
30978
30979         * image.c (mono_image_open): Fix reference counting bug.
30980
30981 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
30982
30983         * marshal.c (mono_marshal_type_size) struct alignment changed for 
30984         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
30985         64bits. Avoid leak in mono_marshal_get_native_wrapper when
30986         mono_lookup_pinvoke_call throws.        
30987
30988 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
30989
30990         * reflection.c (mono_reflection_parse_type): Fix #49114.
30991
30992         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
30993         temporary workaround for cygwin header problem.
30994
30995         * object.c (mono_object_isinst): Synchronize this with the code
30996         generated by the JIT for casts.
30997
30998 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
30999
31000         * reflection.c (encode_type): Fix #38332.
31001
31002 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31003
31004         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31005         the original method from the wrapper method.
31006
31007 2003-09-25  Martin Baulig  <martin@ximian.com>
31008
31009         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31010         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31011         (ves_icall_Type_get_IsGenericInstance): New interncall.
31012
31013 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31014
31015         * object.c: fix cast warning in big endian code.
31016
31017 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31018
31019         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31020         
31021 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31022
31023         * assembly.c: don't call check_env from mono_assembly_load. It's
31024         already done once in mono_assemblies_init and may cause headaches when
31025         multiple threads are loading assemblies.
31026
31027 2003-09-19  Martin Baulig  <martin@ximian.com>
31028
31029         * reflection.c (mono_reflection_define_generic_parameter): Don't
31030         allocate `klass->methods', set `klass->flags' to
31031         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31032
31033 2003-09-18  Martin Baulig  <martin@ximian.com>
31034
31035         * class.c (mono_class_init): Don't create `class->methods' if it's
31036         already initialized.
31037
31038         * metadata.c (mono_metadata_load_generic_params): Make this
31039         actually work.
31040
31041         * reflection.c (mono_reflection_define_generic_parameter): Set
31042         parent class and interfaces from the constraints.
31043
31044         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31045         to keep this struct in sync with the declaration in TypeBuilder.cs.
31046
31047 2003-09-17  Martin Baulig  <martin@ximian.com>
31048
31049         * metadata.h (MonoType): Replaced the data's `int type_param'
31050         field with `MonoGenericParam *generic_param'.
31051         (MonoGenericParam): Added `MonoClass *klass'.
31052
31053         * class.c (mono_class_from_gen_param): Removed the
31054         `MonoImage *image' and `int type_num' arguments.
31055
31056         * metadata.c (mono_metadata_parse_generic_param): New static
31057         method; creates a MonoGenericParam which just contains the index.
31058         (do_mono_metadata_parse_type): Call
31059         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31060         MONO_TYPE_MVAR.
31061
31062         * reflection.c (mono_image_typedef_or_ref): Generic type
31063         parameters may be in the same assembly, but never use a typedef
31064         for them.
31065         (mono_reflection_define_generic_parameter): We're now creating a
31066         "real" class for the type parameter; it's now safe to call
31067         mono_class_from_mono_type() on the class'es type, it'll do the
31068         right thing.
31069
31070 2003-09-16  Martin Baulig  <martin@ximian.com>
31071
31072         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31073         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31074         the `symfile' data structure must be fully initialized before it
31075         gets added to the table.
31076
31077 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31078
31079         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31080
31081         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31082         class init trampolines.
31083
31084 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31085
31086         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31087         to the built-in profiler to turn off time and allocation profiling
31088         respectively.
31089
31090 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31091
31092         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31093         g_direct_equal.
31094
31095         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31096         in human readable form.
31097
31098 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31099
31100         * reflection.c icall.c: Fixed warnings.
31101
31102         * image.c (load_class_names): Use a temporary hash table to hold the
31103         namespaces in order to avoid doing many string comparisons.
31104
31105         * image.h: Fix typo.
31106
31107         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31108         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31109         since the NULL case is short-circuited inside g_hash_table_lookup, 
31110         leading to better performance.  
31111
31112         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31113         obtain the first custom attribute for a given index. Depends on the
31114         CustomAttribute table being sorted by the parent field.
31115
31116         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31117         for better performance.
31118
31119 2003-09-07  Martin Baulig  <martin@ximian.com>
31120
31121         * class.c (mono_class_init): If we're a generic instance, inflate
31122         all our methods instead of loading them from the image.
31123         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31124
31125 2003-09-07  Martin Baulig  <martin@ximian.com>
31126
31127         * mono-debug-debugger.c: Added support for constructors.
31128
31129 2003-09-06  Martin Baulig  <martin@ximian.com>
31130
31131         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31132         New interncall.
31133
31134         * reflection.c (mono_reflection_setup_generic_class): Call
31135         ensure_runtime_vtable() to create the vtable.
31136
31137 2003-09-05  Martin Baulig  <martin@ximian.com>
31138
31139         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31140         MONO_TYPE_MVAR.
31141
31142 2003-09-04  Martin Baulig  <martin@ximian.com>
31143
31144         * reflection.c (mono_reflection_define_generic_parameter): Generic
31145         parameters start with zero.
31146
31147 2003-09-04  Martin Baulig  <martin@ximian.com>
31148
31149         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31150
31151         * reflection.h (MonoReflectionGenericParam): New typedef.
31152         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31153         the generic parameters from the managed TypeBuilder.
31154
31155         * reflection.c (mono_reflection_define_generic_parameter): New function.
31156         (mono_reflection_create_runtime_class): Encode generic parameters.
31157         (mono_reflection_setup_generic_class): New function; this is
31158         called after adding adding all generic params to the TypeBuilder.
31159         (encode_type): Added MONO_TYPE_VAR.
31160
31161 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31162
31163         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31164         here from the JIT.
31165
31166         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31167         load hook.
31168
31169 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31170
31171         * reflection.h reflection.c class.h class.c: Delete duplicate 
31172         definition of mono_type_get_name () from reflection.c and export the
31173         one in class.c.
31174
31175         * class.c: Class loading fixes from Bernie Solomon 
31176         (bernard@ugsolutions.com).
31177
31178         * reflection.c: Endianness fixes from Bernie Solomon 
31179         (bernard@ugsolutions.com).
31180         
31181 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31182
31183         * assembly.h assembly.c: Define a file format version for AOT
31184         libraries.
31185         
31186         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31187
31188         * appdomain.h (MonoJitInfo): New field to determine whenever the
31189         code is domain neutral.
31190         
31191 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31192
31193         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31194
31195 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31196
31197         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31198         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31199         Avoid caching the result since strings must be domain specific. Fixes
31200         #48050.
31201
31202 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31203
31204         * marshal.c (mono_marshal_init): Make this callable multiple times
31205         since it is hard to find a correct place to call it.
31206
31207         * object.c (mono_runtime_class_init): Execute static constructors in
31208         the correct appdomain.
31209
31210         * image.c (build_guid_table): Handle the case when multiple images have
31211         the same GUID.
31212
31213 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31214
31215         * icall.c: added a couple of icalls for System.Web.
31216
31217 2003-08-28  Martin Baulig  <martin@ximian.com>
31218
31219         * icall.c (ves_icall_Type_BindGenericParameters): Use
31220         `klass->generic_inst' instead of `&klass->byval_arg' in the
31221         mono_type_get_object() call.  The returned type must be
31222         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31223
31224 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31225
31226         * NOTES: New file.
31227
31228         * object.c (mono_class_proxy_vtable): Make it thread safe.
31229
31230         * pedump.c: Fix warning.
31231
31232         * object.c appdomain.h: Get rid of metadata_section. 
31233         It is no longer needed and it was causing deadlocks with domain->lock.
31234
31235         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31236
31237 2003-08-26  Martin Baulig  <martin@ximian.com>
31238
31239         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31240
31241 2003-08-26  Martin Baulig  <martin@ximian.com>
31242
31243         * pedump.c (main): Call mono_metadata_init(),
31244         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31245         and mono_loader_init().
31246
31247 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31248
31249         * loader.h: Add missing include to fix build.
31250
31251         * image.h: mono_image_load_references is no more.
31252
31253         * assembly.c: Reworked assembly loading to make it really thread safe.
31254         After these changes, the assembly returned by mono_assembly_open is
31255         fully initialized, i.e. all its references assemblies are loaded.
31256
31257         * assembly.c (mono_image_load_references): Renamed to 
31258         mono_assembly_load_references, and made private, since clients no
31259         longer need to call it.
31260
31261         * class.c: Removed calls to mono_assembly_load_references, since it was
31262         a source of deadlocks.
31263
31264         * loader.h loader.c class.h class.c: Protect data structures using a 
31265         new lock, the loader lock.
31266
31267         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31268         GPtrArrays only when needed.
31269
31270         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31271         into empty structures by mcs. Fixes pinvoke7.cs.
31272         
31273         * domain.c (mono_init): Call a new initialization function.
31274
31275         * appdomain.c (mono_runtime_init): Call the new initializer function
31276         of the marshal module.
31277
31278         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31279         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31280
31281         * marshal.h marshal.c: Added locks around the wrapper caches to make
31282         this module thread safe.
31283
31284         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31285         this argument. Fixes pinvoke1.exe.
31286
31287 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31288
31289         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31290         enumeration of values. Removed fields to store remote call output values in
31291         MonoAsyncResult. Not needed any more.
31292         * object.c: Initialize call_type and async_result fields in mono_message_init.
31293         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31294         dispatching the message.
31295         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31296         async call to finish. To do it use a message with EndInvoke call type.
31297
31298 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31299
31300         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31301         determines whenever a method has marshalling info.
31302
31303 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31304
31305         * assembly.c: fix the build on windows.
31306
31307 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31308
31309         * object.cs: Fixed bug #47785.
31310
31311 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31312
31313         * string-icalls.c (StringReplace): If their are no occurances of
31314         the old string found return a reference to the supplied
31315         string. This saves some memory and matches MS behavoir.
31316         
31317 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31318
31319         * socket-io.c: fixed compilation for systems that define AF_INET6
31320         and don't define SOL_IP/SOL_IPV6.
31321
31322 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31323
31324         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31325         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31326
31327         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31328
31329         * domain.c: Make this module thread safe.
31330
31331         * domain.c (mono_init): Call new initialization function.
31332
31333         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31334         reference types too. Fixes #38812.
31335
31336         * image.c (mono_image_init): Fixed warnings.
31337
31338         * class.c (mono_class_from_typeref): Handle assembly load failure
31339         correctly.
31340
31341         * appdomain.c (add_assemblies_to_domain): Handle the case when
31342         the references of an assembly are not yet loaded.
31343
31344         * metadata.c image.c assembly.c: Moved initialization of global
31345         variables to a separate function called at startup since lazy 
31346         initialization of these variables is not thread safe.
31347         
31348         * image.c assembly.c: Made this module thread safe by adding locks in 
31349         the appropriate places.
31350
31351         * domain.c (mono_init): Call the new initialization functions of the
31352         three modules.
31353
31354 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31355
31356         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
31357           make a direct call. It is proxy's work to make the call asynchronous.
31358           mono_delegate_end_invoke(): If the targe is a proxy, just collect
31359           the return values.
31360         * object.cs: mono_method_call_message_new(): read AsyncResult and
31361           state object from parameters list, if this info is requested.
31362         * object.h: Added fields to store remote call output values in
31363           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
31364
31365 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31366
31367         * object.h: add needed fields to MonoThread.
31368         * threads.c, threads.h: allow registering a function to cleanup data
31369         allocated per thread by the JIT.
31370
31371 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31372
31373         * loader.h: portability fix by Bernie Solomon
31374         * <bernard@ugsolutions.com>.
31375
31376 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
31377
31378         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
31379         return a MonoArray. This simplifies the code and also ensures that
31380         the cache allways contains an object reference as a value.
31381
31382         * icall.c (ves_icall_get_parameter_info): Simplified using the new
31383         function.
31384
31385 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31386
31387         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
31388         fixes a problem with byte ordering when getting the address family for
31389         a socket.
31390
31391 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
31392
31393         * .cvsignore: Added monosn.
31394
31395         * reflection.h reflection.c loader.c: Added support for parameter
31396         marshalling to dynamically created types. Fixes #47295.
31397
31398 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
31399
31400         * rand.c: remove useless warnings.
31401
31402 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31403
31404         * class.c: implemented ldtoken for methods and fieldrefs.
31405
31406 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31407
31408         * threadpool.c: when mono_async_invoke was called, no one took care of
31409         monitoring the queue. So if the method invoked took some time and we
31410         got new async invoke requests after 500 ms (the thread created waited
31411         that long in WaitForSingleObject), the new async invoke was not called
31412         until the previous one finished.
31413
31414         This is fixed now. Thanks to Totte for helping with it.
31415
31416 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31417
31418         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
31419
31420 2003-08-11  Martin Baulig  <martin@ximian.com>
31421
31422         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
31423
31424 2003-08-06  Martin Baulig  <martin@ximian.com>
31425
31426         * mono-debug-debugger.c: Added support for static fields,
31427         properties and methods.
31428
31429 2003-08-06  Martin Baulig  <martin@ximian.com>
31430
31431         * mono-debug-debugger.c: Don't store the MonoString's vtable to
31432         make this work for applications with multiple application domains.
31433
31434 2003-08-04  Martin Baulig  <martin@ximian.com>
31435
31436         * mono-debug-debugger.c: Completely reworked the type support; the
31437         most important thing is that we're now just using one single
31438         `MonoType' instance per type.
31439
31440 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
31441
31442         * mono-endian.h, mono-endian.c, icall.c: Added icall
31443         ves_icall_System_Double_AssertEndianity to assert double word endianity
31444         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
31445
31446 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31447
31448         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
31449         support, icalls and fixes.
31450
31451 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
31452
31453         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
31454         classes that are a punctuation character in .NET is not the same a
31455         g_unichar_ispunct.
31456
31457 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
31458
31459         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
31460
31461 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
31462
31463         * icall.c: Add new MemCopy internalcall.
31464         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
31465         Simplified code; It is not necessary to handle all the cases here,
31466         as the C# code takes care of it.  Only handle the case of the name
31467         resource embedded into the assembly.
31468
31469         Changed signature to return the data pointer and the size of the
31470         data. 
31471
31472 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
31473
31474         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
31475         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
31476
31477 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31478
31479         * socket-io.c: ignore EINTR error in select.
31480
31481 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
31482
31483         * class.h, class.c: removed unused subclasses field in MonoClass.
31484
31485 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
31486
31487         * icall.c: improve fix of get_base_definition(). If the parent class
31488           doesn't have the mehod, look at the parent of the parent.
31489         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
31490           to check if a parameter is an in or out parameter
31491           (PARAM_ATTRIBUTE_IN is not set by default).
31492           mono_method_return_message_restore(): Use mono_class_value_size to
31493           get the size of a value type. mono_type_stack_size (parameterType)
31494           does not return the correct value if parameterType is byRef.
31495           mono_load_remote_field(), mono_load_remote_field_new(),
31496           mono_store_remote_field(), mono_store_remote_field_new():
31497           raise exception if the remote call returns an exception.
31498
31499 2003-07-28  Martin Baulig  <martin@ximian.com>
31500
31501         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
31502         method.  This is a wrapper around mono_runtime_invoke() which
31503         boxes the instance object if neccessary.
31504
31505 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31506
31507         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
31508         metadata.h, row-indexes.h, verify.c: first cut of generics support.
31509
31510 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31511
31512         * icall.c: disable mcs bug workaround.
31513
31514 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
31515
31516         * object.c (mono_runtime_class_init): Take the metadata_section
31517         mutex before obtaining the domain mutex.
31518
31519         * appdomain.h: Added definition of metadata_section mutex here. 
31520
31521         * object.c: define metadata_mutex here.
31522
31523 2003-07-24  Ravi Pratap  <ravi@ximian.com>
31524
31525         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
31526         fixed.
31527
31528 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
31529
31530         * reflection.c: Fix bug #46669
31531
31532 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31533
31534         * exception.c:
31535         * exception.h:
31536         * icall.c:
31537         * object.h: fill in the type name for TypeLoadException.
31538
31539 2003-07-23  Ravi Pratap  <ravi@ximian.com>
31540
31541         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
31542         relationship between TypeBuilders while compiling corlib) and bug
31543         45993 (Array types returned from the runtime while compiling
31544         corlib were from the loaded corlib).
31545
31546 2003-07-22  Martin Baulig  <martin@ximian.com>
31547
31548         * mono-debug-debugger.c: Reworked the type support a bit more;
31549         distinguish between types and classes.
31550
31551 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
31552
31553         * icall.c: add IsArrayImpl icall.
31554
31555 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
31556
31557         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
31558         initializing real_size only once. Also fix bug #46602.
31559
31560 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
31561
31562         * object.c: Renamed mono_metadata_section to metadata_section.
31563
31564 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
31565
31566         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
31567           empty array if the type is an array. Fixed.
31568           ves_icall_MonoMethod_get_base_definition: if the base method
31569           is abstract, get the MethodInfo from the list of methods of
31570           the class.
31571         * reflection.c: ParameterInfo.PositionImpl should be zero-based
31572           and it was 1-based. Fixed in mono_param_get_objects.
31573
31574 2003-07-20  Martin Baulig  <martin@ximian.com>
31575
31576         * mono-debug.h: Set version number to 31.
31577         (mono_debug_init): Added `MonoDomain *' argument.
31578
31579         * mono-debug-debugger.c: Reworked the type support; explicitly
31580         tell the debugger about builtin types; pass the `klass' address to
31581         the debugger.
31582
31583 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
31584
31585         * image.c: Allow new metadata tables to be loaded without a
31586         warning. Also update the warning message to give the new constant value.
31587                 
31588 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
31589
31590         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
31591         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
31592         array type representation changes.
31593
31594 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
31595
31596         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
31597         on Environment.Exit () call.
31598
31599 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
31600
31601         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
31602         requires a matching corlib.
31603
31604 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31605
31606         * Changelog: My editor decided to add a CR to each line. Sorry about that.
31607           Committed again without the CRs.
31608         
31609 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
31610
31611         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
31612           getting it from the "this" socket instance. Did not work
31613           if the socket is a subclass of Socket.
31614           Also fixed bug #35371.
31615
31616 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
31617
31618         * metadata.c: fixed size for TypedByRef.
31619         * loader.c: when searching for a method, consider the vararg amrker.
31620         * unicode.c, decimal.c: constify some arrays.
31621
31622 2003-07-15  Dick Porter  <dick@ximian.com>
31623
31624         * socket-io.c: Fixed compilation for gcc < 3.2.
31625
31626         Fixed compilation for machines that don't have AF_INET6 (thanks to
31627         Bernie Solomon <bernard@ugsolutions.com> for that part.)
31628
31629         Fixed compile warnings.
31630         
31631         Fixed formatting and line endings.
31632
31633 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
31634
31635         * socket-io.h:
31636         * socket-io.c: Added IPv6 support.
31637
31638 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
31639
31640         * class.c (mono_class_is_assignable_from): New function to implement
31641         the is_assignable_from logic. Used by mono_object_isinst, 
31642         Type::IsAssignableFrom () and the interpreter.
31643
31644         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
31645         Object, even interfaces.
31646         
31647         * object.c (mono_object_isinst): Implement in terms of 
31648         is_assignable_from.
31649
31650         * icall.c (ves_icall_type_is_assignable_from): New icall.
31651
31652 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
31653
31654         * domain.c (foreach_domain): fix compiler warning.
31655
31656 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
31657
31658         * image.c (load_metadata_ptrs): use g_strndup because strndup is
31659         not available on all plattforms
31660
31661 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
31662
31663         * image.h image.c: Store the metadata version string in MonoImage.
31664         * icall.c: New icall to retrieve the image version.
31665         * reflection.c (create_dynamic_image): Fill in the image version field
31666         * reflection.c (build_compressed_metadata): Use the image version
31667         from the image structure.
31668
31669 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31670
31671         * appdomain.c: modified comment.
31672         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
31673         That will be its last iteration when mono_gc_cleanup is called from
31674         mono_runtime_cleanup and before the domain is unloaded.
31675
31676         Fixes bug #45962.
31677
31678 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
31679
31680         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
31681         attributes.
31682
31683 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31684
31685         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
31686         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
31687         Bernie Solomon <bernard@ugsolutions.com>.
31688
31689 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
31690
31691         * object.c, object.h: provide mono_object_new_fast() for faster
31692         allocation in some special cases.
31693
31694 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
31695
31696         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
31697         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
31698
31699 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
31700
31701         * threadpool.c: fix leaks.
31702
31703 2003-07-01  Dick Porter  <dick@ximian.com>
31704
31705         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
31706         using MonoGHashTables.  Fixes threadpool bug posted to list.
31707
31708 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31709
31710         * image.h, image.c: added support to load an assembly from a byte array.
31711         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
31712         assembly bundle support.
31713
31714 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
31715
31716         * threadpool.c (mono_thread_pool_add): keep a reference to the
31717         AsyncResult to prevent GC
31718
31719 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
31720
31721         * class.c: leak fix.
31722
31723 2003-06-25  Dick Porter  <dick@ximian.com>
31724
31725         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
31726         for the async object, the WaitHandle object will close the handle.
31727         Fixes bug 45321.
31728
31729 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
31730
31731         * class.c: in mono_array_class_get (), lookup from the hash with the
31732         same type we insert: this works around a bug in
31733         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
31734         lluis. The real fix will have to wait for after the release.
31735
31736 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
31737
31738         * icall.c: fix memory leak when getting type members.
31739
31740 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
31741
31742         * reflection.c: added more pubtoken special cases.
31743
31744 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
31745
31746         * class.c: handle field offset correctly when class size
31747         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
31748
31749 2003-06-20  Martin Baulig  <martin@ximian.com>
31750
31751         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
31752         *image' field.
31753
31754 2003-06-20  Martin Baulig  <martin@ximian.com>
31755
31756         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
31757
31758 2003-06-20  Martin Baulig  <martin@ximian.com>
31759
31760         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
31761         just distinguish between variables in registers and variables at
31762         an offset relative to a register.
31763
31764 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31765
31766         * icall.c: #ifdef out latest changes until mcs is fixed.
31767
31768 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
31769
31770         * icall.c: return members in metadata order.
31771
31772 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
31773
31774         * icall.c: avoid infinite loop in GetTimeZoneData.
31775
31776 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
31777
31778         * icall.c: added Marshal.Prelink/All icalls.
31779
31780 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
31781
31782         * object.c, object.h: fix warnings and do some overflow checking
31783         when creating arrays.
31784
31785 2003-06-17  Dick Porter  <dick@ximian.com>
31786
31787         * file-io.h:
31788         * file-io.c: File attributes need to be tweaked slightly when
31789         passed from the managed to the w32 world.
31790
31791 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
31792         * profiler.h profiler-private.h profiler.c: Rework last patch
31793         based on suggestion by Paolo.
31794         
31795 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
31796
31797         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
31798         instruction level coverage data collection.
31799         * profiler.h profiler.c (: Added new callback function which can be
31800         used by the profiler to limit which functions should have coverage
31801         instrumentation.
31802         * profiler.c (mono_profiler_load): Call g_module_build_path to
31803         generate the file name of the profiler library.
31804
31805 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
31806
31807         * profiler.c, profiler.h, profiler-private.h: added basic block 
31808         coverage profiling API.
31809
31810 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
31811
31812         * reflection.c (mono_reflection_create_runtime_class): Add support
31813         for events in dynamically generated code.
31814
31815         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
31816         not allocated.
31817
31818 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
31819
31820         * icall.c: when getting timezone info, return reasonable values if we
31821         can't get the actual data.
31822
31823 2003-06-14  Dick Porter  <dick@ximian.com>
31824
31825         * threads.c (start_wrapper): Remove the reference to the thread
31826         object in the TLS data, so the thread object can be finalized.
31827         This won't be reached if the thread threw an uncaught exception,
31828         so those thread handles will stay referenced :-( (This is due to
31829         missing support for scanning thread-specific data in the Boehm GC
31830         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
31831
31832 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
31833
31834         * reflection.c: ensure streams and tables are first allocated with
31835         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
31836
31837 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
31838
31839         * icall.c: fixed GetElementType for byrefs (bug# 44792).
31840
31841 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
31842
31843         * reflection.c (mono_reflection_create_runtime_class): Add support for
31844         properties to dynamically created classes.
31845         * reflection.c: Fix a few places where non-MonoObjects were inserted
31846         into the tokens hashtable.
31847
31848 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
31849
31850         * object.c: some support to handle out of memory exceptions.
31851
31852 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
31853
31854         * marshal.c (mono_marshal_get_native_wrapper): support reference
31855         return types
31856
31857 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
31858
31859         * object.h, object.c: more portability stuff from Bernie Solomon.
31860         Unexport mono_object_allocate(). Added mono_object_unbox ().
31861         Set exitcode when an unhandled exception is thrown.
31862
31863 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
31864
31865         * marshal.c (mono_marshal_get_native_wrapper): use custom
31866         marshaler for return types.
31867
31868 2003-06-10  Dick Porter  <dick@ximian.com>
31869
31870         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
31871         ip_mreq is available
31872
31873 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
31874
31875         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
31876         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
31877         by Bernie Solomon <bernard@ugsolutions.com>.
31878
31879 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
31880
31881         * gc.c (mono_gc_init): Avoid error message on shutdown when
31882         GC_DONT_GC=1 is used.
31883
31884         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
31885         New icall to return the GUID of a module.
31886
31887 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
31888
31889         * class.c: ensure instance size always includes the parent's size
31890         even whem class size is set explicitly (fixes bug#44294).
31891
31892 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
31893
31894         * profiler.h, profiler.c: made the simple profiler thread-safe,
31895         get more accurate timing info. Allow the loading of an
31896         externally-developed profiler module.
31897
31898 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
31899
31900         * marshal.c (mono_marshal_get_native_wrapper): improved
31901         class/byref arguments.
31902         (mono_marshal_get_native_wrapper): better string marshaling support.
31903
31904 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
31905
31906         * class.c: ensure .pack and .size are handled correctly and
31907         simplified layout of static fields.
31908
31909 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
31910
31911         * appdomain.c
31912         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
31913
31914         * loader.c (mono_lookup_pinvoke_call): look for modules in the
31915         current directory (fix bug 44008)
31916
31917 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
31918
31919         * marshal.c (mono_marshal_get_native_wrapper): started support for
31920         custom marshalers.
31921         (mono_delegate_to_ftnptr): consider marshalling specifications
31922
31923 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
31924
31925         * reflection.c, reflection.h: emit custom marshal info.
31926
31927 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31928
31929         * object.c: free the GError.
31930         * icall.c: added CloseEvent_internal.
31931         * threads.[ch]:
31932         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
31933         call.
31934
31935 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
31936
31937         * loader.c (mono_method_get_signature): Add support for dynamic
31938         assemblies.
31939
31940 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
31941
31942         * reflection.c: fixed bug #43905.
31943
31944 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
31945
31946         * class.c, domain.c, icall.c, metadata.h, object.h: support for
31947         handling TypedReference and ArgIterator.
31948         * loader.c, loader.h: added function to get signature at call site.
31949
31950 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
31951
31952         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
31953         data readonly. Buglets and warning fixes. Some MethodSpec support.
31954
31955 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
31956
31957         * class.h, class.c, object.c: remove relative numbering support.
31958
31959 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
31960
31961         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
31962         free the string, until we get a chance to fix Gtk#
31963
31964 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31965
31966         * marshal.c: revert last patch.
31967
31968 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
31969
31970         * icall.c: updates for new mono_class_vtable() not calling
31971         the type constructor anymore.
31972
31973 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
31974
31975         * object.h, object.c: separate vtable creation from type
31976         initialization. Make running the .cctor thread safe.
31977
31978 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
31979
31980         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
31981
31982 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
31983
31984         * loader.c (mono_get_method): consider calling convention
31985
31986 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
31987
31988         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
31989         to return the invisible global type for a module.
31990
31991         * reflection.c (mono_image_build_metadata): Emit global fields too.
31992
31993 2003-05-20  Peter Williams  <peterw@ximian.com>
31994
31995         * loader.c (mono_lookup_internal_call): Add a few newlines.
31996
31997 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
31998
31999         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32000         literal strings.
32001
32002         * appdomain.c (set_domain_search_path): Recalculate search path when
32003         AppDomainSetup.PrivateBinPath changes.
32004
32005         * object.c (mono_class_compute_gc_descriptor): It turns out some
32006         parts of the class libs (like System.Thread) holds pointers to
32007         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32008         to treat native int a pointer type here.
32009         
32010 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32011
32012         * appdomain.h, domain.c: add hashtable for jump target resolution.
32013
32014 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32015
32016         * reflection.h reflection.c icall.c: Added new icalls 
32017         GetManifestResourceInfoInternal, GetModulesInternal and support
32018         infrastructure.
32019
32020 2003-05-16  Dick Porter  <dick@ximian.com>
32021
32022         * icall.c:
32023         * file-io.h:
32024         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32025
32026 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32027
32028         * object.c: mono_store_remote_field: little fix to previous patch.
32029
32030 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32031
32032         * class.c: add constructors to array classes.
32033         * icall.c: special case array construction for InternalInvoke (),
32034
32035 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32036
32037         * class.h class.c reflection.c object.c: Added support for field
32038         defaults in dynamically generated classes.
32039
32040 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32041
32042         * reflection.c: properly encode charset for ddlimport.
32043
32044 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32045
32046         * threads.c: allow compiling without GC.
32047
32048 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32049
32050         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32051         handling of thread static data.
32052
32053 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32054
32055         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32056
32057 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32058
32059         * class.c (mono_array_class_get): always set the serializable flags
32060         (mono_array_class_get): always set the SEALED attribute for array types
32061
32062 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32063
32064         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32065         attributes (fix for bug 42021).
32066
32067 2003-05-12  Dick Porter  <dick@ximian.com>
32068
32069         * gc.c: Don't run finalizers when the finalizer thread is
32070         finishing up, because the default domain has already been
32071         destroyed.
32072
32073 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32074
32075         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32076         value is null, we should throw an exception.   This is slightly
32077         different than the other conventions used for the constructor.
32078
32079 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32080
32081         * socket-io.c: fixed windows build.
32082
32083 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32084
32085         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32086
32087 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32088
32089         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32090         compilers.
32091
32092 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32093
32094         * class.c (mono_class_layout_fields): Add experimental GC aware
32095         auto layout facility. Requires class library changes to work correctly.
32096
32097         (mono_class_setup_vtable): Avoid overriding explicit interface
32098         method implementations. Fixes iface3.exe test.
32099
32100         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32101         object reference.
32102         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32103         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32104
32105         * metadata.h: Add new type classification macro which determines
32106         whenever the type holds an object reference.
32107
32108 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32109
32110         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32111
32112 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32113
32114         * gc.c (finalizer_thread): Work around a GC bug.
32115
32116 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32117
32118         * marshal.c (emit_struct_conv): allow unions
32119
32120         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32121
32122 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32123
32124         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32125
32126 2003-05-06  Martin Baulig  <martin@ximian.com>
32127
32128         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32129
32130 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32131
32132         * socket-io.c:
32133         (Select_internal): allow NULLs, don't create arrays if not needed.
32134         Coupled with Socket.cs changes.
32135
32136         * threadpool.c:
32137         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32138         register a finalizer for it that will close the semaphore handle. This
32139         fixes the leak and make Lupus' test run with > 4080 loops.
32140
32141 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32142
32143         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32144         Jerome Laban (bug #42287)
32145
32146 2003-05-02  Martin Baulig  <martin@ximian.com>
32147
32148         * debug-mono-symfile.h
32149         (MonoSymbolFile): Moved declaration into mono-debug.h.
32150         (MonoDebugMethodJitInfo): Likewise.
32151         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32152         argument.
32153         (_mono_debug_address_from_il_offset): Take a
32154         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32155
32156         * mono-debug.h
32157         (MonoDebugDomainData): New struct.
32158         (mono_debug_get_domain_data): New function.
32159         (mono_debug_add_method): Take an additional `MonoDomain *'
32160         argument.
32161         (mono_debug_source_location_from_address): Likewise.
32162         (mono_debug_il_offset_from_address): Likewise.
32163         (mono_debug_address_from_il_offset): Likewise.
32164
32165 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32166
32167         * reflection.c: one more check for null type in custom attrs.
32168
32169 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32170
32171         * reflection.c: avoid warning (comparison is always false due to limited
32172         range of data type).
32173
32174 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32175
32176         * icall.c: throw an exception in Type.GetField if the argument 'name'
32177         is NULL.
32178
32179 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32180
32181         * reflection.c: fixed handling of enums in named arguments to custom
32182         attributes (bug #42123).
32183
32184 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32185
32186         * reflection.c: use the right array element type and handle
32187         a null for a Type argument, too.
32188
32189 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32190
32191         * reflection.c: handle arrays as arguments to custom attributes.
32192
32193 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32194
32195         * reflection.c: handle a string value in a custom attr
32196         ctor that takes an object.
32197
32198 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32199
32200         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32201         (fix bug #42063)
32202
32203 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32204
32205         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32206
32207 2003-04-27  Martin Baulig  <martin@ximian.com>
32208
32209         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32210         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32211         MONO_DEBUGGER_EVENT_BREAKPOINT.
32212         (mono_breakpoint_trampoline_code): Removed.
32213         (mono_debugger_event_handler): The last argument is now a
32214         `guint32'.
32215         (mono_debugger_insert_breakpoint_full): Removed the
32216         `use_trampoline' argument.
32217         (mono_debugger_method_has_breakpoint): Likewise.
32218         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32219         mono_debugger_breakpoint_callback(); take the method and
32220         breakpoint number as arguments.
32221
32222 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32223
32224         * metadata.c: fix off by one when loading parameters attributes.
32225
32226 2003-04-24  Martin Baulig  <martin@ximian.com>
32227
32228         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32229
32230 2003-04-24  Martin Baulig  <martin@ximian.com>
32231
32232         * mono-debug-debugger.c: Moved all code which interacts with the
32233         Mono Debugger here.
32234
32235         * debug-mono-symfile.c: This code now just deals with the symbol
32236         file itself, the debugger code is now in mono-debug-debugger.c.
32237
32238 2003-04-23  Martin Baulig  <martin@ximian.com>
32239
32240         * mono-debug.c (mono_debug_source_location_from_il_offset):
32241         New method; like mono_debug_source_location_from_address(), but
32242         takes an IL offset instead of a machine address.
32243
32244 2003-04-23  Martin Baulig  <martin@ximian.com>
32245
32246         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32247         `line' field; this is now computed by the debugger.
32248
32249 2003-04-23  Martin Baulig  <martin@ximian.com>
32250
32251         * mono-debug.[ch]: New files.  This is the new debugging interface.
32252
32253         * mono-debug-debugger.[ch]: New files.  Moved all code which
32254         interacts with the Mono Debugger here.
32255
32256 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32257
32258         * domain.c (mono_init): initialize mono_defaults.monitor_class
32259
32260 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32261
32262         * reflection.c (method_encode_code): Add a spicy exception to help
32263         future compiler authors.
32264
32265 2003-04-21  Martin Baulig  <martin@ximian.com>
32266
32267         * icall.c
32268         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32269         Make this work with relative pathnames; g_filename_to_uri() needs
32270         an absolute filename.
32271
32272 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32273
32274         * icall.c: Track name changes in Object and ValueType.
32275
32276 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32277
32278         * metadata.c (mono_type_stack_size): size should be a multiple of
32279         sizeof (gpointer)
32280
32281 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32282
32283         * gc.c:
32284         (internal_domain_finalize): moved into mono_domain_finalize. No need
32285         to create another thread because the finalizers will be run in the
32286         finalizer thread.
32287         
32288         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32289         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32290         to be run (MS does this too).
32291
32292 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32293
32294         * object.c (mono_class_compute_gc_descriptor): Update comment.
32295
32296         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32297
32298         * image.h: Add synchronized wrapper cache.
32299
32300         * image.c (do_mono_image_open): Initialize cache.
32301
32302         * reflection.c (create_dynamic_mono_image): Initialize cache.
32303
32304 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32305
32306         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32307         ves_icall_System_Buffer_ByteLengthInternal.
32308
32309 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32310
32311         * reflection.c: setup klass->nested_in earlier. Allow
32312         a dash in the assembly name.
32313
32314 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32315
32316         * metadata.c (mono_type_to_unmanaged): dont access
32317         type->data.klass for MONO_TYPE_OBJECT
32318         (mono_type_to_unmanaged): consider System.Delegate class
32319
32320 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32321
32322         * class.c: just setup supertypes in the proper place instead of
32323         initializing the full element class for arrays.
32324
32325 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32326
32327         * class.c: ensure the element class of arrays is initialized.
32328         Setup the supertype info for array classes, too.
32329
32330 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32331
32332         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32333
32334 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32335
32336         * Makefile.am: re-added -m option when running cygpath. This way,
32337         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32338         separator.
32339         * mono-config.c: same codepath for locating mono config file for WIN32
32340         and the rest.
32341         * assembly.c: if mono_assembly_setrootdir is called, don't override
32342         the value set.
32343
32344 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32345
32346         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32347         MONO_ASSEMBLIES variable.
32348
32349 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32350
32351         * icall.c: added Assembly::GetNamespaces() icall.
32352
32353 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32354
32355         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32356
32357 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
32358
32359         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
32360         * object.c: fixed bug in the construction of vtable for proxies
32361
32362 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
32363
32364         * object.c (mono_array_new): Mark mono_array_new as an icall.
32365
32366 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32367
32368         * class.c: fixed test for public method when overriding interfaces.
32369         Closes bug #40970.
32370
32371 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32372
32373         * appdomain.h, domain.c: added mono_domain_foreach() to
32374         be able to access the currently loaded appdomains.
32375         * object.c: make string interning work across sppdomains.
32376         Mark some functions for use as icalls.
32377
32378 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
32379
32380         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
32381
32382         * reflection.h reflection.c: Allocate long living data using 
32383         GC_MALLOC_ATOMIC so the collector does not need to scan it.
32384
32385         * reflection.c: Double the allocation size in streams instead of
32386         increasing it, to prevent unneccesary copying on large assemblies.
32387         
32388         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
32389         creation if the assembly does not have the Run flag set.
32390
32391 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
32392
32393         * class.h: avoid the C++ keywords in header files (Jerome Laban
32394         spotted and fixed this).
32395
32396 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32397
32398         * object.c:
32399         (mono_unhandled_exception): fill in the arguments for the
32400         UnhandledException event. Only trigger that event for the default
32401         domain (as MS does).
32402
32403 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
32404
32405         * object.c: Improve typed allocation stuff based on suggestions from
32406         Paolo. Also turn it on if the GC library supports it.
32407
32408 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32409
32410         * object.c object.h class.h: Added experimental typed allocation
32411         facility using the interfaces in gc_gcj.h.
32412
32413         * os/gc_wrapper.h: Added new include files.
32414         
32415 2003-04-03  Martin Baulig  <martin@ximian.com>
32416
32417         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
32418         which is not yet enabled by default.
32419
32420         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
32421         functions.
32422         (mono_gc_lock, mono_gc_unlock): New static functions.
32423
32424         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
32425         functions; stop/start the world for the garbage collector.  This
32426         is using the windows API; we need to complete the SuspendThread()/
32427         ResumeThread() implementation in the io-layer to make this work on Unix.
32428         (mono_gc_push_all_stacks): New public function; tells the garbage
32429         collector about the stack pointers from all managed threads.
32430
32431 2003-04-03  Martin Baulig  <martin@ximian.com>
32432
32433         * object.h (MonoThread): Added `gpointer stack_ptr'.
32434
32435         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
32436
32437 2003-04-03  Martin Baulig  <martin@ximian.com>
32438
32439         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
32440
32441 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
32442
32443         * reflection.c (typebuilder_setup_fields): Initialize field.first and
32444         field.last.
32445
32446 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
32447
32448         * loader.c (mono_lookup_internal_call): Report the corlib that is
32449         out of sync.
32450
32451 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
32452
32453         * icall.c (ves_icall_type_GetTypeCode): fixed check for
32454         System.DBNull (it's class not valuetype).
32455
32456 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32457
32458         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
32459         if the array method was already assigned a token (fixes bug#40646).
32460
32461 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
32462
32463         * reflection.c (mono_reflection_get_type): Attempt type resolve even
32464         if no assembly is given.
32465
32466 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
32467
32468         * metadata.h: Added the new tables.
32469
32470         * row-indexes.h: Added definitions for new tables.
32471
32472         * metadata.c: Add schemas for new tables, and add support for
32473         computing the sizes of them.
32474
32475         * class.c: Update for handling the new type cases.
32476
32477 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
32478
32479         * metadata.h (MONO_TYPE_IS_VOID): new macro
32480
32481 2003-03-31  Martin Baulig  <martin@ximian.com>
32482
32483         * threads.h (MonoThreadCallbacks): Added `thread_created'.
32484
32485         * threads.c (mono_thread_new_init): Call `thread_created' in the
32486         mono_thread_callbacks.
32487
32488 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
32489
32490         * loader.h: added marshalbyrefobject_class to mono_defaults
32491         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
32492         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
32493           generation of output parameters.
32494           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
32495         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
32496           contextbound and the target object belongs to the context of the caller.
32497         * object.h: added context and unwrapped_server variables in MonoRealProxy.
32498         * object.c: Implemented support for interfaces and abstract classes
32499           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
32500           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
32501
32502 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
32503
32504         * class.h class.c (mono_class_is_subclass_of): New function.
32505         
32506         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
32507         routines for most common case (calls from ArrayList::ToArray).
32508
32509         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
32510         routine so programs which call Environment::Exit() can be profiled.
32511
32512         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
32513         Added MONO_ARCH_SAVE_REGS.
32514
32515         * icall.c (ves_icall_type_is_subtype_of): Use new function.
32516
32517 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
32518
32519         * blob.h: Add a couple of new MonoType types definitions.
32520
32521         * tabledefs.h: Add a couple of new call convs.
32522
32523 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
32524
32525         * reflection.h (MonoReflectionDynamicAssembly): track changes in
32526         the layout of the class.
32527
32528         * reflection.c (alloc_table): double the size on overflow to avoid
32529         unnecessary copying.
32530
32531         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
32532         avoid filling out metadata tables and blobs. Also set mb->ilgen to
32533         null so it can be garbage collected.
32534         
32535 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
32536
32537         * reflection.c (mono_reflection_get_type): Return the resolved type
32538         only if it is in the assembly we searched.
32539
32540         * reflection.c (ensure_runtime_vtable): Initialize method slots.
32541
32542         * class.c (mono_class_setup_vtable): Set the slot of the overriding
32543         method.
32544
32545 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32546
32547         * appdomain.c:
32548         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
32549         the right one is 'file:///blah', but MS allows it.
32550         * assembly.c:
32551         (mono_assembly_open): allow 'file://blah'
32552
32553         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
32554
32555 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
32556
32557         * socket-io.c: fixes bug #40310.
32558
32559 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
32560
32561         * reflection.c (mono_reflection_parse_type): handle deeply nested
32562         types correctly.
32563
32564         * reflection.c (mono_image_create_token): Use unique token values
32565         since they will be put into a hash table.
32566
32567         * class.c (mono_class_setup_vtable): If a method occurs in more than
32568         one place in the vtable, and it gets overriden, then change the
32569         other occurances too.
32570
32571         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
32572         object as return type.
32573
32574 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32575
32576         * icall.c: Deleted "ToString" implementation for double and float
32577         because they are full implemented in managed code.
32578
32579 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
32580
32581         * reflection.c, reflection.h: implemented and exported functions
32582         to retrieve info about custom attributes.
32583
32584 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32585
32586         * appdomain.c: moved Uri handling to assembly.c
32587         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
32588         work when using a file Uri in *nix and windows.
32589
32590         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
32591         GetReferencedAssemblies.
32592
32593 2003-03-18  Dick Porter  <dick@ximian.com>
32594
32595         * icall.c: Rename a couple of internal calls
32596
32597         * threads.c: Set the thread state to Stopped when a thread exits.
32598         Fixes bug 39377.
32599
32600 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
32601
32602         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
32603         New icall.
32604
32605         * object.c (mono_class_vtable): fix warning.
32606
32607 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
32608
32609         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
32610
32611         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
32612         memory.
32613         (method_encode_clauses): Create exception info structures in the right
32614         order.
32615         (mono_reflection_setup_internal_class): Initialize supertypes field.
32616
32617         * class.c object.c: Handle interfaces which implement other interfaces 
32618         correctly.
32619
32620         * class.h class.c: Move the supertypes array initialization code into 
32621         a separate function so it can be used for dynamic types too. Also call
32622         it earlier, in mono_class_init(), since it can be used before the
32623         type is initialized.
32624
32625 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32626
32627         * Makefile.am:
32628         * assembly.c:
32629         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
32630
32631         * appdomain.c:
32632         * appdomain.h:
32633         * marshal.c:
32634         * object.c: remove warnings.
32635
32636 2003-03-13  Martin Baulig  <martin@ximian.com>
32637
32638         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
32639         (MonoDebugLexicalBlockEntry): New types.
32640
32641         * debug-mono-symfile.c
32642         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
32643
32644 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32645
32646         * process.c: ret can be any non-zero value accroding to MS doc.
32647
32648 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
32649
32650         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
32651         fixing a warning for a miss-used prototype, would have cause
32652         random memory corruption.
32653
32654 2003-03-07  Martin Baulig  <martin@ximian.com>
32655
32656         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
32657         getting really annoying ....
32658
32659 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
32660
32661         * reflection.c (fixup_method): added support for array methods.
32662
32663 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
32664
32665         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
32666         (pointed out by Michael Adams).
32667
32668 2003-03-04  Dick Porter  <dick@ximian.com>
32669
32670         * icall.c: Temporarily reverted the Double and Single ToString()
32671         change, because it broke nunit.
32672
32673 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
32674
32675         * object.h, threads.h: make include files compatible with C++
32676         (patch by Jerome Laban <jlaban@wanadoo.fr>).
32677
32678 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32679
32680         * icall.c: Erased ToString helper functions for Double and Single.
32681         Now, that implementations ar all in managed code (Double and Single
32682         Formatters).
32683
32684 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
32685
32686         * appdomain.c: Added method for initializing the default context of
32687         a domain. Added internal call for getting the default context.
32688         * appdomain.h: Added context variable in MonoDomain struct.
32689         * domain.c: mono_domain_set also sets the default context of the domain
32690         * icall.c: Mapped internal method InternalGetDefaultContext.
32691         * object.c: mono_object_get_virtual_method returns always a remoting
32692         wrapper if the object is a transparent proxy.
32693         mono_runtime_invoke_array: when creating an object by calling the
32694         constructor, if the created object is a proxy, then the constructor should
32695         be called using the a remoting wrapper.
32696
32697 2003-03-03  Dick Porter  <dick@ximian.com>
32698
32699         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
32700         variable so it compiles on solaris.  Problem spotted by
32701         Christopher Taylor <ct@cs.clemson.edu>
32702
32703 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32704
32705         * appdomain.c:
32706         (get_info_from_assembly_name): don't leak value.
32707
32708         * icall.c:
32709         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
32710         result.
32711
32712 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
32713
32714         * assembly.c: export mono_image_load_references ().
32715         * class.c: handle function pointers. mono_class_from_name() now
32716         supports nested type names directly.
32717
32718 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
32719
32720         * reflection.h reflection.c: Encode already created dynamic methods 
32721         and fields correctly as a DEF instead of a REF.
32722
32723         * reflection.c: Get rid of the force_ref argument to 
32724         mono_image_typedef_or_ref since it was wrong in the first place.
32725
32726         * string-icalls.c: add error checking to string constructors according
32727         to the MSDN docs.
32728
32729         * reflection.c: Emit types in the order their TypeBuilders were 
32730         created. Previously, a new table index was assigned to each type before
32731         the tables were emitted. This was wrong because the signature blob
32732         might already refer to a type by its original table index.
32733
32734 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
32735
32736         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
32737         change.
32738         
32739 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32740
32741         * Makefile.am: make assemblies dir have \ instead of / on windows.
32742
32743 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
32744
32745         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
32746         iterate over the NESTEDCLASS table using a linear search since the
32747         table is not guaranteed to be sorted by the secondary key.
32748
32749         * class.c (mono_class_create_from_typedef): fixed up call to
32750         mono_metadata_nesting_typedef.
32751         
32752 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
32753
32754         * marshal.c (mono_string_to_byvalstr): clear the memory as
32755         suggested by Jerome Laban <jlaban@wanadoo.fr>
32756
32757 2003-02-26  Dick Porter  <dick@ximian.com>
32758
32759         * process.c: Cope with padding in .rsrc blocks
32760
32761 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
32762
32763         * metadata.h: reverted the filter_len change, it breaks reflection
32764         
32765 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
32766
32767         * metadata.h: added a new field to store the filter_len
32768         
32769
32770 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
32771
32772         * reflection.c: handle custom attributes for types and members
32773         created with Reflection.Emit (bug#38422).
32774
32775 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
32776
32777         * reflection.c: define RTSpecialName automatically for constructors for
32778         compatibility with MS.NET.
32779
32780         * reflection.c (mono_reflection_create_runtime_class): initialize
32781         nested_in field of dynamically created classes.
32782
32783 2003-02-22  Martin Baulig  <martin@ximian.com>
32784
32785         * debug-mono-symfile.h: Incremented version number.
32786
32787 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
32788
32789         * object.h icall.c process.c: fix warnings.
32790
32791 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
32792
32793         * appdomain.h appdomain.c:
32794         (mono_domain_try_type_resolve): split the 
32795         name_or_tb argument into a name and a tb argument.
32796         (mono_domain_has_type_resolve): new function to check whenever the
32797         application has registered a TypeResolve event handler.
32798         
32799         * icall.c reflection.h reflection.c: move the type resolve logic into
32800         mono_reflection_get_type () so it will be invoked when 
32801         Assembly::GetType () is called.
32802
32803         * reflection.c:
32804         (mono_reflection_get_type): renamed to get_type_internal.
32805         (mono_reflection_get_type): fixed type name generation so it works 
32806         for nested types too.
32807         (mono_reflection_get_type): call has_type_resolve () to avoid the 
32808         costly type name generation if there is no resolve event handler.
32809
32810 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
32811
32812         * class.c, image.c: load exported types from file references.
32813
32814 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
32815
32816         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
32817           used to cache the managed methods used to create proxies and make 
32818           remote invocation of methods.
32819         * class.h: Added in MonoVTable a flag to indicate that a class needs 
32820           to be remotely created.
32821         * object.c: Modified the method mono_class_vtable(). It now initializes 
32822           the remote flag of the vtable. Modified mono_object_new_specific(), 
32823           so now it checks the remote flag.
32824         * icall.c: Added a couple of internal methods, one for enabling instance 
32825           creation interception for a type, and one for creating objects bypassing
32826           the remote check.
32827
32828 2003-02-18  Martin Baulig  <martin@ximian.com>
32829
32830         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
32831         New interncall to get a method's metadata token.
32832
32833         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
32834         New interncall for the debugger.
32835
32836 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
32837
32838         * class.c (mono_class_setup_vtable): allocate supertype array
32839
32840 2003-02-18  Martin Baulig  <martin@ximian.com>
32841
32842         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
32843
32844 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32845
32846         * reflection.c:
32847         (assembly_name_to_aname): jump over unknown properties (i've found
32848         something like: 'type, assembly, version=xxx, custom=null, public...',
32849         so now will ignore custom=null and still get the rest of the values).
32850
32851 2003-02-17  Dick Porter  <dick@ximian.com>
32852
32853         * threads.c: Have Thread.Start() wait for a semaphore to signal
32854         that the thread has set up all its local data.  This fixes bug
32855         34323, where Abort() raced the new thread's TLS data.
32856
32857         Also removes the handle_store() call from start_wrapper, because
32858         threads are now always created suspended and there is no longer a
32859         race between the parent and child threads to store the info.
32860
32861 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
32862
32863         * image.c: explain the #- heap issue in a message, hopefully
32864         avoiding FAQs on mono-list.
32865
32866 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32867
32868         * icall.c:
32869         (GetEntryAssembly): if the domain has not invoked
32870         AppDomain.ExecuteAssembly yet, return the assembly of the default
32871         AppDomain.
32872
32873 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
32874
32875         * class.c (mono_ldtoken): make it work in dynamic assemblies.
32876
32877 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
32878
32879         * metadata.c, reflection.c: simple speedup to type hash
32880         and equals code.
32881
32882 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
32883
32884         * image.c, image.h, class.c, assembly.c: move module loading
32885         to MonoImage. When loading metadata, consider alignemnet from
32886         the start of metadata, not from the metadata address in memory.
32887
32888 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
32889
32890         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
32891         AssemblyBuilder objects. Factored out custom attribute creation into
32892         a separate function.
32893         (create_custom_attr): new function to create custom attributes.
32894
32895 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
32896
32897         * Makefile.am: Got tired of typing the full pathname to pedump.
32898         Until there is another option, am installing this.
32899
32900 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
32901
32902         * class.c (class_compute_field_layout): always set field->parent 
32903         (mono_ldtoken): use mono_defaults.fieldhandle_class;
32904
32905 2003-02-11  Dick Porter  <dick@ximian.com>
32906
32907         * threads-types.h:
32908         * monitor.c: Rewrote Monitor, making lock much faster and
32909         Pulse/Wait work as specified.  Also uses much fewer handles, and only
32910         creates them as needed.
32911
32912         * exception.c: Added SynchronizationLockException
32913
32914         * threads.c: Deleted old Monitor implementation.  The new one is
32915         in a new file.
32916
32917 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
32918
32919         * class.c: handled TypedReference type code. Set the correct size for
32920         class data. Setup interface_offsets for interface classes, too.
32921
32922 2003-02-09  Martin Baulig  <martin@ximian.com>
32923
32924         * debug-mono-symfile.h: Reflect latest symbol writer changes.
32925
32926 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
32927
32928         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
32929         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
32930         * object.c: fixed mono_object_get_virtual_method () for interfaces.
32931         * verify.c: check for code that runs after the end of the method.
32932
32933 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
32934
32935         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
32936         "System.Math::Round2".
32937         * sysmath.h: Added Floor, Round and Round2 definitions.
32938         * sysmath.c: Modified certain functions that were not 100% compliant
32939         with MS.NET (math precision) and added the implementation of Floor,
32940         Round and Round2.
32941
32942 2003-02-07  Martin Baulig  <martin@ximian.com>
32943
32944         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
32945
32946 2003-02-07  Martin Baulig  <martin@ximian.com>
32947
32948         * debug-mono-symfile.c: Reflected latest symwriter changes.
32949         (mono_debug_create_mono_symbol_file): Removed.
32950         (mono_debug_open_mono_symbol_file): Take an argument which
32951         specifies whether to create a dynamic symbol file.
32952
32953 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
32954
32955         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
32956
32957 2003-02-05  Martin Baulig  <martin@ximian.com>
32958
32959         * reflection.c (mono_image_build_metadata): Make this public,
32960         protect it against being called multiple times, don't create
32961         resources and don't build the compressed metadata here.
32962         (mono_image_create_pefile): Do this here.
32963
32964         * icall.c
32965         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
32966
32967 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32968
32969         * socket-io.c: fixed bug #36322.
32970
32971 2003-02-06  Piers Haken <piersh@friskit.com>
32972
32973         * appdomain.[ch]:
32974         * class.h:
32975         * debug-mono-symfile.c:
32976         * icall.c:
32977         * loader.c:
32978         * mono-config.c:
32979         * monosn.c:
32980         * reflection.c:
32981         * socket-io.c: warning cleanups
32982
32983 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
32984
32985         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
32986         function. works like remoting invoke, but does a check for the Proxy first.
32987
32988 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
32989
32990         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
32991
32992 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
32993
32994         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
32995         array of pointers.
32996         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
32997         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
32998
32999         * object.c (mono_store_remote_field_new): used by the new jit
33000         instead of mono_store_remote_field
33001         (mono_load_remote_field_new): used by the new jit
33002         instead of mono_load_remote_field
33003
33004 2003-02-05  Patrik Torstensson
33005
33006         * appdomain.c: changed unload to take the domain id instead
33007         of domain
33008         
33009         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33010
33011
33012 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33013
33014         * appdomain.c: don't look for assemblies in ApplicationBase if
33015         PrivateBinPathProbe is set.
33016
33017 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33018
33019         * object.c: make the first argument in main_args contain the absolute
33020         path to the assembly. Fixes bug #37511.
33021
33022 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33023
33024         * icall.c: get correct UTC offset for countries not using daylight
33025         time saving. Fixes bug #30030.
33026
33027 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33028
33029         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33030         and 1 are the family).
33031
33032 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33033
33034         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33035
33036         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33037
33038 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33039
33040         * reflection.c: added support for SignatureHelper tokens, which is
33041         needed by the Calli opcode.
33042
33043         * reflection.h: track changes to SignatureHelper class.
33044
33045         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33046
33047 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33048
33049         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33050
33051 2003-02-03  Patrik Torstensson
33052         * appdomain.[c|h], domain.c : 
33053          - Added support for getting a domain via domain id
33054          - Support for setting and getting domain from System.AppDomain 
33055            (used in cross appdomain channel)
33056          - Added support for get/set for a MonoAppContext on a thread 
33057            (Context class in System.Runtime.Remoting.Contexts),
33058          - Removed hack in Get/SetData and ExecuteAssembly.
33059         
33060         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33061         the managed world to get control when a proxy is created.
33062
33063         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33064         
33065 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33066
33067         * icall.c
33068         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33069         Populate the codebase field as well.
33070
33071 2003-02-02  Martin Baulig  <martin@ximian.com>
33072
33073         * debug-mono-symfile.c
33074         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33075         (mono_debug_symfile_add_method): Allow interncalls.
33076
33077 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33078
33079         * icall.c: throw parse exception if strtod fails or the string is empty.
33080
33081 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33082
33083         * marshal.c: handle object type separately from defined
33084         class types.
33085
33086 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33087
33088         * marshal.c: handle NATIVE_LPSTR for strings when it's
33089         explicitly specified.
33090
33091 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33092
33093         * reflection.c, reflection.h, icall.c: setup the reflection
33094         handle cache for ModuleBuilders and AssemblyBuilders.
33095
33096 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33097
33098         * reflection.c (reflection_methodbuilder_to_mono_method): set
33099         pinvoke flag
33100
33101 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33102
33103         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33104
33105 2003-01-29  Dick Porter  <dick@ximian.com>
33106
33107         * threads.c: No need for the fake_thread kludge now that Thread
33108         doesn't run a class constructor
33109         
33110 2003-01-29  Dick Porter  <dick@ximian.com>
33111
33112         * threads.c: Use g_direct_hash instead of the rather bogus
33113         g_int_hash
33114
33115 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33116
33117         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33118         (fix pinvoke12.exe)
33119         (mono_marshal_get_struct_to_ptr): generate valid IL code
33120         (mono_marshal_get_ptr_to_struct): generate valid IL code
33121         (*): correctly set sig->pinvoke, we need to memdup the signature
33122         to do that
33123
33124 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33125
33126         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33127         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33128
33129 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33130
33131         * profiler.c: provide more callers information.
33132
33133 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33134
33135         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33136
33137         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33138
33139         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33140
33141 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33142
33143         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33144         exception instead of going into an infinite loop on dates which it 
33145         can't yet handle.
33146
33147         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33148         out-of-range exception if needed.
33149
33150         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33151         an implementation for an interface method and to override an inherited
33152         method at the same time. 
33153         Imagine a scenario when a virtual method is used to override a
33154         virtual abstract method in a parent class, and this same method 
33155         provides an implementation for an method inherited from an interface. 
33156         In this case, the interface resolution code will set im->slot, which 
33157         means that the virtual method override pass will skip this method 
33158         which means a pointer to the abstract method inherited from the parent
33159         will remain in the vtable of this non-abstract class.
33160
33161         * class.c: (mono_class_setup_vtable): continue search for a real 
33162         method if only an abstract method is found.     
33163
33164 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33165
33166         * reflection.c: add size to encoding for ByValStr and ByValArray
33167         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33168
33169 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33170
33171         * class.c (mono_class_setup_vtable): pass the override info as an
33172         argument.
33173
33174         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33175         correctly.
33176         
33177         * reflection.c (ensure_runtime_vtable); add support for method 
33178         overrides.
33179         
33180 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33181
33182         * reflection.c (resolution_scope_from_image): Hack to work to work with
33183         dynamic assemblies.
33184
33185         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33186         added a 'force_ref' argument to force this function to allways return 
33187         a TypeRef. This is needed by mono_image_get_memberref_token ().
33188         
33189 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33190
33191         * reflection.c (mono_image_get_type_info): interfaces really don't have
33192         a parent.
33193
33194         * reflection.c (mono_image_basic_init): fill out missing fields of
33195         image structure.
33196
33197         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33198         dynamic assemblies. This is required so dynamic assemblies show up in
33199         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33200         Type::GetType() etc. This is consistent with MS behaviour.
33201
33202         * image.c image.h reflection.c: add newly created classes to the name 
33203         cache so mono_class_get () will find them.      
33204
33205 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33206
33207         First part of changes to get IKVM.NET running under mono.
33208         
33209         * appdomain.h, appdomain.c: added new function 
33210         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33211         This function will call AppDomain::DoTypeResolve to do the actual work.
33212
33213         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33214         moved existing code dealing with dynamic tokens to a new function 
33215         called mono_reflection_lookup_dynamic_token (). This function will 
33216         raise TypeResolve events when appropriate. Since reflection.c is not 
33217         part of libmetadata, a new hook function called 
33218         mono_lookup_dynamic_token() is added to class.c which will call this.
33219
33220         * assembly.h assembly.c: make the invoke_load_hook function public,
33221         so it can be called for dynamic assemblies.
33222
33223         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33224
33225         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33226         type isn't found.
33227
33228         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33229         MonoGHashTable, since it contains pointers to objects which the GC 
33230         needs to track.
33231
33232         * assembly.c (search_loaded): remove unused variable.
33233         
33234 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33235
33236         * object.c: fixed issue exposed by gcc-generated IL programs
33237         that use RVA data for pointers.
33238
33239 2003-01-25  Martin Baulig  <martin@ximian.com>
33240
33241         * threads.c (start_wrapper): Moved the initialization of
33242         `start_func' above the mono_new_thread_init() call to which we
33243         pass it as argument.
33244
33245 2003-01-24  Martin Baulig  <martin@ximian.com>
33246
33247         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33248         the MonoThread pointer.
33249
33250 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33251
33252         * icall.c: Rename `PowImpl' to Pow.
33253
33254 2003-01-23  Dick Porter  <dick@ximian.com>
33255
33256         * threads.c (start_wrapper): Create a Thread object if needed, so
33257         the Main() thread can do the class initialisation in a subthread
33258         that has been set up to allow managed code execution.
33259
33260         Pass the thread ID instead of the MonoThread pointer to the thread
33261         start and attach callbacks.  This change is required, because the
33262         jit thread start callback must be called _before_ the Thread
33263         object can be created.
33264         
33265         (mono_thread_init): Removed much object creation code that is no
33266         longer needed.  No managed code is called from here now.
33267
33268         * object.c (mono_runtime_exec_managed_code): Create a subthread
33269         for Main, and call back to the runtime to use it.
33270         Set the exit code when Main exits.
33271
33272         * gc.c: Make sure domain finalisation happens in a subthread.
33273         Re-enable threaded GC, fixing bug 31333 (again).
33274
33275         * environment.c: System.Environment internall calls (so far just
33276         ExitCode is here, the others are still in icall.c)
33277
33278         * appdomain.c (mono_runtime_cleanup): All threads running managed
33279         code should have finished before mono_runtime_cleanup() is
33280         reached, so no need to clean up threads.
33281
33282 2003-01-22  Martin Baulig  <martin@ximian.com>
33283
33284         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33285         `gpointer func' arguments.      
33286         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33287         but added `MonoThread *thread' argument.
33288         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33289
33290         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33291         and pass it to the mono_thread_start_cb callback.
33292         (mono_install_thread_callbacks): New public function to install a
33293         set of callbacks which are set by the debugger.
33294         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33295
33296 2003-01-22  Martin Baulig  <martin@ximian.com>
33297
33298         * Makefile.am: Install debug-mono-symfile.h.
33299
33300 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33301
33302         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33303
33304 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33305
33306         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33307         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33308         (mono_array_class_get): correctly set access levels of arrays
33309
33310 2003-01-20      Patrik Torstensson
33311         * image.h (MonoAssemblyName): changed major, minor, build, revision
33312         from signed to unsigned.
33313
33314 2003-01-20  sean kasun <skasun@azstarnet.com>
33315
33316         * reflection.c (load_cattr_value): Now this handles
33317         MONO_TYPE_SZARRAY.  Fixes bug #35629
33318
33319 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33320
33321         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33322         integer value
33323
33324 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33325
33326         * decimal.c: fixed bug #26056.
33327
33328 2003-01-17  Martin Baulig  <martin@ximian.com>
33329
33330         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33331
33332 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33333
33334         * exception.[ch]:
33335         (mono_get_exception_type_initialization): new function.
33336
33337         * object.c: throw a TypeInitializationException when an exception is
33338         thrown invoking the class constructor.
33339
33340 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33341
33342         * reflection.c: fixed attribute reading.
33343
33344 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33345
33346         * icall.c:
33347         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33348         provided, look for the type in the calling assembly and then in
33349         mscorlib; if the assembly name is provided, only try that one.
33350
33351 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33352
33353         * object.c: register the vtable before there is a chance it's
33354         queried again recursively.
33355
33356 2003-01-13  Duncan Mak  <duncan@ximian.com>
33357
33358         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
33359         gc-internal.h. 
33360         
33361 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
33362
33363         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
33364
33365 2003-01-11  Martin Baulig  <martin@ximian.com>
33366
33367         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
33368         this to 20 for the release.
33369
33370 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
33371
33372         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
33373
33374         * loader.c (mono_method_get_marshal_info): bug fix
33375
33376         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
33377         structures with explicit layout
33378
33379 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33380
33381         * profiler.c: made the output more readable (and sorted). 
33382         Added caller information for the allocation profiler.
33383
33384 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
33385
33386         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
33387
33388 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33389
33390         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
33391         to get value types.
33392         
33393 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
33394
33395         * object.c, profiler.h, profiler.c, profiler-private.h:
33396         Added object allocation profiler.
33397
33398 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
33399
33400         * reflection.h, reflection.c: handle global methods.
33401         Compress blob entries.
33402
33403 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
33404
33405         * marshal.c: fix compilation.
33406
33407 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
33408
33409         * loader.c (mono_method_get_marshal_info): impl.
33410
33411         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
33412
33413 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33414
33415         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
33416         for reference types.
33417
33418 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
33419
33420         * loader.c: fixed off by one error in loaded parameter names.
33421
33422 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
33423
33424         * marshal.c (mono_marshal_get_icall_wrapper): like
33425         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
33426         instead of a MonoMethod.
33427
33428 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33429
33430         * decimal.c: fixed bug #36537.
33431
33432 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
33433
33434         * marshal.c: throw a missing method exception if a
33435         P/Invoke method is not found.
33436
33437 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
33438
33439         * icall.c: allow a null this for constructors.
33440
33441 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
33442
33443         * icall.c: raise the proper exceptions if the arguments to the
33444         internal Invoke are incorrect.
33445
33446 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
33447
33448         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
33449
33450 2003-01-03  Martin Baulig  <martin@ximian.com>
33451
33452         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33453
33454 2002-12-31  Martin Baulig  <martin@ximian.com>
33455
33456         * debug-mono-symfile.c: Completely rewrote the type section.
33457         Instead of using individual malloc()ed fields, we use one big
33458         continuous memory area and offsets into this area.
33459         See the comments in the source code for details.
33460
33461 2002-12-30  Martin Baulig  <martin@ximian.com>
33462
33463         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
33464
33465 2002-12-30  Martin Baulig  <martin@ximian.com>
33466
33467         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
33468         line number table in this data blob instead of using an external
33469         pointer.
33470
33471 2002-12-28  Martin Baulig  <martin@ximian.com>
33472
33473         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
33474
33475 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
33476
33477         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
33478         as a boxed return type.
33479
33480 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
33481
33482         * appdomain.c
33483         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
33484         g_build_filename to properly get separators on the filename created.
33485
33486         * object.h: Small change, introduce MonoMarshalByRefObject to
33487         track the layout of that structure in the C# universe as we make
33488         changes there.
33489
33490 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
33491
33492         * object.c: removed assert to allow static fields on interfaces.
33493         * loader.c: a TypeSpec may be used for any type, not just arrays.
33494
33495 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33496
33497         * class.c, class.h: added mono_class_array_element_size ().
33498         Ignore static methods in interfaces.
33499
33500 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33501
33502         * threads.c: fixed the build under cygwin.
33503
33504 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33505
33506         * reflection.c: handle nullref constants. Allocate keys for
33507         reflection handles with the GC.
33508
33509 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33510
33511         * threads.c, threads.h: added mono_thread_get_abort_signal()
33512         to get a suitable signal for thread abort.
33513
33514 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
33515
33516         * metadata.c: fix handling of ExportedType table.
33517
33518 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33519
33520         * icall.c: added WriteWindowsDebugString internal call.
33521
33522 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33523
33524         * reflection.h: added fields to match C# implementation.
33525
33526 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33527
33528         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
33529
33530 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
33531
33532         * gc.h, gc-internal.h: Rename header for GC internal calls to
33533         gc-internal.h from gc.h as to not clash with Boehm GC having its
33534         header installed as <gc.h> in outside include paths.
33535         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
33536         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
33537
33538 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33539
33540         * icall.c: assign minor, build and revision in FillName.
33541
33542 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
33543
33544         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
33545         Added support for running code generated by Reflection.Emit.
33546
33547 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33548
33549         * appdomain.c: check for NULL argument in LoadFrom.
33550
33551 2002-12-10  Dick Porter  <dick@ximian.com>
33552
33553         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
33554
33555 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33556
33557         * appdomain.c: fix buglet when building exe file name.  Handle full
33558         assembly name (needed after latest changes to AssemblyName).
33559         * image.c:
33560         (mono_image_close): free some hashtables.
33561
33562 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
33563
33564         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
33565         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
33566         on some systems (redhat 7.3) 
33567
33568 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
33569
33570         * threads.c: delete the critical section of a sync block,
33571         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
33572
33573 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
33574
33575         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
33576
33577 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33578
33579         * appdomain.[ch]: handle the assembly preload event to try loading the
33580         assemblies using the paths we have in the current domain.
33581
33582         * assembly.[ch]: created an assembly preload hook that is called to try
33583         loading the assembly by other means that the ones provided here.
33584
33585         * domain.c: initialize the domain search path.
33586
33587         From now on, assemblies (TODO: except corlib and System) are loaded
33588         according to these rules when using mono_assembly_load ():
33589
33590                 1. It tries to load the assembly from the ApplicationBase
33591                 of the current domain appending .dll and .exe (TODO: have to
33592                 try loading from name/name.dll and name/name.exe).
33593
33594                 2. It tries the search path specified in PrivateBinPath for the
33595                 current domain (if any).
33596
33597                 3. Previous behavior.
33598
33599 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
33600
33601         * icall.c: implemented GetInterfaceMap() related icall.
33602         * domain.c, loader.h: load MethodInfo in mono_defaults.
33603
33604 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
33605
33606         * gc.c: disable the finalizer thread for now, untill all the issues
33607         with it are resolved.
33608
33609 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33610
33611         * string-icalls.c: handle embedded nulls in string ctor when the
33612         length is specified.
33613
33614 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
33615
33616         * class.c: look for explicit interface implementation in parent
33617         classes, too.
33618
33619 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
33620
33621         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
33622
33623 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
33624
33625         * gc.c: protect handles with a critical section.
33626
33627 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33628
33629         * icall.c:
33630         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
33631         parameters. If no assembly specified, try getting the type from all
33632         the assemblies in the current domain, else, load the assembly and get
33633         the type from it.
33634
33635 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33636
33637         * marshal.c: applied patch from Aleksey Demakov that fixes
33638         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
33639
33640 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33641
33642         * icall.c: fixed get_location.
33643
33644 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
33645
33646         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
33647         declarations to make it work with older gcc. 
33648
33649         * loader.c (mono_get_method): set signature->pinvoke for native calls
33650
33651 2002-11-20  Dick Porter  <dick@ximian.com>
33652
33653         * threads.c (mono_thread_init): Set the main thread's handle
33654
33655 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
33656
33657         * gc.c: allow compilation without GC support. Changed to match the
33658         mono coding style.
33659
33660 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
33661
33662         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
33663
33664 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
33665
33666         * reflection.c: set a public key token on the core assemblies.
33667
33668 2002-11-18  Dick Porter  <dick@ximian.com>
33669
33670         * threads.c: Split out some thread initialisation so that other
33671         files can set the start callback function.
33672
33673         * gc.c: Run finalisers in a separate thread, to avoid stack
33674         overflow.  Fixes bug 31333.
33675
33676         * appdomain.c: Set up GC finalisation thread.
33677
33678         * reflection.c: 
33679         * object.c: 
33680         * domain.c: Use gc.h macros for GC_malloc
33681         
33682 2002-11-15  Dick Porter  <dick@ximian.com>
33683
33684         * threadpool.c: 
33685         * threads.c:
33686         * appdomain.c: Removed mono_runtime_init_with_attach(),
33687         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
33688         merging the extra parameter with the existing function.  Removed
33689         unneeded code in mono_thread_attach().
33690
33691 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
33692
33693         * image.c (mono_image_loaded_by_guid): a method to get loaded
33694         images by guid. 
33695         (load_metadata_ptrs): we store the guid as string.
33696
33697 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
33698
33699         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
33700
33701         * metadata.c (mono_guid_to_string): imported method form Zoltan
33702         Varga (slightly modified)
33703
33704         * assembly.c (mono_assembly_open): load precompiled code
33705
33706         * loader.h (MonoMethod): we store the method token for use in the
33707         aot compiler. 
33708
33709 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33710
33711         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
33712         the hook function called when an assembly is loaded.
33713         
33714         * domain.c: Modified file.
33715         (mono_domain_assembly_load): removed hash table insertion of assemblies.
33716
33717         Fixes bug #33196.
33718
33719 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
33720
33721         * reflection.c: Map PEFileKind to the value expected by the WinNT
33722         image loader. 
33723
33724 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33725
33726         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
33727         Read until the buffer is filled completely.
33728
33729 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33730
33731         * icall.c: implemented MonoType.InternalGetEvent ().
33732
33733 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33734
33735         * appdomain.c: implemented InitAppDomainSetup. Delayed
33736         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
33737         the entry_assembly.
33738
33739         * assembly.c: base_dir is now an absolute path ending with
33740         G_DIR_SEPARATOR.
33741
33742         * icall.c: modified get_location according to the above changes.
33743
33744         * object.c: init AppDomain.SetupInformation for the default domain after
33745         we have the entry assembly.
33746
33747         * domain.c: when unloading a domain, setup = NULL.
33748
33749 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
33750
33751         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
33752
33753 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
33754
33755         * object.h, object.c: introduced mono_object_get_virtual_method ()
33756         to lookup the method invoked on an object when a callvirt is done on
33757         a method.
33758         * icall.c: make MethodInfo::Invoke() always do a virtual call.
33759
33760 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33761
33762         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
33763         current domain when loaded an assembly and failed to load it.
33764
33765         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
33766
33767 2002-10-31  Dick Porter  <dick@ximian.com>
33768
33769         * icall.c: 
33770         * file-io.h: 
33771         * file-io.c: Return the error status in a parameter, as the
33772         GetLastError() value has long since been blown away if we try and
33773         look it up in a subsequent internal call invocation.  Delete the
33774         GetLastError() internal call, because it's useless.
33775
33776 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
33777
33778         * class.[ch]: added cast_class to fix bug 29517
33779
33780 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
33781
33782         * marshal.c: create valid IL code in the filter clause:
33783         the new JIT is less forgiving:-)
33784
33785 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33786
33787         * icall.c: removed get_property internal call.
33788
33789 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
33790
33791         * appdomain.h domain.c: Added an ID to appdomains.
33792         
33793         * threads.c threads.h icall.c: Implement icall
33794         Thread:GetDomainID(), and remove unused icall 
33795         CurrentThreadDomain_internal.
33796
33797 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33798
33799         * icall.c: Don't recurse through the base types in GetConstructor.
33800         Fixes bug #32063. 
33801
33802 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
33803
33804         * mempool.h, mempool.c: added mono_mempool_empty() and
33805         mono_mempool_stats().
33806
33807 2002-10-23  Dick Porter  <dick@ximian.com>
33808
33809         * file-io.c: 
33810         * file-io.h: 
33811         * icall.c: Added MonoIO.GetFileType internal call
33812
33813 2002-10-17  Dick Porter  <dick@ximian.com>
33814
33815         * appdomain.c (mono_runtime_cleanup): Don't signal the async
33816         delegate semaphore before waiting for all threads to finish,
33817         because new threads can also call async delegates.  Fixes bug
33818         32004.
33819
33820         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
33821         of 3 seconds, in case another async job is queued.  (This part is
33822         needed because the bug fix reintroduced the 3s exit lag.)  This
33823         makes the mono_runtime_shutdown flag superfluous.
33824
33825 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
33826
33827         * reflection.c: include ehader size in method section headers.
33828         Really check for suplicated modules entries.
33829
33830 2002-10-17  Martin Baulig  <martin@gnome.org>
33831
33832         * debug-mono-symfile.c: Added back support for locals.
33833
33834 2002-10-14  Martin Baulig  <martin@gnome.org>
33835
33836         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
33837         MONO_TYPE_VOID.
33838
33839 2002-10-14  Martin Baulig  <martin@gnome.org>
33840
33841         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
33842         mono_class_get() instead of looking in the class cache. 
33843
33844 2002-10-13  Martin Baulig  <martin@gnome.org>
33845
33846         * debug-mono-symfile.c: Set version number to 28, include the
33847         signature in method names.
33848
33849 2002-10-13  Martin Baulig  <martin@gnome.org>
33850
33851         * debug-mono-symfile.h: Set version number to 27.
33852
33853 2002-10-11  Martin Baulig  <martin@gnome.org>
33854
33855         * gc.c: Don't register/unregister NULL pointers as disappearing links.
33856
33857 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
33858
33859         * metadata.c, metadata.h: added helper function to allocate signatures.
33860
33861 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33862
33863         * icall.c: added internal call to get the location of machine.config.
33864
33865 2002-10-08  Martin Baulig  <martin@gnome.org>
33866
33867         * debug-mono-symfile.c: Ignore classes with a pending init for the
33868         moment.
33869
33870 2002-10-03  Dick Porter  <dick@ximian.com>
33871
33872         * threads.c: Freebsd pthread_t is a pointer
33873
33874 2002-10-03  Dick Porter  <dick@ximian.com>
33875
33876         * socket-io.c: Implemented GetHostName_internal
33877
33878 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33879
33880         * mono-config.c:
33881         (mono_config_parse_file): don't leak the text.
33882
33883 2002-10-02  Martin Baulig  <martin@gnome.org>
33884
33885         * debug-mono-symfile.c: Added support for methods.
33886
33887 2002-10-01  Martin Baulig  <martin@gnome.org>
33888
33889         * debug-mono-symfile.c: Don't emit methods and line numbers for
33890         the dynamic symbol file, just write the type table.  We can easily
33891         have an external helper program which creates a symbol file for an
33892         IL file.        
33893
33894 2002-10-01  Dick Porter  <dick@ximian.com>
33895
33896         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
33897         Only add the handle to the cleanup array when we're about to
33898         launch the thread.  Bug 31425 deadlocked when the test was run on
33899         mono under w32.
33900
33901 2002-10-01  Martin Baulig  <martin@gnome.org>
33902
33903         * debug-mono-symfile.c: Added support for properties.
33904
33905 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
33906
33907         * reflection.c: unaligned store fix from Mark Crichton
33908         <crichton@gimp.org>.
33909
33910 2002-09-27  Martin Baulig  <martin@gnome.org>
33911
33912         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
33913         New interncall.
33914
33915 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
33916
33917         * assembly.h, assembly.c: use a sane API to hook into the assembly
33918         loading process instead of a useless special-purpouse hack
33919         (ngen needs a hook, too, for example).
33920
33921 2002-09-27  Dick Porter  <dick@ximian.com>
33922
33923         * threads.c (mono_thread_init): Call GetCurrentProcess() so
33924         io-layer can set up some process handle info.  Not needed on w32,
33925         but doesn't hurt either.
33926
33927         * process.c: Pass the program name in the second parameter to
33928         CreateProcess, so the path is searched.  Include the working
33929         directory. Implemented process name, process enumeration, and some
33930         process detail internal calls.
33931         
33932         * icall.c: Added internal calls for process lookup, and some
33933         process details
33934
33935 2002-09-26  Martin Baulig  <martin@gnome.org>
33936
33937         * assembly.c (mono_install_open_assembly_hook): New global
33938         function to install a function to be invoked each time a new
33939         assembly is loaded.
33940         (mono_assembly_open): Run this callback function if set.
33941
33942         * debug-mono-symfile.c: Put back line numbers for the dynamic
33943         symbol file and also record the .il file as source file.  This
33944         allows us to install the temporary symbol file as `file.dbg' just
33945         like a compiler-generated one.
33946
33947 2002-09-26  Nick Zigarovich <nick@chemlab.org>
33948
33949         * Corrected typo in gc.c (BOHEM vs BOEHM).
33950
33951 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33952
33953         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
33954         GetProperties. Also avoid calling g_slist_length in GetProperties and
33955         GetMethods.
33956
33957 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
33958
33959         * reflection.c: avoid unaligned stores (bug spotted by
33960         Mark Crichton  <crichton@gimp.org>).
33961
33962 2002-09-25  Martin Baulig  <martin@gnome.org>
33963
33964         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
33965         instead of guint64 for addresses and added prologue/epilogue info.
33966
33967 2002-09-25  Martin Baulig  <martin@gnome.org>
33968
33969         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
33970         store line number info.  For the dynamic symbol file, we only need
33971         to provide the JIT generated dynamic line number info for the dynamic
33972         symbol file.
33973
33974 2002-09-25  Martin Baulig  <martin@gnome.org>
33975
33976         * debug-mono-symfile.h: Incremented version number.
33977
33978 2002-09-24  Martin Baulig  <martin@gnome.org>
33979
33980         * class.c (mono_debugger_class_init_func): New global function
33981         pointer variable.
33982         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
33983         call it.
33984
33985         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
33986         function.  This is called via the mono_debugger_class_init_func
33987         hook to add all types to the dynamic type table.
33988         (ves_icall_MonoDebugger_GetType): New interncall to get a class
33989         from its metadata token.
33990
33991         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
33992         New interncall for the debugger.
33993
33994 2002-09-24  Nick Drochak <ndrochak@gol.com>
33995
33996         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
33997         before using it in case it is null.
33998         
33999 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34000
34001         * metadata.c: allow custom modifiers in local var signatures
34002         (bug spotted by Zoltan Varga).
34003
34004 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34005
34006         * class.c: deal with the <Module> class that may have a NULL vtable.
34007         Eliminate warnings.
34008
34009 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34010
34011         * image.c, image.h: more strong name helpers.
34012         * monosn.c: more work: convert pem keys to cryptoapi format.
34013
34014 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34015
34016         * string-icalls.c: speedup IndexOf.
34017
34018 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34019
34020         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34021
34022 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34023
34024         * icall.c: cleanup: use mono_object_domain ().
34025
34026 2002-09-23  Martin Baulig  <martin@gnome.org>
34027
34028         * debug-mono-symfile.c: Improved type support.
34029
34030 2002-09-22  Martin Baulig  <martin@gnome.org>
34031
34032         * debug-mono-symfile.c: Added support for reference types and strings.
34033
34034 2002-09-22  Martin Baulig  <martin@gnome.org>
34035
34036         * debug-mono-symfile.c: Started to work on the type table.
34037
34038 2002-09-21  Martin Baulig  <martin@gnome.org>
34039
34040         * debug-mono-symfile.c: Largely reworked the symbol table format.
34041         The symbol table is now incrementally updated each time a new
34042         method is added.  We're now also using our own magic and version
34043         so that you don't need to recompile all your classes if the
34044         dynamic table changes.
34045         (mono_debug_update_mono_symbol_file): Removed.
34046         (mono_debug_symfile_add_method): New function to add a method.
34047
34048 2002-09-21  Martin Baulig  <martin@gnome.org>
34049
34050         * icall.c
34051         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34052         New interncall.
34053
34054         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34055         New interncall to get a method from its metadata token.
34056
34057 2002-09-21  Martin Baulig  <martin@gnome.org>
34058
34059         * debug-mono-symfile.c: Create type table.
34060
34061 2002-09-20  Martin Baulig  <martin@gnome.org>
34062
34063         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34064
34065 2002-09-20  Martin Baulig  <martin@gnome.org>
34066
34067         * debug-mono-symfile.c: Provide information about params and locals.
34068
34069 2002-09-20  Martin Baulig  <martin@gnome.org>
34070
34071         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34072         New interncall.
34073
34074         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34075         interncall to get a method from its metadata token.
34076
34077 2002-09-20  Martin Baulig  <martin@gnome.org>
34078
34079         * debug-mono-symfile.c: Added a few checks for method->header
34080         being non-NULL.  This should never happen, but for the moment
34081         let's use a g_warning() rather than a g_assert().
34082
34083 2002-09-19  Mark Crichton  <crichton@gimp.org>
34084
34085         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34086         even if support for it isn't present.  Added an #ifdef to fix this.
34087
34088         * socket-io.c: Added checks back for Solaris support.
34089
34090 2002-09-19  Martin Baulig  <martin@gnome.org>
34091
34092         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34093         changes in the symbol file format.
34094
34095 2002-09-18  Martin Baulig  <martin@gnome.org>
34096
34097         * debug-mono-symfile.c: Set version number to 21.
34098
34099 2002-09-18  Dick Porter  <dick@ximian.com>
34100
34101         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34102         on netbsd.  Fixes bug 30051.
34103
34104 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34105
34106         * reflection.c:
34107         (set_version_from_string): little fix.
34108
34109 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34110
34111         * monosn.c, Makefile.am: added strong name utility.
34112         * reflection.h, reflection.c: implemented delayed signing,
34113         locale, version and hash id assembly attributes.
34114
34115 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34116
34117         * loader.c, metadata.c: load param attributes in signatures.
34118
34119 2002-09-16  Martin Baulig  <martin@gnome.org>
34120
34121         * debug-mono-symfile.c: Added string table with all method names.
34122
34123 2002-09-14  Martin Baulig  <martin@gnome.org>
34124
34125         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34126         fast method lookup.
34127
34128 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34129
34130         * reflection.c: record the public key token of referenced assemblies.
34131
34132 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34133
34134         * image.c, image.h: added functions to get the strong name and the
34135         public key of an assembly.
34136         * pedump.c: use them.
34137
34138 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34139
34140         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34141
34142 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34143
34144         * marshal.c (mono_marshal_get_managed_wrapper): Added
34145         MONO_TYPE_BOOLEAN 
34146
34147 2002-09-11  Martin Baulig  <martin@gnome.org>
34148
34149         * gc.c: Call GC_unregister_disappearing_link() on all links when
34150         finalizing them, this is necessary to aviod a crash in boehm's
34151         finalize handler.
34152
34153 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34154
34155         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34156         nick@chemlab.org.
34157
34158 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34159
34160         * icall.c: implemented MonoType::Module.
34161         * reflection.c, reflection.h: mono_module_get_object () from
34162         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34163
34164 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34165
34166         * icall.c: ignore overridden methods in GetMethods ().
34167         Fix for FieldInfo::SetValue().
34168         * object.c: handle float/double in runtime invoke.
34169
34170 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34171
34172         * object.c: allow a constructor to be called again on an object.
34173
34174 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34175
34176         * class.h, class.c: move field layout code to it's own function and
34177         export it. Get an interface id earlier. Move fields in MonoClass
34178         so they are more cache friendly and align the bitfields.
34179         * loader.c: temporary handle get_param_names() for a runtime method.
34180         * reflection.c, reflection.h: more code to handle runtime creation of
34181         types.
34182
34183 2002-09-09  Martin Baulig  <martin@gnome.org>
34184
34185         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34186         signature with the pinvoke field being set for the actual call.
34187
34188 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34189
34190         * icall.c: removed some unused icalls. Start of map of glib charsets
34191         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34192
34193 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34194
34195         * debug-helpers.c: break infinite loop (found and fixed by
34196         Holger Arnold <harnold@gmx.de>).
34197
34198 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34199
34200         * icall.c: target may be null in create_delegate.
34201
34202 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34203
34204         * marshal.c: handle a boolean return type.
34205
34206 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34207
34208         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34209
34210 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34211
34212         * gc.c: fix weakreferences.
34213
34214 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34215
34216         * icall.c: added icall to get default codepage.
34217
34218 2002-09-03  Dick Porter  <dick@ximian.com>
34219
34220         * threads.h: 
34221         * threads.c: Use MonoThread instead of MonoObject where
34222         apropriate.
34223
34224         Store running thread objects in a hash table, so that we have all
34225         the info to hand when waiting for them to finish
34226         (means we don't need OpenThread() any more, so mingw builds should
34227         be fully functional again.)
34228
34229         * verify.c:
34230         * object.h: Added thread ID to MonoThread
34231
34232 2002-09-03  Martin Baulig  <martin@gnome.org>
34233
34234         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34235
34236 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34237
34238         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34239
34240 2002-09-03  Martin Baulig  <martin@gnome.org>
34241
34242         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34243         argument to store the end address of the disassembled instruction.
34244
34245         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34246         here from debug-symfile.h.
34247         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34248         JIT into this struct.
34249         (MonoSymbolFile): Added `char *image_file' field.
34250         (MonoDebugGetMethodFunc): Removed.
34251         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34252         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34253         (mono_debug_find_method): New method.
34254
34255         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34256         create a full symbol file.
34257         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34258         and static symbol files.
34259         (mono_debug_find_method): The symbol file keeps an internal method hash,
34260         call this to get a MonoDebugMethodInfo from a MonoMethod.
34261
34262         * debug-symfile.[ch]: Removed.
34263
34264 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34265
34266         * image.c (do_mono_image_open): Remove linker version check.
34267
34268 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34269
34270         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34271         wrappers for instance methods.
34272         
34273 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34274
34275         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34276
34277 2002-08-28  Dick Porter  <dick@ximian.com>
34278
34279         * Makefile.am: Export HOST_CC for w32 builds
34280
34281 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34282
34283         * file-io.c process.c: MonoString are null terminated, no
34284         need for mono_string_to_utf16() anymore.
34285
34286 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34287
34288         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34289
34290 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34291
34292         * icall.c, reflection.h: speedup System.MonoType.
34293
34294 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34295
34296         * reflection.c: allow null as the value of a string argument in
34297         custom attributes constructors.
34298
34299 2002-08-27  Martin Baulig  <martin@gnome.org>
34300
34301         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34302         `trampoline_address' field.
34303
34304 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34305
34306         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34307         check (fixes bug #29486) 
34308
34309 2002-08-27  Martin Baulig  <martin@gnome.org>
34310
34311         * debug-mono-symfile.c: Changed the file format in a way that allows us
34312         open it read-only and to use a specially malloced area for all the
34313         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34314         debugging IL code and there is no MCS generated symbol file for it.
34315
34316 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34317
34318         * object.c: added a define for a good string and array
34319         creation speedup (not enabled by default because we need to deal with
34320         the synch stuff).
34321
34322 2002-08-26  Martin Baulig  <martin@gnome.org>
34323
34324         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34325         function to create a dynamic symbol file.  This is used by the
34326         debugger to create a symbol file for IL code on-the-fly.
34327
34328 2002-08-26  Martin Baulig  <martin@gnome.org>
34329
34330         * loader.c (mono_lookup_pinvoke_call): Include the error message
34331         from g_module_error() in the error message.
34332
34333 2002-08-24  Martin Baulig  <martin@gnome.org>
34334
34335         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34336         function to update the symbol file.  The symbol file is mmap()ed
34337         writable, but private.  This allows us to install the symbol file
34338         together with the assembly.
34339
34340 2002-08-24  Martin Baulig  <martin@gnome.org>
34341
34342         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34343         but they can read the new symbol file format which mcs is now creating.
34344
34345         * debug-symfile.c (mono_debug_find_source_location): Moved to
34346         debug-mono-symfile.c; this is now operating on the new symbol file.
34347
34348 2002-08-23  Martin Baulig  <martin@gnome.org>
34349
34350         * debug-helpers.c (mono_method_desc_from_method): New function to get
34351         a MonoMethodDesc from a MonoMethod.
34352
34353 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34354
34355         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34356         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
34357
34358 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
34359
34360         * string-icalls.[ch]: make helper methods static.
34361
34362 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34363
34364         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
34365         types to it and to SetValueInternal.
34366
34367         * object.c: Moved handle_enum label to its proper place. This was the
34368         f... bug! ;-)
34369
34370         This time i compiled mcs and gtk-sharp and they both work.
34371
34372 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34373
34374         * icall.c: reverted partially my previous patch until 
34375         object.c:set_value handles enums correcly.
34376
34377 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34378
34379         * icall.c:
34380         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
34381         (ves_icall_System_Environment_get_MachineName): removed warning when
34382         compiling under cygwin.
34383
34384 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34385
34386         * object.c: fixed field_get_value() for reference types.
34387
34388 2002-08-22  Dick Porter  <dick@ximian.com>
34389
34390         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
34391         Don't free a buffer while it's still needed.  Patch from Jonathan
34392         Liger <Jonathan.liger@wanadoo.fr>
34393
34394 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
34395
34396         * icall.c (ves_icall_System_Environment_get_Platform): Add new
34397         internal call.
34398
34399 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
34400
34401         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
34402         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
34403
34404         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
34405         we call unmanaged code which throws exceptions.
34406
34407 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34408
34409         * appdomain.h: added per-domain entry_assembly.
34410         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
34411         arguments.
34412         * icall.c: Assembly::GetEntryAssembly icall.
34413         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
34414         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
34415
34416 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34417
34418         * appdomain.h, gc.c: added mono_domain_finalize ().
34419
34420 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34421
34422         * object.c:
34423         (mono_print_unhandled_exception): changed g_warning by g_printerr
34424         because g_log has a 1024 characters limit (yeah, i got a big stack
34425         trace). Don't print exception name, that should be in ToString 
34426         returned string.
34427
34428 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34429
34430         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
34431         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
34432
34433 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34434
34435         * object.c:
34436         (mono_print_unhandled_exception): after previous commit, i realized
34437         that MS calls ToString on the exception. I changed this function to
34438         do that. This way we get stack_trace for free.
34439
34440 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34441
34442         * object.c:
34443         (mono_print_unhandled_exception): invoke Message property instead of
34444         getting 'message' field from Exception. Don't allocate memory for
34445         'trace' and 'message' if not needed.
34446
34447 2002-08-18  Dick Porter  <dick@ximian.com>
34448
34449         * unicode.c: Fix asserts to match Encoder.cs checks
34450
34451 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34452
34453         * marshal.c: fix unaligned store issue and a few wrong
34454         opcode argument types.
34455
34456 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34457
34458         * icall.c: added GetUninitializedObjectInternal internal call.
34459
34460 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
34461
34462         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
34463         to the right domain.
34464
34465 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
34466
34467         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
34468
34469         * class.c (class_compute_field_layout): set blittable to false for Strings
34470
34471         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
34472
34473 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34474
34475         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
34476         first chunk of code to create types at runtime. Code to
34477         handle ReflectedType/DeclaringType. Make reflection handles
34478         domain specific.
34479
34480 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
34481
34482         * class.c: set correct name in arrays.
34483
34484 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
34485
34486         * appdomain.c (mono_domain_transfer_object): make it work with
34487         valuetypes. bug fixes.
34488
34489 2002-08-12  Dick Porter  <dick@ximian.com>
34490
34491         * object.h: Rename some parameters to avoid c++ keywords (Patch
34492         from Joseph Wenninger <kde@jowenn.at>)
34493
34494 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
34495
34496         * icall.c: added icall to implement Assembly.GetFile*.
34497
34498 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34499
34500         * reflection.h, reflection.c: code to embed managed resources.
34501
34502 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34503
34504         * class.c: move all the type size stuff into
34505         class_compute_field_layout().
34506
34507 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34508
34509         * class.c: ensure enums have always the correct instance size.
34510         * unicode.c: remove wrong assert.
34511
34512 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
34513
34514         * assembly.c: fix mem corruption issue.
34515         * image.h, image.c: added mono_image_get_resource () to access
34516         managed resources.
34517         * icall.c: implemented Assembly.EntryPoint property and some
34518         Managed Resources related internalcalls.
34519
34520
34521 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34522
34523         * image.c, image.h: impemented mono_image_get_entry_point ().
34524         * appdomain.c: use mono_image_get_entry_point.
34525
34526 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34527
34528         * reflection.c: support the object type argument when loading
34529         custom attributes.
34530
34531 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
34532
34533         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
34534         String as return type.
34535
34536 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
34537
34538         * reflection.c: fix encoding of named args for custom attrs to match
34539         the ms implementation. Read them back when instantiating custom
34540         attributes.
34541
34542 2002-08-02  Radek Doulik  <rodo@ximian.com>
34543
34544         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
34545         by Dietmar as quick fix
34546         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
34547         16 as stack size, used on more places as quick fix before Dietmar
34548         will fix it properly
34549
34550 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34551
34552         * object.h, object.c: added accessors for fields and properties.
34553
34554 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
34555
34556         * class.c, class.h: made mono_class_get_field_from_name ()
34557         loop on parent types.
34558         Added mono_class_get_property_from_name ().
34559
34560 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34561
34562         * class.c, class.h: move the code to setup the type vtable in its own
34563         function so that it can be reused also for types created at runtime.
34564         Eliminate the "class" identifier from the header file.
34565         * reflection.c: setup the vtable for enums so that we can create
34566         objects for use in SetConstant ().
34567
34568 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
34569
34570         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
34571         instead of the delegate itself as this pointer (bug #28383)
34572
34573 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
34574
34575         * marshal.c (mono_marshal_get_managed_wrapper): added return type
34576         conversions.
34577
34578 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34579
34580         * loader.c: don't set the pinvoke bit on icalls.
34581
34582 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
34583
34584         * debug-helpers.c (mono_method_full_name): only print a number to
34585         indicate wrapper type (so that the output is more readable in traces).
34586
34587 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
34588
34589         * class.c (mono_class_init): include method override patch from Paolo
34590
34591 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
34592
34593         * icall.c: fixed GetTypeCode().
34594
34595 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
34596
34597         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
34598         use real delegate invoke function to make it work with multicast
34599         delegates (fix bug# 28291).
34600
34601 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
34602
34603         * object.c: load constant strings.
34604
34605 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
34606
34607         * reflection.c: no magic numbers.
34608         * tabledefs.h: security action enum.
34609
34610 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
34611
34612         * assembly.c: fix possible memory corruption.
34613
34614 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34615
34616         * reflection.h, reflection.c: added support for linking resources.
34617         * verify.c: check we have an updated corlib.
34618
34619 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
34620
34621         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
34622         string arrays.
34623         (mono_marshal_string_array): null terminate unmanaged string arrays.
34624         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
34625
34626 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
34627
34628         * icall.c: Type.GetType () can now return also types from the
34629         calling assembly.
34630
34631 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
34632
34633         * loader.h, loader.c: stack walking support.
34634         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
34635         GetCallingAssembly.
34636
34637 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
34638
34639         * marshal.c: added optimisations for blittable types 
34640
34641         * class.c (mono_array_class_get): do not set blittable attribute on arrays
34642         (mono_class_setup_mono_type): set blittable attribute for single
34643         and double.
34644
34645         * marshal.c (mono_string_utf8_to_builder): impl.
34646         (mono_string_builder_to_utf8): impl.
34647         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
34648
34649 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
34650
34651         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
34652         (mono_marshal_get_managed_wrapper): impl. byref types
34653
34654 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34655
34656         * icall.c:
34657         (search_method): don't display debug message. 
34658
34659 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
34660
34661         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
34662
34663 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
34664
34665         * appdomain.c: set the missing filename when throwing exception.
34666
34667 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
34668
34669         * metadata.c (mono_type_size): code cleanup
34670         (mono_type_stack_size): removed some test code
34671
34672 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
34673
34674         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
34675         mono_get_exception_file_not_found now.
34676
34677         * exception.c (mono_exception_from_name_two_strings): New version
34678         that will call a constructor with two string arguments. 
34679         (mono_get_exception_file_not_found): New helper routine, used to
34680         report file-not-found errors.
34681
34682 2002-07-20  Dick Porter  <dick@ximian.com>
34683
34684         * process.h:
34685         * process.c: Pass file handles to CreateProcess
34686         
34687         * icall.c:
34688         * file-io.h:
34689         * file-io.c: Implemented CreatePipe
34690
34691 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
34692
34693         * metadata.c (mono_get_param_info): set alignment for value types
34694
34695 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34696
34697         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
34698         Constify mono_domain_assembly_open().
34699         * loader.c: handle null namespace in icalls.
34700
34701 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
34702
34703         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
34704         (emit_str_to_ptr_conv): marshal object as structs
34705
34706         * metadata.c (mono_type_to_unmanaged): marshal object as structs
34707
34708         * marshal.c (mono_marshal_get_runtime_invoke): support value types
34709
34710 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
34711
34712         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
34713         (mono_marshal_get_native_wrapper): we an now return value types
34714
34715 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34716
34717         * verify.c: more checks implemented.
34718
34719 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
34720
34721         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
34722         (fix bug #27695)
34723         (mono_marshal_get_native_wrapper): allow byref arguments
34724         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
34725         impl. PtrToStringXXX methods
34726         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
34727         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
34728         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
34729         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
34730         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
34731
34732 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34733
34734         * reflection.c: fix buglet in parsing an assembly name.
34735
34736 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
34737
34738         * marshal.c (emit_ptr_to_str_conv): first impl.
34739
34740 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
34741
34742         * object.c, class.h: cache the vtable in the class as suggested by
34743         vargaz@freemail.hu (Zoltan Varga).
34744
34745 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
34746
34747         * class.h, loader.c: added mono_field_from_token().
34748         * verify.c: first cut of type checking code.
34749
34750 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
34751
34752         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
34753
34754 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
34755
34756         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
34757         (fix bug #27782)
34758         (mono_marshal_get_remoting_invoke): impl.
34759         (mono_delegate_begin_invoke): impl.
34760         (mono_mb_emit_save_args): impl.
34761         (mono_delegate_end_invoke): impl.
34762         (mono_marshal_get_delegate_begin_invoke):
34763         (mono_marshal_get_delegate_end_invoke):
34764         (mono_marshal_get_delegate_invoke): generate a special name for
34765         those methods (including the signature) and associate them whith
34766         the delegate class. 
34767
34768 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
34769
34770         * reflection.[ch]: 
34771         (mono_reflection_type_from_name): now it has a MonoImage parameter
34772         which is used as the default image to search the type in. If the image
34773         is NULL or getting the type from it fails, it defaults to corlib.
34774
34775         * icall.c: changed 1 call to mono_reflection_type_from_name to match
34776         new parameter.
34777
34778 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34779
34780         * reflection.c: update the parameter table index.
34781
34782 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
34783
34784         * domain.c: don't include the mark byte in the string hash.
34785
34786 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
34787
34788         * icall.cs: icall for Type.GetTypeCode ().
34789         * verify: a couple of fixes and disabled local initialization checks.
34790
34791 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
34792
34793         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
34794
34795         * debug-helpers.c (mono_method_full_name): print the type of the
34796         runtime wrapper
34797
34798         * metadata.c (mono_signature_hash): a hash function for signatures
34799         (mono_signature_hash): better hash algorithm
34800
34801         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
34802
34803         * debug-helpers.c (mono_method_full_name): this can now generate
34804         method names with signatures
34805
34806         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
34807         method dont have this pointers.
34808
34809 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
34810
34811         * reflection.c: fixup typebuilder tokens.
34812         * image.c: fix buglet.
34813         * marshal.h: remove whitespace.
34814         * metadata.h, metadata.c: reinstate code that was removed.
34815         * verify.c: handle catch directives and fix another couple of bugs.
34816
34817 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
34818
34819         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
34820         (mono_marshal_get_native_wrapper): make it comp. with the old code
34821         (mono_marshal_get_native_wrapper): support boolean
34822         (mono_marshal_get_managed_wrapper): support more types
34823
34824 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
34825
34826         * class.c (class_compute_field_layout): compute class->blittable attribute.
34827
34828 2002-07-09  Dick Porter  <dick@ximian.com>
34829
34830         * threads.c: Make the thread cleaning up cope with threads that
34831         call ExitThread()
34832
34833 2002-07-08  Radek Doulik  <rodo@ximian.com>
34834
34835         * reflection.c (method_encode_code): use non-translated values to
34836         compute finally_start, this fixes exception handling on ppc, yay!
34837
34838         * decimal.h (struct signscale): fix endianess
34839
34840 2002-07-07  Radek Doulik  <rodo@ximian.com>
34841
34842         * reflection.c: swap box_val and not val
34843
34844 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
34845
34846         * reflection.c, reflection.h: handle full assembly info in type name.
34847         Handle Type arguments when loading custom attributes.
34848         * icall.c: updated to use new mono_reflection_type_from_name () method.
34849
34850 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34851
34852         * loader.c:
34853         (method_from_memberref): also print assembly name when method not found.
34854
34855 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34856
34857         * icall.c:
34858         (ves_icall_TypeGetProperties): fixed bug #27473. 
34859
34860 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34861
34862         * reflection.c: display image name and token when cannot find the
34863         .ctor for an attribute.
34864
34865 2002-07-05  Martin Baulig  <martin@gnome.org>
34866
34867         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
34868
34869 2002-07-04  Dick Porter  <dick@ximian.com>
34870
34871         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
34872         compile on mingw.  This will cause mingw builds to not wait for
34873         subthreads to terminate after the main thread does.  I've lodged a
34874         bug with the mingw developers for them to wrap OpenThread().
34875
34876 2002-07-03  Dick Porter  <dick@ximian.com>
34877
34878         * threads.c: Store thread IDs instead of handles, because
34879         GetCurrentThread() returns a pseudohandle and therefore stores
34880         useless values.  mono_thread_cleanup() continues checking the
34881         array of threads until it is empty, to cope with subthreads
34882         spawning new threads after the main thread has finished.
34883
34884         * profiler.h:
34885         * profiler.c:
34886         * profiler-private.h: Pass the thread ID to thread profiler
34887         functions, instead of a handle
34888
34889 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
34890
34891         * verify.c: fixes to make it more usable.
34892         * pedump.c: added --verify code to verify IL code in an assembly.
34893
34894 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34895
34896         * reflection.c: turn errors into warnings to allow compiling corlib.
34897
34898 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34899
34900         * reflection.c: add special cases to compile corlib.
34901
34902 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34903
34904         * reflection.c: handle properties with only a set method.
34905
34906 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
34907
34908         * opcodes.h: add enum with opcodes in opval order.
34909
34910 2002-07-01  Dick Porter  <dick@ximian.com>
34911         
34912         * object.h:
34913         * object.c (mono_runtime_run_main): Removed unneeded argument
34914
34915 2002-06-28  Martin Baulig  <martin@gnome.org>
34916
34917         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
34918
34919 2002-06-27  Dick Porter  <dick@ximian.com>
34920
34921         * threads.c: Store the handle in both the parent thread and in the
34922         subthread, to minimise the time between starting a new thread and
34923         storing its ID.
34924
34925 2002-06-26  Dick Porter  <dick@ximian.com>
34926
34927         * appdomain.c (mono_runtime_cleanup): Close the socket library
34928         after all the threads have finished, not before
34929
34930 2002-06-26  Martin Baulig  <martin@gnome.org>
34931
34932         * debug-symfile.c (mono_debug_find_source_location): Added
34933         `guint32 *line_number' argument.  If it's not NULL, store the line number
34934         there and return the file name without the line number.
34935
34936 2002-06-25  Dick Porter  <dick@ximian.com>
34937
34938         * icall.c:
34939         * process.h:
34940         * process.c: Process forking and other support functions
34941
34942 2002-06-25  Dick Porter  <dick@ximian.com>
34943
34944         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
34945         things dont happen when the image is closed.
34946         (mono_image_lookup_resource): Walk the resource section looking
34947         for a particular entry
34948
34949         * cil-coff.h: PE resource section decoding
34950
34951 2002-06-25  Dick Porter  <dick@ximian.com>
34952         
34953         * assembly.h:
34954         * assembly.c: 
34955         (mono_assembly_foreach): Accessor functions to walk the list of
34956         loaded assemblies
34957         (mono_assembly_set_main):
34958         (mono_assembly_get_main): Process methods need to know which
34959         assembly is the "main" one
34960
34961         * object.c (mono_runtime_run_main): Record the main assembly
34962
34963         * debug-helpers.c: Fix typo
34964
34965 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
34966
34967         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
34968         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
34969
34970 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
34971
34972         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
34973
34974 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
34975
34976         * image.c (do_mono_image_open): Initialize reference count,
34977         otherwise we leak the MonoImage.
34978
34979 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34980
34981         * reflection.c: small tweak to handle self-hosting.
34982
34983 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34984
34985         * reflection.c: fix type name parse code.
34986
34987 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34988
34989         * reflection.c: break out of the loop.
34990         * image.c: special case corlib.
34991
34992 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
34993
34994         * reflection.c: add all the custom attrs at the end to ensure the
34995         ctors have been properly initialized when the attributes are defined
34996         in the current assembly.
34997
34998 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34999
35000         * reflection.c: handle correctly multiple-nested types.
35001
35002 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35003
35004         * row-indexes.h: fix typos.
35005         * reflection.c: adjust for typos and fix method_def_or_ref
35006         encoding in MethodImpl table.
35007
35008 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35009
35010         * reflection.c: fix entry point patching (thanks Serge!).
35011
35012 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35013
35014         * verify.c: add check for System.Exception
35015
35016 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35017
35018         * image.c, class.c: minifix for code just c&p'ed.
35019         * reflection.c: warning fix.
35020         * object.h, loader.h, domain.c: load also StringBuilder.
35021
35022 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35023
35024         * marshal.h, marshal.c: some support code to handle complex marshaling.
35025
35026 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35027
35028         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35029         Better signatures with vtable error dump.
35030
35031 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35032
35033         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35034
35035 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35036
35037         * icall.c (ves_icall_Type_GetField): impl.
35038
35039 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35040
35041         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35042         to retrieve a marshal description blob for a field or param.
35043
35044 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35045
35046         * reflection.h, reflection.c: change order of nested type emission
35047         to avoid table corruption. The NestedTypes table is sorted.
35048         * icall.c: change order of GetConstructor results to workaround mcs bug.
35049
35050 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35051
35052         * reflection.h, reflection.c: handle field and param marshal
35053         information.
35054
35055 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35056
35057         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35058
35059 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35060
35061         * reflection.c: fix call convention.
35062
35063 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35064
35065         * reflection.h, reflection.c: mono_image_get_memberref_token()
35066         takes a type instead of a class, now. Added
35067         mono_image_get_array_token() to create tokens for the special
35068         multi-dim array methods.
35069
35070 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35071
35072         * assembly.c: handle modules (no assembly table). Split
35073         loading references in its own function.
35074         * class.c: handle moduleref resolution scope.
35075         * image.c, image.h: cache module name in image.
35076
35077 2002-06-07  Martin Baulig  <martin@gnome.org>
35078
35079         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35080         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35081
35082 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35083
35084         * icall.c: more signature fixes that used uint instead of int.
35085
35086 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35087
35088         * reflection.c: fixed signature of field refs.
35089
35090 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35091
35092         * class.c, reflection.c: handle typerefs of nested types
35093         (both on read and when writing files).
35094
35095 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35096
35097         * icall.c: fix method signatures that tried to workaround the previous
35098         typo, d'oh!
35099
35100 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35101
35102         * debug-helpers.c: fix typo.
35103
35104 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35105
35106         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35107         rewrote the PE/COFF writing code (our programs are understood by the
35108         ms runtime, now).
35109
35110 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35111
35112         * gc.c, gc.h, icall.c: weakreference support.
35113
35114 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35115
35116         * Makefile.am, mono-config.c: use $(sysconfdir).
35117
35118 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35119
35120         * icall.c: changed default precision of Double.ToString() to 15.
35121         Fixed memory leak. Unified with Single.ToString.
35122
35123 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35124
35125         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35126
35127 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35128
35129         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35130         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35131         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35132         and myself.
35133
35134 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35135
35136         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35137
35138 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35139
35140         * reflection.c, socket-io.c: more compilation fixes.
35141
35142 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35143
35144         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35145         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35146         unicode.c: warning and compiler compatibility fixes.
35147
35148 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35149
35150         * class.h, metadata.c: fixed warnings/compilation errors.
35151
35152 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35153
35154         * Makefile.am, mono-config.c, mono-config.h: configuration file
35155         support routines.
35156         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35157         config file. Export methods to insert and lookup mappings.
35158
35159 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35160
35161         * reflection.c: handle types and boxed objects in custom attr
35162         constructors.
35163
35164 2002-05-30  Martin Baulig  <martin@gnome.org>
35165
35166         * debug-symfile.c
35167         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35168
35169 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35170
35171         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35172         to lookup the implmap row for a P/Invoke method.
35173         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35174         P/Invoke method from the runtime on an as needed basis.
35175
35176 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35177
35178         * metadata.c (mono_metadata_parse_signature): impl.
35179
35180 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35181
35182         * class.c: handle .pack directive.
35183
35184 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35185
35186         * object.c: initialize static fields with RVA data.
35187
35188 2002-05-25  Martin Baulig  <martin@gnome.org>
35189
35190         * debug-symfile.c
35191         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35192
35193 2002-05-24  Martin Baulig  <martin@gnome.org>
35194
35195         * debug-symfile.c
35196         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35197         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35198         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35199
35200 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35201
35202         * object.c: special case string ctros in invoke.
35203         * gc.c: silly whitespace changes.
35204
35205 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35206
35207         * threadpool.[ch]: impl. a threadpool that can
35208         be used by mint and mono.
35209
35210 2002-05-22  Martin Baulig  <martin@gnome.org>
35211
35212         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35213         The first argument is now a `MonoReflectionModuleBuilder *', the return
35214         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35215         `methods' field to get the method builder.  The `token' argument is the
35216         unfixed token.
35217
35218         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35219         invalid characters instead of g_assert_not_reached()ing.  This seems
35220         to be the behaviour of mscorlib.
35221
35222 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35223
35224         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35225         Hestilow to fix bug #25104
35226
35227 2002-05-21  Martin Baulig  <martin@gnome.org>
35228
35229         * debug-symfile.c (mono_debug_find_source_location): New function.
35230         Looks up an IL offset in the line number table and returns the source
35231         location as a string.
35232
35233 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35234
35235         * icall.c:
35236         (mono_double_ToStringImpl): changed %f by %g until we have something
35237         better.
35238
35239 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35240
35241         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35242         parameters first in C#.
35243
35244 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35245
35246         * icall.c, reflection.h: added icall to get info about an event.
35247
35248 2002-05-20  Radek Doulik  <rodo@ximian.com>
35249
35250         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35251         endian
35252         (mono_value_box): don't use memcpy for small sizes on
35253         architectures with unaligned access
35254
35255 2002-05-20  Martin Baulig  <martin@gnome.org>
35256
35257         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35258         if `tb->parent == NULL'.
35259         (mono_reflection_create_internal_class): New function.  This is
35260         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35261         for enum types.
35262
35263         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35264         New interncall.
35265
35266 2002-05-19  Martin Baulig  <martin@gnome.org>
35267
35268         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35269         argument to get the length, don't default to the array length.
35270
35271 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35272
35273         * assembly.c (mono_assembly_setrootdir): New function used to
35274         override the MONO_ASSEMBLIES directory.
35275
35276 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35277
35278         * icall.c: ValueType_GetHashCode() initialize local var.
35279
35280 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35281
35282         * reflection.c: sort custom attributes table.
35283
35284 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35285
35286         * reflection.c: support named args in custom attributes (write support).
35287
35288 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35289
35290         * reflection.c: fix finally position calculation.
35291
35292 2002-05-15  Radek Doulik  <rodo@ximian.com>
35293
35294         * reflection.c: fixed endianess at many places
35295
35296         * icall.c (ves_icall_InitializeArray): comment out debug msg
35297
35298 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35299
35300         * object.c (mono_unhandled_exception): new function to handle
35301         unhandled exceptions.
35302         (mono_unhandled_exception): call the UnhandledException event.
35303         (mono_runtime_delegate_invoke): impl.
35304
35305 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35306
35307         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35308         returns the RVA, not the direct pointer to the data. Handle the case
35309         when the class size is fixed.
35310
35311 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35312
35313         * reflection.c: fix some endianess issues.
35314
35315 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35316
35317         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35318
35319         * threads.c (mono_thread_init): added a callback which is invoked
35320         at thread start.
35321
35322 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35323         
35324         * icall.c: make GetHashCode return non-negative values.
35325
35326 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35327
35328         * object.c, icall.c, gc.c: revert to address-based hashcode.
35329
35330 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35331
35332         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35333
35334 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35335
35336         * icall.c, class.c: special case <Module>.
35337
35338 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35339
35340         * icall.c: fix bug in GetNow().
35341
35342 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35343
35344         * object.c (mono_runtime_class_init): make sure that we call all
35345         static class constructors.
35346
35347 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35348
35349         * reflection.c: sort methodsemantics table.
35350
35351 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35352
35353         * reflection.h, reflection.c: honour init locals setting.
35354
35355 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35356
35357         * icall.c: copied Double ToStringImpl for Single ToStringImpl
35358
35359 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35360
35361         * reflection.c: support ContructorBuilders in attribute blob creation.
35362
35363 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35364
35365         * reflection.c: some changes to build a binary that can be run
35366         directly in windows.
35367
35368 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35369
35370         * loader.c: print a big message when an icall can't be found.
35371
35372 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35373
35374         * string-icalls.c: fix bug 24248.
35375
35376 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35377
35378         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
35379         icall.c, reflection.h: separate assembly loading by pathname and by
35380         assembly name. Use the MONO_PATH env var to search for assemblies.
35381
35382 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35383
35384         * assembly.c, image.h: add some support for assemblies
35385         with multiple modules.
35386         * class.c, class.h: export mono_class_from_typeref().
35387         * loader.c: remove duplicated code and use mono_class_from_typeref(),
35388         instead.
35389
35390 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35391
35392         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
35393         documentation says (the ECMA one is correct).
35394
35395 2002-05-02  Dick Porter  <dick@ximian.com>
35396
35397         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
35398         Don't name the synchronisation mutex.
35399
35400 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
35401
35402         * rand.c
35403         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
35404         Make the prototypes match.
35405         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
35406         Same.
35407
35408         * icall.c
35409         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
35410         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
35411         all systems have tm.tm_zone, so use strftime() with %Z to print
35412         the timezone abreviation into a temp string.
35413
35414         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
35415         rather than mono_array_addr() on a MonoString on Big Endian
35416         machines.
35417
35418 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
35419
35420         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
35421         fix bug 24041
35422
35423 2002-04-30  Dick Porter  <dick@ximian.com>
35424
35425         * socket-io.c: Cope with SOCKET being an integer rather than a
35426         pointer now.
35427
35428         * threads.c: Added Thread_free_internal, to deal with thread
35429         handle cleanup.  Moved calls to handle_store() and handle_remove()
35430         to start_wrapper(), so each can only be called once.  Allocate
35431         synchronisation blocks with GC_malloc(), and use GC finalisation
35432         to close the handles.
35433
35434         * icall.c: added System.Threading.Thread::Thread_free_internal
35435
35436 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35437
35438         * icall.c: support Environment.Exit, CommandLineArgs().
35439
35440 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35441
35442         * object.c, object.h: added mono_runtime_run_main () and
35443         mono_runtime_get_main_args () for use in System.Environment.
35444
35445 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35446
35447         * gc.c: fix thinko, enable actual finalization since the jit is now
35448         fixed.
35449
35450 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35451
35452         * gc.c, object.c: take into account that an object may be offset wrt the address
35453         returned by GC_malloc().
35454
35455 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
35456
35457         * image.c: handle files without entries in the assembly table (modules).
35458
35459 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
35460
35461         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
35462         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
35463         allowed to be null when it's System.Object class setup.
35464
35465 2002-04-27  Martin Baulig  <martin@gnome.org>
35466
35467         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
35468         if `tb->parent == NULL' rather than crashing.
35469
35470 2002-04-28  Nick Drochak  <ndrochak@gol.com>
35471
35472         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
35473         calling acos() where asin() should have been called.
35474
35475 2002-04-26  Martin Baulig  <martin@gnome.org>
35476
35477         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
35478         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
35479         there's a subdirectory called `System', but we don't want to read that
35480         subdirectory as an assembly.
35481
35482 2002-04-25  Martin Baulig  <martin@gnome.org>
35483
35484         * debug-symfile.c: Reflect latest MonoString changes.
35485
35486 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35487
35488         * rand.c, rand.h: instance method icalls need to have an explicit
35489         this pointer as first argument in the C implementation.
35490
35491 2002-04-25  Nick Drochak <ndrochak@gol.com>
35492
35493         * icall.c: Fix typo in map for GetNonZeroBytes
35494
35495 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35496
35497         * string-icalls.c : String does now passes unit tests without any 
35498         errors, the following changes has been made:
35499         
35500         Implemented replace methods.
35501         Renaming of methods to (try) follow the standard.
35502         Fixed compare ordinal
35503         Made all memory allocated directly to function instead of via icall function.
35504         Small performance fix in is_in_array function
35505                         
35506  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
35507
35508         c (mono_string_Internal_ctor_charp_int_int):
35509         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
35510         sindex < 0, throw ArgumentOutOfRangeException instead of
35511         ArgumentNullException.
35512
35513         Added new check for length == 0, however
35514         I need to make it return String.Empty from the C code.
35515         
35516         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
35517         that calculate the length for us here.
35518         
35519         (mono_string_Internal_ctor_sbytep_int_int): Replaced
35520         mono_string_new_utf16 with mono_string_new, since value is utf8.
35521
35522 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35523
35524         * object.c: register the object for finalization if needed.
35525         Allocate one more char in the string for the terminating 0 char.
35526
35527 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35528
35529         * class.c, class.h, image.c: check if a type implemenst a destructor.
35530         Use the proper key for array class lookups.
35531         * icall.c: register the icalls in the System.GC class.
35532         * gc.c, gc.h: GC-related functions and icalls.
35533
35534 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35535
35536         * icall.c:
35537         * socket-io.c:
35538         * unicode.c: free some strings gotten from mono_string_to_utf8 and
35539         changed a couple of free () by g_free ().
35540
35541         * decimal.c: one-liner in the comments for decimal2string ().
35542
35543 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35544
35545         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
35546
35547 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
35548
35549         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
35550         * object.c (mono_runtime_invoke_array) : handle null in params
35551
35552 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35553
35554         * string-icalls.c: fixed bug in split (one off bug)
35555
35556 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35557
35558         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
35559         * icalls.c: added String::Equals as internal method
35560
35561 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
35562
35563         * threads.c: fixed bug in the double interlocked functions
35564
35565 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
35566
35567         * threads.c: implemented all of the new interlocked icalls.
35568         * string-icalls.c: fix a bug in insert.
35569         * icalls.c: added the icalls for interlocked, removed old string functions.
35570         
35571 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
35572
35573         * loader.c: fix off-by-one error when reading argument names.
35574
35575 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35576
35577         * profiler.c: win32 counter implementation (untested).
35578         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
35579         (the latter needs testing and more complete impl. from win32 folks).
35580
35581 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
35582
35583         * object.c: mono_array_new_full workaround mono_array_class_get
35584         problem.
35585
35586 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35587
35588         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
35589         * object.h (mono_string_chars): Changed casting type.
35590
35591 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35592
35593         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
35594                            method signatures to use gunichar2 instead of gint16.
35595
35596 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
35597
35598         * object.h, object.c: domain-specific versions of mono_object_new and
35599         mono_array_new.
35600
35601 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
35602
35603         * object.c: changed String layout
35604
35605         * string-icalls.c (mono_string_Internal_ctor_chara): added
35606         internal string constructors.
35607
35608 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
35609
35610         * threads.c: pass 'this' to the thread start routine.
35611
35612 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35613
35614         * string-icalls.c: fix IndexOf and LastIndexOf. Now
35615         InternalCompareStr don't call twice mono_string_cmp_char for the last
35616         character. Improved performance in mono_string_cmp_char.
35617
35618 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
35619
35620         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
35621         code into its own library: libmonoruntime.
35622
35623 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
35624
35625         * object.h, object.c: changed array format so that szarrays do not
35626         require a bounds structure.
35627         * icall.c, appdomain.c: support for new szarray format.
35628
35629 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
35630
35631         * metadata.c: compare also the retuns type when comparing signatures:
35632         we didn't do this as an optimization since really overloaded methods
35633         must differ also in the arguments, but this doesn't work with
35634         low-level IL code (or when using explicit conversion operators: see
35635         bug#23498 for an example).
35636
35637 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35638
35639         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
35640
35641 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
35642
35643         * icall.c: make MonoType::GetElementType its own icall.
35644
35645 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35646
35647         * icall.c: remove MonoMethod_get_Name().
35648         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
35649         object.
35650
35651 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35652
35653         * string-icalls.c: optimized a few methods.
35654
35655 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
35656
35657         * icall.c: added all new string internal calls
35658         * string-icalls.c: added, new string internal call implementation.
35659         * object.c: added mono_string_new_size for allocating a string a size
35660
35661 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
35662
35663         * object.c (mono_object_isinst): use the same code as in the
35664         optimized x86 version.
35665
35666 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35667
35668         * profiler.c: TSC-based timer code (faster and more accurate).
35669         Not hooked up in configure, yet (set USE_X86TSC to 1).
35670
35671 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
35672
35673         * profiler.c, profiler.h: track time spent compiling methods.
35674         * threads.c: track thread creation/destruction.
35675
35676 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
35677
35678         * profiler.c, profiler.h, profiler-private.h: profiling interface
35679         and sample implementation. Moved here so that it can be used also by
35680         the jit.
35681
35682 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
35683
35684         * reflection.c, reflection.h: keep types and other handles separate in
35685         the hash tables for referred tokens. Add guid for modules.
35686
35687 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35688
35689         * assembly.c: fix bugs found with valgrind.
35690         * metadata.h, metadata.c: added mono_metadata_guid_heap().
35691
35692 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
35693
35694         * threads: added icall support for getting current domain for
35695                    the thread.
35696  
35697 2002-04-13  Martin Baulig  <martin@gnome.org>
35698
35699         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
35700         (MonoDebugVarInfo): Added `index' field for register based addresses.
35701         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
35702         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
35703         `MonoDebugVarInfo *params' and `guint32 this_offset' with
35704         `MonoDebugVarInfo *this_var'.
35705
35706         * debug-symfile.c (relocate_variable): New static function to write
35707         a location description for a local variable or method parameter.
35708
35709 2002-04-12  Martin Baulig  <martin@gnome.org>
35710
35711         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
35712         stack offset and begin/end scope address of a local variable.
35713         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
35714         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
35715         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
35716
35717         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
35718         Added new relocation types for start/end scope of a local variable.
35719
35720 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35721
35722         * object.h: add mono_object_domain() macro.
35723         * reflection.c: handle typespecs.
35724         * icall.c: MonoMethod::get_Name() implementation.
35725
35726 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35727
35728         * icall.c: String::GetHashCode() icall implementation.
35729
35730 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35731
35732         * icall.c: String::IndexOfAny icall.
35733         * object.c, object.h: make array->max_length more useful.
35734         Intrduced mono_object_class() and mono_string_length() macros.
35735
35736 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35737
35738         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
35739         instead of g_unichar_isdigit.
35740
35741 2002-04-11  Nick Drochak  <ndrochak@gol.com>
35742
35743         * icall.c: Implement a simple Double.ToString().
35744
35745 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
35746
35747         * appdomain.h: only io-layer.h is supposed to be included.
35748         * icall.c: explicitly import environ. Fix warning.
35749
35750 2002-04-10  Nick Drochak  <ndrochak@gol.com>
35751
35752         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
35753                 return true even if it's not Daylight Savings time.
35754                 Only return false for the case where the function isn't
35755                 implemented for a plaform (read Windows).
35756
35757 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35758
35759         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
35760         data with a mutex.
35761
35762 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
35763
35764         * mempool.c (mono_mempool_alloc): only use g_malloc when
35765         absolutely necessary.
35766
35767 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
35768
35769         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
35770
35771         * class.c (mono_class_vtable): use domain mempool to allocate vtable
35772         (mono_class_proxy_vtable): use domain mempool
35773
35774 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35775
35776         * appdomain.h, appdomain.c: split initialization that requires the
35777         execution engine support into mono_runtime_init().
35778
35779 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
35780
35781         * class.c (mono_class_init): don't include vtable inside MonoClass
35782         to save some memory, gather some statistics.
35783         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
35784
35785 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35786
35787         * icall.c: internalcall implementation for ValueType.Equals().
35788
35789 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
35790
35791         * object.c (mono_message_init): moved 
35792         (mono_runtime_exec_main): new arch. independent impl.
35793         (mono_runtime_invoke_array): new method - like
35794         mono_runtime_invoke, but you can pass an array of objects.
35795         (mono_remoting_invoke): new arch. independent impl.
35796         (mono_message_invoke): new arch. independent impl.
35797         (mono_runtime_class_init): new arch. independent impl.
35798         (mono_runtime_object_init): new arch. independent impl.
35799
35800 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35801
35802         * metadata.c, object.c, reflection.c: documented the exported
35803         functions.
35804
35805 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
35806
35807         * icall.c: simpler code to pass the assembly builder data to corlib.
35808         Implement GetNestedTypes() internalcall.
35809
35810 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35811
35812         * class.c: warn if a type can't be loaded.
35813
35814 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
35815
35816         * image.h: typedef MonoImageOpenStatus
35817         * types.h: removed unused file
35818         
35819 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
35820
35821         * icall.c: Enum_ToObject accepts enum value arguments.
35822
35823 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35824
35825         * class.c: move initialization of properties, events and nested
35826         classes, so that they happen for interfaces, too.
35827
35828 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35829
35830         * icall.c: cleanup some ugly casts in Array_SetValue*.
35831
35832 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35833
35834         * icall.c: the values array fro enums is of the correct type, now.
35835         Implement (correctly) getFullName instead of assQualifiedName for
35836         MonoType.
35837         * reflection.h, reflection.c: added mono_type_get_name ().
35838
35839 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35840
35841         * assembly.c, image.h: for each MonoImage, record from wich assembly
35842         it was loaded.
35843         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
35844         Make Type.Assembly work.
35845
35846 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
35847
35848         * debug-symfile.h: use char* instead of gpointer to avoid
35849         unnecessary casts.
35850
35851         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
35852
35853         * icall.c (ves_icall_InternalExecute): impl. FielSetter
35854         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
35855
35856 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
35857
35858         * icall.c (mono_message_init): impl. (code cleanup)
35859         (ves_icall_InternalExecute): impl. FieldGetter
35860
35861         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
35862         defined we call all (non-static)methods through the vtable. 
35863
35864 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
35865
35866         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
35867         finalizer even though the memory is still referenced (and the chunk of
35868         memory is not freed).
35869
35870 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
35871
35872         * assembly.c: fix brokeness.
35873
35874 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
35875
35876         * class.c: kill some warnings. Check explicit interface method
35877         implementation also without considering the namespace.
35878         Load also literal strings in static class data.
35879
35880 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
35881
35882         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
35883         (default_assembly_name_resolver): Make the resolver take the
35884         "base" directory where the assembly was originally defined, so we
35885         can load DLLs that are in the same directory as the assembly that
35886         is being referenced.
35887
35888 2002-03-28  Dick Porter  <dick@ximian.com>
35889
35890         * file-io.h: 
35891         * file-io.c:
35892         * socket-io.c: 
35893         * unicode.h: 
35894         * unicode.c: Warning cleanups
35895
35896 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
35897
35898         * object.h, reflection.h: use the correct type instead of MonoObject.
35899
35900 2002-03-28  Martin Baulig  <martin@gnome.org>
35901
35902         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
35903         (mono_debug_update_symbol_file): Initialize classes if necessary.
35904
35905 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
35906
35907         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
35908         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
35909
35910 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
35911
35912         * assembly.h: fix function prototype.
35913         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
35914         * mono-endian.h: use const cast.
35915
35916 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
35917
35918         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
35919
35920 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
35921
35922         * loader.c: don't assert when a typeref can't be loaded, give
35923         a chance to the runtime to trow an exception instead.
35924         * loader.h: fix warning.
35925
35926 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
35927
35928         * class.c (mono_class_proxy_vtable): added proxy support
35929
35930 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
35931
35932         * icall.c: removed last of PAL calls, added System.Environment
35933         * file-io.h, file-io.c: MonoIO implementation
35934         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
35935
35936 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
35937
35938         * appdomain.c: do not use the byte marker in ldstr table lookup.
35939         * debug-helpers.c: allow two ':' to separate class and method name.
35940         * object.c: allocate arrays bounds with the GC, too.
35941         * verify: add a few more checks.
35942
35943 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
35944
35945         * reflection.c: output also literal strings. Allocate parameter data
35946         with GC_malloc() (thanks, Martin, for catching this!).
35947
35948 2002-03-26  Martin Baulig  <martin@gnome.org>
35949
35950         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
35951         include the `this' offset in the `param_offsets'.
35952
35953 2002-03-25  Martin Baulig  <martin@gnome.org>
35954
35955         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
35956         mono_debug_get_class() function to get the classes. Added new
35957         relocation types for arrays and strings.
35958         (mono_debug_get_class): New static function to search in all
35959         referenced assemblies for a metadata token.
35960
35961         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
35962
35963 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
35964
35965         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
35966         hold gc-allocated objects. Make the string heap a stream like the
35967         others. Removed duplicated code when writing stream info.
35968         Added asserts to catch possible buffer overflows. Set the sorted map
35969         for tables that need sorting. Added some documentation.
35970
35971 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
35972
35973         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
35974         for interned strings and vtables.
35975
35976 2002-03-24  Martin Baulig  <martin@gnome.org>
35977
35978         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
35979         it in the array since it was created with g_slist_prepend().
35980
35981 2002-03-24  Martin Baulig  <martin@gnome.org>
35982
35983         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
35984         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
35985         (mono_debug_method_from_token): Renamed to
35986         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
35987         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
35988
35989         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
35990         relocation types.
35991
35992         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
35993
35994 2002-03-24  Martin Baulig  <martin@gnome.org>
35995
35996         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
35997         (mono_debug_method_from_token): New func.
35998
35999         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36000         New interncall, calls mono_debug_local_type_from_signature().
36001         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36002         calls mono_debug_method_from_token().
36003
36004 2002-03-23  Martin Baulig  <martin@gnome.org>
36005
36006         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36007         specifies the number of bytes to be converted, not the array size.
36008         Return the number of chars, not the number of bytes.
36009         (ves_icall_iconv_get_chars): The `byteCount' argument
36010         specifies the number of bytes to be converted, not the array size.
36011
36012 2002-03-23  Martin Baulig  <martin@gnome.org>
36013
36014         * reflection.h (MonoReflectionSigHelper): New type.
36015
36016         * reflection.c (mono_reflection_sighelper_get_signature_local),
36017         (mono_reflection_sighelper_get_signature_local): New functions.
36018
36019         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36020         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36021         interncalls.
36022
36023 2002-03-23  Martin Baulig  <martin@gnome.org>
36024
36025         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36026         is_writeable is set.
36027         (mono_raw_buffer_update): New function to write the modified map
36028         back to disk.
36029
36030         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36031
36032         * debug-symfile.c (mono_debug_update_symbol_file): Call
36033         mono_raw_buffer_update() when done writing.
36034
36035 2002-03-23  Martin Baulig  <martin@gnome.org>
36036
36037         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36038
36039         * debug-symfile.c: Added support for arguments and local variables.
36040
36041 2002-03-23  Dick Porter  <dick@ximian.com>
36042
36043         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36044         protected by ifdefs, hence breaking the w32 build.
36045
36046 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36047
36048         * object.c: implement is_interned() the right way.
36049
36050 2002-03-21  Martin Baulig  <martin@gnome.org>
36051
36052         * debug-symfile.[ch]: New files to handle debugging information
36053         files. There's also support to dynamically update these symbol
36054         files to include machine dependent information.
36055
36056 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36057
36058         * threads.c (mono_thread_create): new function to create thread
36059         from C
36060
36061 2002-03-20  Martin Baulig  <martin@gnome.org>
36062
36063         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36064         method is a constructor.
36065         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36066         points to ves_icall_InternalInvoke().
36067
36068 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36069
36070         * file-io.c: Flush shouldn't throw exceptions.
36071
36072 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36073
36074         * file-io.c: FileStream flush support; FileSetLength now
36075         restores file pointer.
36076
36077 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36078
36079         * class.c: set image for pointer classes.
36080
36081 2002/03/19  Nick Drochak <ndrochak@gol.com>
36082
36083         * sysmath.c: Forgot one.
36084
36085 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36086
36087         * sysmath.c: Avoid redefining existing names.
36088
36089 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36090
36091         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36092         handled by runtime as icall rather than dllimport from libm.so
36093         * file-io.c, file-io.h: fixed handle argument type.
36094
36095 2002-03-18  Dick Porter  <dick@ximian.com>
36096
36097         * reflection.c (mono_image_get_type_info): rename interface to
36098         iface, because of "#define interface struct" on windows.
36099
36100 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36101
36102         * class.c, class.h: rename and export mono_ptr_class_get().
36103         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36104         * reflection.c, reflection.h, icall.c: better/saner type name
36105         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36106         method signatures.
36107
36108 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36109
36110         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36111
36112         * icall.c (ves_icall_InternalInvoke): impl.
36113
36114 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36115
36116         * reflection.c: output the interface map table, too.
36117
36118 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36119
36120         * class.c (class_compute_field_layout): separate computation of 
36121         static field layout
36122
36123 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36124
36125         * icall.c: added System.Buffer support.
36126         * file-io.c: moved file icalls from PAL to FileStream.
36127
36128 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36129
36130         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36131
36132 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36133
36134         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36135
36136 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36137
36138         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36139
36140 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36141
36142         * debug-helpers.{c,h}: moved here from monograph some useful functions
36143         to locate a method by name/signature in a class or image. Included
36144         also a small and flexible IL disassembler.
36145
36146 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36147
36148         * reflection.c: fixup tokens in methods with small header size, too.
36149
36150 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36151
36152         * object.c (mono_string_to_utf8): remove assert(!error), instead
36153         print a warning. 
36154
36155 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36156
36157         * icall.c: update to the new mono_Array_class_get interface.
36158
36159 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36160
36161         * appdomain.c, object.c: Boehm-GC enable.
36162         * icall.c: make get_data_chunk() support split data requests.
36163         Ensure a class is initialized in more cases. Return only the first
36164         property found in GetProperties() or the compiler gets confused. 
36165         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36166         * reflection.h, reflection.c: add fixup mechanism for field and method
36167         tokens. Initialize assembly->typeref in a single place. Output
36168         properties after events. Support custom attributes for events, too.
36169         Typo fix for paramter custom attrs.
36170
36171 2002-03-07  Martin Baulig  <martin@gnome.org>
36172
36173         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36174
36175 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36176
36177         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36178
36179 2002-03-06  Martin Baulig  <martin@gnome.org>
36180
36181         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36182         non-zero lower bounds. See testcases #F10-#F13.
36183
36184 2002-03-05  Martin Baulig  <martin@gnome.org>
36185
36186         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36187
36188         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36189         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36190         here.
36191         (ves_icall_System_Array_SetValue): Likewise.
36192         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36193         as argument and does the actual work. This function is used when copying a
36194         multi-dimensional array.
36195         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36196         now do all the widening conversions of value types.
36197         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36198
36199 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36200
36201         * class.c: remove some magic numbers and use the smbolic names,
36202         instead. Added init_events() to load event info at class init time.
36203         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36204         and mono_metadata_methods_from_event().
36205         * reflection.h, reflection.c: added support for writing out the evnets
36206         related information.
36207
36208 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36209
36210         * reflection.h, icall.c: use a different method (GetInterfaces)
36211         to gather interface info and add isbyref, isprimitive and
36212         ispointer to the ves_icall_get_type_info() return value.
36213
36214 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36215
36216         * class.h: stared adding support for events.
36217         * icall.c: split find_members implementation. Added debug icall to get
36218         the address of an object.
36219         * reflection.c: handle TypeBuilders in mono_type_get_object().
36220
36221 2002-03-01  Martin Baulig  <martin@gnome.org>
36222
36223         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36224         ArgumentOutOfRangeException(), not an ArgumentException().
36225         (ves_icall_System_Array_GetLowerBound): Likewise.
36226         (ves_icall_System_Array_GetValue): Improved argument checking.
36227         (ves_icall_System_Array_SetValue): Improved argument checking.
36228
36229 2002-03-01  Martin Baulig  <martin@gnome.org>
36230
36231         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36232         called with invalid arguments rather than just dying with g_assert().
36233         (ves_icall_System_Array_SetValue): Likewise.
36234         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36235         raise a NotImplementedException instead.
36236         (ves_icall_System_Array_GetLength): Added argument checking.
36237         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36238
36239 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36240
36241         * object.h (mono_assert): new macros mono_assert and
36242         mono_assert_not_reached
36243
36244 2002-02-28  Martin Baulig  <martin@gnome.org>
36245
36246         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36247         and "System::String::IsInterned" to "System::String::_IsInterned".
36248
36249 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36250
36251         * icall.c: remove hacks for typebuilder. Added icall to create a
36252         modified type from a tybebuilder.
36253         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36254         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36255         to create a backing MonoClass for a TypeBuilder.
36256
36257 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36258
36259         * class.c, class.h: more refactoring of class init.
36260         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36261
36262 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36263
36264         * marshal.c, marshal.h: start of marshaling interface.
36265
36266 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36267
36268         * icall.c: fix order in assembly qualified name icall.
36269
36270 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36271
36272         * class.c: do not free str, since we store it in the hash table.
36273         * reflection.h: add label field to MonoILExceptionInfo.
36274         * reflection.c: handle references to more than one assembly. Handle
36275         case when there isn't a module created in the assembly.
36276
36277 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36278
36279         * class.c: Fix typo. Start refactoring of class init code.
36280
36281 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36282
36283         * appdomain.c: exit with 1 on error.
36284         * class.c: we already have the name in MonoClassField.
36285         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36286         MonoStreamHeader instead of an offset of image->raw_metadata.
36287
36288 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36289
36290         * appdomain.c (mono_init): Be even more descriptive about the error.
36291
36292 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36293
36294         * appdomain.c: give the user an informative message when corlib can't
36295         be loaded.
36296
36297 2002-02-26  Martin Baulig  <martin@gnome.org>
36298
36299         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36300         New icall to get the time zone data.
36301
36302 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36303
36304         * reflection.c: set virtual and raw size of section correctly.
36305         * threads.c: transfer domain information to newly created threads.
36306
36307 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36308
36309         * class.c: when instancing a class in a domain, load the default
36310         vaules for static fields from the constant table. Fix System.Enum to
36311         not be an enum.
36312         * icall.c: implement Object::GetType() internalcall. Implemented
36313         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36314         Fixed checking of binding flags in find_members().
36315         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36316         * reflection.c: handle enumerations when writing to the constant
36317         table. Use a different object cache for types.
36318
36319
36320 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36321
36322         * object.c (mono_object_isinst): fix for arrays
36323
36324         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36325
36326 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36327
36328         * object.c: don't use mprotect ()  and fix intern pool hash table
36329         lookup for big endian systems.
36330
36331 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36332
36333         * icall.c: change type_is_subtype_of () signature.
36334
36335 2002-02-21  Mark Crichton  <crichton@gimp.org>
36336
36337         * rand.c, rand.h: Added random number generator for
36338         System.Security.Cryptography classes.
36339
36340         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36341
36342         * icall.c: Added System.Security.Cryptography calls.
36343
36344 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36345
36346         * class.c, icall.c, metadata.c: better support for pointer types.
36347         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36348         * reflection.c: Add support for getting custom attrs for properties
36349         and simplify some code.
36350
36351 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36352
36353         * icall.c: change getToken () and add custom attribute GetBlob()helper
36354         method.
36355         * reflection.h: add custom attrs array to the reflection builder structures.
36356         * reflection.c: encode and emit custom attributes for all the relevant
36357         reflection objects. Cache fieldref and methodref tokens. Change
36358         mono_image_create_token() interface to take a MonoDynamicAssembly.
36359         More complete custom attributes decoder. Load custom attributes for
36360         Assembly, Field, Method and Constructor objects, too. Make the
36361         returned array an Attribute[] one, not object[]. Added
36362         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
36363         custom attribute constructor.
36364
36365 2002-02-20  Dick Porter  <dick@ximian.com>
36366
36367         * icall.c:
36368         * rawbuffer.c:
36369         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
36370         problem code out for now).
36371
36372 2002-02-19  Radek Doulik  <rodo@ximian.com>
36373
36374         * object.c (mono_ldstr): use hash table to avoid multiple swapping
36375
36376 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
36377
36378         * icall.c: register the GetCustomAttributes method.
36379         * object.c, object.h: add mono_string_new_len ().
36380         * reflection.h, reflection.c: added mono_runtime_invoke(),
36381         mono_install_runtime_invoke(). Added
36382         mono_reflection_get_custom_attrs () to load custom attributes and
36383         create the attribute objects.
36384
36385 2002-02-19  Dick Porter  <dick@ximian.com>
36386         * threads-dummy-types.c:
36387         * threads-dummy-types.h:
36388         * threads-dummy.c:
36389         * threads-dummy.h:
36390         * threads-pthread-types.c:
36391         * threads-pthread-types.h:
36392         * threads-pthread.c:
36393         * threads-pthread.h:  Deleted obsolete files
36394
36395 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
36396
36397         * class.c (mono_class_vtable): runtime init the class when we
36398         allocate static class data.
36399
36400         * icall.c (ves_icall_System_Array_SetValue): check for null values.
36401
36402         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
36403         and String - but we will need generic marshalling support in the
36404         future. 
36405         (mono_init): set the domain name in a ms compatible way
36406
36407         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
36408         String[].
36409
36410 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
36411
36412         * object.c (mono_array_clone): use alloca() instead of g_malloc  
36413         for sizes
36414
36415         * appdomain.c (mono_domain_unload): impl.
36416
36417 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36418
36419         * appdomain.c, object.c: fix intern pool implementation.
36420         * class.c: fix alignment code.
36421
36422 2002-02-16  Radek Doulik  <rodo@ximian.com>
36423
36424         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
36425         and s2 > s1, just copy lower bytes to be compatible with little
36426         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
36427         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
36428
36429         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
36430         force big_endian to be 1 for big endian machines 
36431         (ves_icall_iconv_new_decoder): ditto
36432
36433 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
36434
36435         * socket-io.c (convert_sockopt_level_and_name): If the system
36436         doesn't define SOL_IP or SOL_TCP, get them by hand using
36437         getprotobyname() and caching the values (because this could be a
36438         slow operation).
36439         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
36440         Use the appropriate struct when the system does support it. Ie,
36441         not all systems have struct ip_mreqn so use struct ip_mreq when
36442         appropriate.
36443
36444 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
36445
36446         * reflection.c: handle finally clauses.
36447
36448 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
36449
36450         * socket-io.c: use g_snprintf() instead of snprintf.
36451
36452 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36453
36454         * reflection.c (mono_param_get_objects): Cast second argument to
36455         mono_method_get_param_names to a const char** to silence the
36456         compiler warning.
36457
36458         * appdomain.c (mono_domain_assembly_open): Put parens around the
36459         truth statement in the for-loop.
36460
36461         * unicode.c (iconv_convert): Got rid of a compiler warning about
36462         int i being unused when the system has a new iconv.
36463         (iconv_get_length): Same.
36464
36465         * image.c (load_class_names): Cast the second argument to
36466         g_hash_table_insert() to char* to hush compiler warnings about the
36467         arg being a const.
36468         (mono_image_open): Same here.
36469
36470         * socket-io.c: Don't conditionally include sys/filio.h or
36471         sys/sockio.h here anymore since we now get them from
36472         io-layer/io-layer.h
36473         (inet_pton): If the system doesn't support inet_aton, implement
36474         using inet_addr and also #define INADDR_NONE if it isn't defined
36475         by the system.
36476
36477 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
36478
36479         * metadata.c, metadata.h: added function to get packing and size info
36480         of a typedef.
36481         * reflection.h, reflection.c: handle field RVA data. Save info about
36482         the table layout if needed. Assign typedef indexes to all the types
36483         before dumping the info about them to avoid forward reference problems.
36484
36485 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
36486
36487         * socket-io.c (convert_sockopt_level_and_name): ifdef
36488         SO_ACCEPTCONN because it is not defined on my system (old debian)
36489
36490 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36491
36492         * opcode.c: use stddef.h to get NULL.
36493
36494 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
36495
36496         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
36497         for FIONBIO, FIONREAD and SIOCATMARK.
36498         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
36499         define INADDR_NONE and besides, inet_addr() is deprecated and
36500         should not be used. Use inet_pton() instead - it also has the
36501         added bonus that it can easily handle IPv6 addresses as well.
36502         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
36503
36504 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36505
36506         * decimal.c: remove _MSC_VER conditional.
36507
36508 2002-02-13  Dick Porter  <dick@ximian.com>
36509
36510         * socket-io.c: 
36511         * icall.c: Internal calls for Blocking, Select, Shutdown,
36512         GetSocketOption and SetSocketOption
36513
36514 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36515
36516         * assembly.cs: better resolver: use it instead of some kludgy
36517         code.
36518
36519 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
36520
36521         * reflection.c: the best way to speed-up the compiler is to avoid
36522         infinite loops.
36523
36524 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
36525
36526         * class.c (mono_class_vtable): changed the object layout
36527         (obj->vtable->class). 
36528         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
36529
36530 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36531
36532         * assembly.c: look for assemblies in the assembly dir, too.
36533
36534 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36535
36536         * class.c: fix thinko in mono_class_from_type().
36537
36538 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36539
36540         * exception.h, exception.c: added TypeLoadException.
36541         * object.h, object.c: added mono_array_clone ().
36542         * icall.c: handle throwOnError in AssemblyGetType().
36543         Added Array.Clone().
36544         * opcode.h, opcode.c: use a single value for the opcode val.
36545         Compile fix for non-gcc compilers.
36546
36547 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
36548
36549         * opcodes.c, opcodes.h: export interesting info about opcodes.
36550
36551 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
36552
36553         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
36554         icalls. 
36555
36556         * class.c (class_compute_field_layout): set element_class for enums
36557         (mono_class_create_from_typedef): set element_class for normal classes
36558
36559         * icall.c (ves_icall_System_Enum_get_value): impl.
36560
36561         * class.c (mono_class_create_from_typedef): do not set valuetype
36562         flag for System.ValueType and System.Enum
36563
36564 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
36565
36566         * unicode.c (iconv_convert): fix big endian problem.
36567
36568 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
36569
36570         * class.c: add asserts if we are ever going to scribble over memory.
36571         * socket-io.c: not all systems have AF_IRDA defined.
36572
36573 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
36574
36575         * class.c (class_compute_field_layout): do not consider static
36576         fields to compute alignment
36577
36578 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
36579
36580         * appdomain.c (mono_appdomain_get): impl.
36581         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
36582
36583 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36584
36585         * icall.c: ignore "file://" prefix when loading an assembly.
36586
36587 2002-01-23  Dick Porter  <dick@ximian.com>
36588
36589         * socket-io.c:
36590         * icall.c:
36591         * Makefile.am: Added socket support
36592
36593 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36594
36595         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
36596         code back.  This should return the assemblies that are loaded by
36597         the runtime on behalf of an application domain. 
36598
36599         The current implementation is still broken, it just returns every
36600         assembly loaded, but until we get real applications domain this
36601         will do.
36602
36603 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
36604
36605         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
36606         AppDomain object.
36607
36608 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
36609
36610         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
36611         the mono_class_from_name lookup.
36612         (ves_icall_get_parameter_info): ditto.
36613         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
36614         method.
36615         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
36616
36617 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
36618
36619         * class.c: load also nested classes on class init.
36620         System.ValueType instance methods gets passed boxed
36621         values, unless methods in derived classed that get a pointer to the
36622         data.
36623         * icall.c: use better name parsing code in GetType().
36624         * image.c, image.h: add mono_image_loaded ().
36625         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
36626         * reflection.c, reflection.h: added mono_reflection_parse_type().
36627
36628 2002-01-22  Veronica De Santis <veron78@interfree.it>
36629
36630         * icall.c : Added mapping of internal calls for Manual and Auto reset events
36631         * threads.c : Added the implementation of internal calls for events
36632         * threads.h : Added prototypes of internal calls for events
36633         
36634 2002-01-21  Radek Doulik  <rodo@ximian.com>
36635
36636         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
36637
36638 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
36639
36640         * class.c (mono_class_init): set min_align to 1 (instead of 0)
36641         (mono_class_value_size): use min_align
36642
36643 2002-01-20  Dick Porter  <dick@ximian.com>
36644
36645         * threads.h:
36646         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
36647         so it compiles on w32.
36648
36649 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
36650
36651         * metadata.c (mono_type_stack_size): impl.
36652
36653         * class.c (mono_class_get_field): impl. memberref token
36654
36655 2002-01-16 Veronica De Santis <veron78@@interfree.it>
36656
36657         * icall.h : Added the internal calls mapping for CreateMutex_internal
36658                     and ReleaseMutex_internal.
36659         * threads.h : Added the prototype of mutexes internal calls.
36660         * threads.c : Added the implementations of mutexes internal calls.
36661
36662 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36663
36664         * metaparse.h: removed unused file.
36665         * reflection.c, reflection.h: added stream_data_align () function 
36666         to align data in streams and keep stream aligned. Add support for
36667         exception support in method headers.
36668
36669 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
36670
36671         * unicode.c: make iconv_convert () return the number of bytess written
36672         in the output buffer.
36673
36674 2002-01-15  Dick Porter  <dick@ximian.com>
36675         * threads.c: Make the runtime's idea of infinite timeouts coincide
36676         with the class library's
36677
36678         Fix a particularly egregious bug in mono_thread_cleanup(). That
36679         code was so utterly bogus it must have been written on a Monday.
36680
36681 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36682
36683         * reflection.h: add subtypes field to TypeBuilder.
36684         * reflection.c: encode constants for literal fields.
36685         Handle subtypes. Fix user string token (and add a zero byte)
36686         at the end.
36687         
36688 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
36689
36690         * class.c (mono_class_init): bug fix: assign slot numbers for
36691         abstract methods.
36692
36693 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36694
36695         * reflection.c: don't try to output a code RVA for abstract methods.
36696         Small fixes for method header format. Output parameter info to the
36697         ParamDef table. Save method overriding info to MethodImpl table.
36698         Fix property support. Allow typedef.extends to be a type in the
36699         building assembly.
36700         * verify.c: fix off-by-one error.
36701
36702 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
36703
36704         * class.c: fix mono_class_from_mono_type () for szarray types.
36705         Remove unused cache check in mono_class_from_type_spec().
36706         * icall.c: *type_from_name () functions handle simple arrays and byref.
36707         * reflection.c: handle byref and szarray types. Handle methods without
36708         body (gets P/Invoke compilation working). Handle types and fields in
36709         get_token ().
36710         * reflection.h: add rank to MonoTypeInfo.
36711
36712 2002-01-10  Dick Porter  <dick@ximian.com>
36713
36714         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
36715         internal calls
36716
36717 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36718
36719         * icall.c: initialize class in type_from_handle ().
36720         Loop also in parent classes for get_method ().
36721         * reflection.c: properly encode class and valuetype types.
36722         Start on encoding TypeBuilder types. Handle fieldrefs.
36723         Use correct length when registering a user string.
36724         Handle ConstructorBuilder and MonoMethod in get_token ().
36725         Make mono_type_get_object () aware of cached types.
36726         * object.c: back out change to mono_string_new ().
36727
36728 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
36729         * object.c: mono_string_new should return a NULL when the string 
36730         passed in is NULL -- not try to deference it.
36731         
36732 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36733
36734         * icall.c: hack to make IsSubType work for TypeBuilders.
36735         * reflection.c: emit constructors before methods.
36736         Retrieve param names in mono_param_get_objects().
36737
36738 2002/01/05  Nick Drochak  <ndrochak@gol.com>
36739
36740         * Makefile.am: fix list of headers and sources so automake 1.5
36741         doesn't complain. Removed \# at end of list.
36742
36743 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36744
36745         * reflection.c: get token for a method ref. Set return type of
36746         constructor to void.
36747         * loader.c: debug message.
36748         * class.c: typo fix.
36749
36750 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
36751
36752         * icall.c: fix array init with rank > 1. FindMembers
36753         loops in parent class as well.
36754         * image.c: do not insert nested types in name cache.
36755         * reflection.c: warning fix.
36756         * reflection.h: add override method (for interface impl).
36757
36758 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
36759
36760         * metadata.c: fix customattr decoding.
36761
36762 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
36763
36764         * rawbuffer.cs: Added native Win32 implementation, avoids using
36765         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
36766
36767 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
36768
36769         * class.c: make the low-level routines handle the cache.
36770
36771 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
36772
36773         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
36774
36775 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
36776
36777         * class.c: fix mono_array_element_size() for objects.
36778         * class.h, class.c: add properties to MonoClass and load them
36779         at init time.
36780         * icall.c: check with isinst() when assigning a value to an array
36781         instead of requiring the classes to match exactly.
36782         Implemented icall for System.Type::GetType().
36783         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
36784         enums. Handle bindingflags when looking for methods and fields.
36785         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
36786         and mono_metadata_methods_from_property().
36787         * reflection.h, reflection.c: added structures for propreties,
36788         parameters and enums. Implemented mono_property_get_object() and
36789         mono_param_get_objects().
36790
36791 2001-12-18  Dick Porter  <dick@ximian.com>
36792
36793         * file-io.c: Use mono_string_to_utf16() instead of
36794         mono_string_chars()
36795
36796         * object.c: Added mono_string_to_utf16(), which copies the non
36797         NULL-terminated MonoString into a new double-null-terminated
36798         buffer.
36799
36800 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
36801
36802         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
36803
36804 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
36805
36806         * file-io.c: raise exceptions if handle is invalid.
36807
36808 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
36809
36810         * assembly.c: yet another check for mscorlib.
36811         * class.c, class.h: load nesting info for classes.
36812         * icall.c: many new functions to support the Reflection classes.
36813         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
36814         * reflection.h, reflection.c: mono_image_create_token(),
36815         mono_assembly_get_object(), mono_type_get_object(),
36816         mono_method_get_object(), mono_field_get_object(): methods to return
36817         objects that parallel the C representation of assemblies, types,
36818         methods, fields.
36819
36820 2001-12-11  Dick Porter  <dick@ximian.com>
36821
36822         * icall.c:
36823         * file-io.c: Internal calls for file IO.
36824
36825 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
36826
36827         * tabledefs.h: missing FileAttributes.
36828         * verify.h, verify.c: use is_valid_string () to simplify and check for
36829         valid strings more correctly. Fix warnings and speeling.
36830         Check more tables: Filed, File, ModuleRef, StandAloneSig.
36831         Check code: branches, maxstack, method calls.
36832
36833 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
36834
36835         * object.c (mono_object_allocate): removed static, so that the jit
36836         can allocate value types.
36837
36838         * icall.c (ves_icall_System_DateTime_GetNow): impl.
36839
36840 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
36841
36842         * class.c: init enum types right away and register the
36843         token->MonoClass map in mono_class_create_from_typedef ().
36844         * verify.h, verify.c: first cut of the verifier.
36845         * pedump.c: add --verify switch to verify metadata tables.
36846         * tabledefs.h: add some missing enums.
36847
36848 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
36849
36850         * class.c (mono_install_runtime_class_init): impl.
36851         (mono_class_init): renamed mono_class_metadata_init to
36852         mono_class_init, also removed the metadata_inited flag
36853
36854         * object.c (mono_object_isinst): use faster algorithm
36855
36856 2001-11-30  Radek Doulik  <rodo@ximian.com>
36857
36858         * mono-endian.h: reverted last change
36859         added function prototypes
36860
36861         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
36862         add mono-endian.c back
36863
36864         * mono-endian.c: returned back, as Paolo pointed out, it's needed
36865         for unaligned access, I've mistaked it with endianess. I am
36866         sorry.
36867         (mono_read16): fix reverted endianess
36868         (mono_read64): ditto
36869         (mono_read32): ditto
36870
36871 2001-11-30  Dick Porter  <dick@ximian.com>
36872
36873         * exception.c: Implement mono_exception_from_name()
36874
36875 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
36876
36877         * metadata.h, metadata.c: remove params_size and locals_size and their
36878         calculation from the metadata code: they are only usefult to the
36879         interp.
36880
36881 2001-11-29  Radek Doulik  <rodo@ximian.com>
36882
36883         * object.c (mono_ldstr): swap bytes here, it's probably not the
36884         best place, but works for me now, I'll redo it once I know mono
36885         better, also note that I add PROT_WRITE and don't reset back, also
36886         note that it's only affects big endians, so x86 should be OK
36887
36888         * mono-endian.h (read16): use just glib macros for both endians
36889
36890         * mono-endian.c: removed as glib macros are used in in
36891         mono-endian.h so we don't need to care about endianess for read
36892         macros as glib does that for us already
36893
36894 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
36895
36896         * class.h, class.h: take minimum alignment into consideration so
36897         that the fields of a class remain aligned also when in an array.
36898
36899 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
36900
36901         * loader.h, loader.c: add mono_method_get_param_names().
36902         * class.c: 0-init class fields.
36903
36904 2001-11-26  Dick Porter  <dick@ximian.com>
36905
36906         * icall.c:
36907         * threads-types.h:
36908         * threads.c: New file that handles System.Threading on all platforms
36909
36910         * object.c: 
36911         * object.h: Remove the synchronisation struct from MonoObject,
36912         replace it with a pointer that gets initialised on demand
36913
36914         * Makefile.am: Replace all the system-specific threading code with
36915         a single file that uses the new wrapper library
36916
36917 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
36918
36919         * class.c, class.h: add mono_install_trampoline() so that the runtime
36920         can register a function to create a trampoline: removes the ugly
36921         requirement that a runtime needed to export arch_create_jit_trampoline.
36922         * object.h, object.c: added mono_install_handler() so that the runtime
36923         can install an handler for exceptions generated in C code (with
36924         mono_raise_exception()). Added C struct for System.Delegate.
36925         * pedump.c: removed arch_create_jit_trampoline.
36926         * reflection.c: some cleanups to allow registering user strings and
36927         later getting a token for methodrefs and fieldrefs before the assembly
36928         is built.
36929         * row-indexes.h: updates and fixes from the new ECMA specs.
36930
36931 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
36932
36933         * class.h, class.c: add enum_basetype field to MonoClass.
36934         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
36935         to get index in the constant table reated to a field, param or
36936         property.
36937         * reflection.h, reflection.c: handle constructors. Set public-key and
36938         version number of the built assembly to 0.
36939         * row-indexes.h: update from new ECMA spec.
36940
36941 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
36942
36943         * class.h, class.c: add a max_interface_id to MonoClass.
36944         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
36945         since it's used to do that. Added mono_type_type_from_obj().
36946         Make GetType() return NULL instead of segfaulting if the type was not
36947         found. Handle simple arrays in assQualifiedName.
36948         * object.h: add a struct to represent an Exception.
36949         * reflection.c: output call convention in method signature.
36950         Add code to support P/Invoke methods and fixed offsets for fields.
36951
36952 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
36953
36954         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
36955         the value.
36956         * icall.c: use mono_array_addr instead of array->vector: fixes the
36957         reflection image writing.
36958         * reflection.c: init call convention byte to 0 in method signature.
36959         Encode the property signature. Don't output property-related methods
36960         twice. Really process the properties for a type (don't cast a field to
36961         a property, my mom always told me that).
36962         Fix 64 bit issues in pointer alignment in a different and more
36963         readable way.
36964
36965 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
36966
36967         * loader.h: Removed type class from MonoDefaults, added monotype
36968
36969         * loader.c: Loaded MonoType, removed loading of Type
36970
36971         * icall.c (my_mono_new_object): Now returns a System.MonoType,
36972         and fills in System.Type._impl with a RuntimeTypeHandle rather
36973         than the actual MonoClass *
36974
36975         (ves_icall_type_from_handle): change from type_class to
36976         monotype_class
36977
36978         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
36979         implemented
36980
36981         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
36982         implemented
36983
36984         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
36985
36986         (ves_icall_System_Reflection_Assembly_GetType): implemented
36987
36988         (ves_icall_System_MonoType_assQualifiedName): implemented
36989
36990         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
36991
36992 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
36993
36994         * assembly.c (mono_assembly_open): Implement a cache for the
36995         assemblies. 
36996
36997         (mono_assembly_close): only destroy the assembly when the last
36998         reference is gone.
36999         
37000 2001-11-09  Dick Porter  <dick@ximian.com>
37001
37002         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37003
37004 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37005
37006         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37007
37008 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37009
37010         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37011         from Martin Weindel.
37012         * object.h: add mono_string_chars ().
37013
37014 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37015
37016         * reflection.c (build_compressed_metadata): Eliminates warnings
37017         and uses 64-bit clean code.
37018
37019         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37020         (mono_type_equal): Change signature to eliminate warnings.
37021
37022 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37023
37024         * icall.c, loader.c: remove the internalcall array constructors.
37025         Changes to match the new MonoArray structure.
37026         * object.h, object.c: an array object doesn't allocate an extra
37027         vector. Add mono_array_new_full () to create jagged arrays easily.
37028
37029 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37030
37031         * metadata.h, metadata.c: add mono_metadata_field_info () to
37032         retreive all the info about a field from vairous tables.
37033         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37034         * class.h, class.c: augment MonoClassField with more info.
37035         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37036         policy and load a field's RVA if needed.
37037
37038 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37039
37040         * class.c (mono_class_metadata_init): create a trampoline for all
37041         virtual functions instead of actually compiling them.
37042
37043 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37044
37045         * class.h, class.c: include name in MonoClassField.
37046         * class.c: fix fundamental type of System.Object and System.String.
37047         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37048         tokens in ldtoken.
37049         * icall.c: remove internalcalls for the Reflection stuff that is now
37050         done in C# code.
37051         * loader.c: mono_field_from_memberref () implementation.
37052         * mono-endian.c: thinko (s/struct/union/g).
37053         * object.c, object.h: make the mono_string_* prototypes actually use
37054         MonoString instead of MonoObject.
37055         * reflection.c, reflection.h: updates for changes in the reflection
37056         code in corlib: we use C structures that map to the actual C# classes.
37057         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37058         fat method header if needed and use the info from the ILGenerator for
37059         methods. Handle fields in types. Misc fixes.
37060
37061 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37062
37063         * class.c (mono_class_metadata_init): bug fix: always allocate
37064         space for static class data
37065
37066 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37067
37068         * class.c (mono_compute_relative_numbering): use relative
37069         numbering to support fast runtime type checks.
37070
37071 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37072
37073         * class.c (mono_class_create_from_typeref): added debugging output
37074         to print class name when MonoDummy is returned instead of real class
37075
37076 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37077
37078         * class.c (mono_class_metadata_init): interface offset table now
37079         contains pointers into the vtable - this is more efficient for the jit
37080
37081 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37082
37083         * class.c (mono_class_metadata_init): use a temporary vtable (the
37084         old algorithm only worked for the interpreter, but not for the jit)
37085
37086 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37087
37088         * loader.c (method_from_memberref): use mono_class_get to get the
37089         class of an array instead of using System.Array directly.
37090         (mono_get_method): also add MEMBERREF methods to the method cache
37091         which usefull for arrays.
37092
37093 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37094
37095         * pedump.c (arch_compile_method): added to compute vtable entry
37096
37097         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37098         number of interfaces.
37099         
37100         * class.h: merged MonoArrayClass into MonoClass
37101
37102         * class.c (mono_class_create_from_typedef): compute the vtable size and
37103         allocate space to include the vtable inside MonoClass
37104         (mono_class_metadata_init): initialize the vtable
37105
37106 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37107
37108         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37109         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37110         * image.c: endian fixes by Laurent Rioux.
37111         * object.h, object.c: rename MonoStringObject to MonoString and
37112         MonoArrayObject to MonoArray. Change some function names to conform to
37113         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37114         guint16* as first argument, so don't use char*.
37115         Provide macros to do the interesting things on arrays in a portable way.
37116         * threads-pthread.c: updates for the API changes and #include <sched.h>
37117         (required for sched_yield()).
37118         * icall.c: updates for the API changes above.
37119         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37120         platforms that need them.
37121
37122 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37123
37124         * class.c: set the correct type for all the fundamental
37125         type when loading the class.
37126
37127 2001-10-05  Dick Porter  <dick@ximian.com>
37128
37129         * threads-pthread.c (pthread_mutex_timedlock): Simple
37130         compatibility version for C libraries that lack this call.
37131
37132 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37133
37134         * class.c: MonoTypes stored in MonoClass are stored as
37135         fundamental MonoTypes when the class represents a
37136         fundamental type (System.Int32, ...).
37137         The TypeHandle return by ldtoken is a MonoType*.
37138         * icall.c: ves_icall_get_data_chunk () write out all the
37139         PE/COFF stuff. Implement ves_icall_define_method (),
37140         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37141         * image.c: properly skip unknown streams.
37142         * loader.h, loader.c: add type_class to mono_defaults.
37143         * metadata.c, metadata.h: export compute_size () as
37144         mono_metadata_compute_size () with a better interface.
37145         Typo and C&P fixes.
37146         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37147         * reflection.c, reflection.h: many cleanups, fixes, output method
37148         signatures and headers, typedef and typeref info, compress the metadata
37149         tables, output all the heap streams, cli header etc.
37150         * row-indexes.h: typo fixes.
37151
37152 2001-10-04  Dick Porter  <dick@ximian.com>
37153
37154         * object.h: Add a synchronisation mutex struct to MonoObject
37155
37156         * object.c (mono_new_object): Initialise the object
37157         synchronisation mutexes
37158
37159         * icall.c: System.Threading.Monitor internal calls
37160         
37161         * threads-pthread.h:
37162         * threads-pthread.c: System.Threading.Monitor internal calls
37163
37164         * threads-types.h: New file, includes the system-specific thread
37165         structures
37166         
37167         * threads-pthread-types.h:
37168         * threads-pthread-types.c: New files, handle pthread-specific
37169         synchronisation types
37170
37171         * threads-dummy-types.h: 
37172         * threads-dummy-types.c: New files of dummy support for
37173         thread-specific types
37174
37175         * metadata.c:
37176         * image.c:
37177         * pedump.c: include mono-endian.h not endian.h
37178         
37179         * Makefile.am: More threads files.
37180         Name mono-endian.h not endian.h
37181
37182 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37183
37184         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37185         stuff and implement a few more bits.
37186         * icall.c: a field needs to be dereferenced twice. Do not use the same
37187         name for two variables in the same scope.
37188         * image.c, image.h: cleanups.
37189
37190 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37191
37192         * class.c (mono_class_metadata_init): bug fix: compute the right size
37193
37194 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37195
37196         * icall.c: implemented some of the Reflection internalcalls.
37197         * image.c, image.h: start writing out the PE/COFF image.
37198         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37199         that does the reverse than decode_blob_size ().
37200         * object.c: use mono_metadata_encode_value (). Move here
37201         temporary implementation of mono_string_to_utf8 ().
37202         * rawbuffer.c: make malloc_map static.
37203
37204 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37205
37206         * metadata.c: fix type comparison for arrays.
37207         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37208         Added a couple of new classes to monodefaults.
37209         * icall.c: added a couple of Reflection-related internalcalls.
37210         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37211         Added a byval_arg MonoType to MonoClass.
37212
37213 2001-09-28  Dick Porter  <dick@ximian.com>
37214
37215         * icall.c:
37216         * threads-pthread.h: 
37217         * threads-pthread.c: Implemented internal calls for
37218         LocalDataStoreSlot operations.  Applied mutexes around all shared
37219         data.  Reworked the thread creation and Start() operations to
37220         avoid a race condition.
37221         
37222         * threads-dummy.h:
37223         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37224
37225 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37226
37227         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37228
37229 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37230
37231         * class.c, loader.c: warn and return NULL instead of erroring out.
37232         * icall.c: added System.AppDomain::getCurDomain().
37233         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37234
37235 2001-09-25  Dick Porter  <dick@ximian.com>
37236
37237         * threads-pthread.h:
37238         * threads-pthread.c: Implemented timed thread joining and added
37239         System.Threading.Thread::Join_internal internal call
37240
37241         * icall.c: Added System.Threading.Thread::Join_internal internal call
37242
37243         * threads-dummy.h:
37244         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37245
37246 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37247
37248         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37249         mono_string_intern () to implement the semantics of the ldstr opcode
37250         and the interning of System.Strings.
37251         * icall.c: provide hooks to make String::IsIntern and String::Intern
37252         internalcalls.
37253
37254 2001-09-23  Dick Porter  <dick@ximian.com>
37255
37256         * threads-dummy.c: 
37257         * threads-dummy.h: New files of dummy threading routines
37258
37259         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37260         support code based on system specifics
37261
37262         Rename PTHREAD_LIBS to THREAD_LIBS
37263         
37264 2001-09-23  Dick Porter  <dick@ximian.com>
37265
37266         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37267         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37268         internal calls.
37269         (mono_thread_init): Set up a Thread object instance to return when
37270         the main thread calls Thread.CurrentThread
37271         (mono_thread_cleanup): Wait for all subthreads to exit
37272
37273         * icall.c: New internal calls for System.Threading.Thread::Sleep
37274         (including Schedule) and CurrentThread
37275
37276         * threads.h: New file, to insulate thread-specific stuff from the
37277         rest of the code
37278
37279 2001-09-21  Dick Porter  <dick@ximian.com>
37280
37281         * threads-pthread.h: 
37282         * threads-pthread.c: New file, for handling pthreads-style
37283         threading support.  Start() now starts a new thread and executes
37284         the ThreadStart delegate instance.
37285
37286         * icall.c: Added the internalcall for
37287         System.Threading.Thread::Start_internal
37288
37289         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37290
37291 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37292
37293         * loader.c: work around the different signatures for delegates
37294         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37295
37296 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37297
37298         * class.h, class.c: add mono_class_get_field_from_name ().
37299         * *: Fix C comments and other ANSI C issues.
37300
37301 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37302
37303         * endian.h, assembly.c: fix some endianness issues.
37304
37305 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37306
37307         * loader.h, load.c: add delegate_class to mono_defaults.
37308         Handle runtime provided methods in mono_get_method ().
37309
37310 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37311
37312         * loader.c (mono_get_method): use pinvoke for internal call
37313
37314         * icall.c: use pinvoke for internal call
37315
37316         * loader.c (method_from_memberref): set the method name
37317
37318 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37319
37320         * metadata.c: help the compiler generate better code for
37321         mono_class_from_mono_type ().
37322
37323 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37324
37325         * class.c (mono_class_metadata_init): delayed computing of the
37326         class size to mono_class_metadata_init ()
37327
37328 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37329
37330         * class.c, class.h: add an interfaces member to MonoClass.
37331         * image.c, image.h: add assembly_name field to MonoImage
37332         from the assembly table.
37333         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37334
37335 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37336
37337         * class.c: Handle Array in mono_class_from_mono_type ().
37338         * metadata.c, pedump.c: some endian fixes.
37339
37340 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37341
37342         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37343         * metadata.c: fix small problem introduced with the latest commit.
37344
37345 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37346
37347         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37348         We don't need a MonoMetadata pointer anymore to compare signatures in
37349         mono_metadata_signature_equal (), update callers.
37350         Reduced memory usage an number of allocations for MonoMethodHeader and
37351         MonoMethodSignature.
37352
37353 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37354
37355         * metadata.c: added compare for szarray.
37356
37357 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
37358
37359         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
37360         and add a couple more types to it and mono_defaults. Give an hint on
37361         classes that need implementing in our corlib and are referenced
37362         in mscorlib.
37363
37364 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
37365
37366         * class.h, class.c: keep track if a class is also an Enum.
37367         * loader.c: Implement a couple more types for use in libffi
37368         marshalling. Gives better diagnostics when failing to dlopen
37369         a library. Set method->klass for P/Invoke methods, too.
37370
37371 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
37372
37373         * class.c, class.h: add a MonoType this_arg to MonoClass that
37374         represents a pointer to an object of the class' type that
37375         can be used by the interpreter and later the type cache.
37376         Add best guess alignment info for valuetype objects.
37377
37378 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
37379
37380         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
37381         into MonoType: one less level of indirection and allocation and
37382         simplifies quite a bit of code. Added cache for MonoTypes that are
37383         used frequently, so that we don't need to allocate them all the time.
37384
37385 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
37386
37387         * class.c (mono_class_create_from_typedef): System.Enum is also a
37388         value type, although it does not derive from System.ValueType
37389         (maybe a bug in the ms compiler?)
37390
37391         * metadata.c (mono_type_size): return the right size for value types
37392
37393         * loader.c (mono_get_method): only initialize method header if not abstract
37394
37395         * class.c (mono_class_from_mono_type): use mono_default values. 
37396
37397 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
37398
37399         * *: use MonoClass pointers instead of <type_tokens>
37400         
37401         * class.h: new flag: metadata_inited.
37402
37403         * class.c (mono_class_metadata_init): impl.
37404         (mono_class_instance_size): impl.
37405         (mono_class_data_size): impl.
37406
37407 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37408
37409         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
37410         MonoClass now has the name and name_space fields. 
37411         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
37412         mono_get_method () takes and optional MonoClass as argument.
37413         Removed mono_typedef_from_name() and added mono_class_token_from_name()
37414         instead that takes advantage of a map from class names to typedef
37415         tokens in MonoImage.
37416
37417 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
37418
37419         * metadata.c: zero is not a valid alignment boundary.
37420         Merge MONO_TYPE_VOID in default decoding code.
37421
37422 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
37423
37424         * image.h: merged MonoMetadata into MonoImage
37425
37426         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
37427         identify the type of elements.
37428
37429 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
37430
37431         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
37432         * cil-coff.h: split MonoMSDOSHeader and add size info.
37433         * image.c: add some consistency checks.
37434         * metadata.c: fix row size computation: one programmer
37435         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
37436         add explanation for the locator routine.
37437         Fix decoding of size in method header.
37438         
37439 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
37440
37441         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
37442         (g_concat_dir_and_file): Bring g_concat_dir_and_file
37443         function from gnome-libs.  This uses the right path separator
37444         based on the OS, and also works around a bug in some systems where
37445         a double slash is not allowed. 
37446         (default_assembly_name_resolver): Use g_concat_dir_and_file
37447         (mono_assembly_open): ditto.
37448
37449 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
37450
37451         * metadata.c (mono_metadata_signature_equal): impl.
37452
37453         * *: void is now a realy MonoType (instead of using NULL)
37454         
37455         * metadata.c (do_mono_metadata_parse_type): use
37456         mono_metadata_parse_type to parse void value.
37457
37458 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
37459
37460         * metadata.c, metadata.h: in the signature and method header store
37461         only the space required for holding the loca vars and incoming arguments.
37462
37463 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
37464
37465         * metadata.c (do_mono_metadata_parse_type): treat void like any
37466         other type (instead of assigning NULL);
37467
37468 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
37469
37470         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
37471
37472 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
37473
37474         * image.c (do_mono_image_open): added a cache for arrays.
37475
37476 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37477
37478         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
37479         decode a single column from a row in a metadata table and changes
37480         to take advantage of it in the typedef locator (gives a nice speed up).
37481         Store offset info for function params.
37482
37483 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
37484
37485         * image.h (MONO_IMAGE_IS_CORLIB): removed 
37486
37487 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
37488
37489         * assembly.c: how could mono_assembly_close () had ever worked?
37490         * metadata.c, metadata.h: provide offset info for local vars.
37491         Implement mono_type_size () to take care of alignment as well
37492         as size (it was mono_field_type_size in cli/class.c before).
37493
37494 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
37495
37496         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
37497
37498         * assembly.h (CORLIB_NAME): set to corlib.dll
37499
37500         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
37501
37502 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
37503
37504         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
37505         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
37506         tokentype.h: massive namespace cleanup.
37507
37508 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37509
37510         * metadata.h, metadata.c: decode exception clauses when parsing method header.
37511
37512 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
37513
37514         * metadata.c (mono_metadata_free_type): added check for type !=
37515         NULL (void) before calling mono_metadata_free_type()
37516
37517 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
37518
37519         * metadata.h, row_indexes.h: added header with enumerations to use
37520         to index in the columns from tables in metadata and to decode coded
37521         tokens: we should start using this instead of embedding magic numbers
37522         all over the code.
37523
37524 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
37525
37526         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
37527         Move metadata_t info from cli_image_info_t to MonoImage, where
37528         it's easily accessible. Changed all the uses accordingly.
37529         Added the method and class caches to MonoImage.
37530         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
37531         and mono_metadata_decode_value () signature to be more consistent
37532         with the other parse functions (and simplify code). Taken advantage
37533         of zero-length array allocation with GCC. Removed reduntant (and
37534         wrong) MonoFieldType struct and use MonoParam instead. Changed
37535         mono_metadata_parse_field_type () to use common code for parsing.
37536         Added mono_metadata_typedef_from_field () and
37537         mono_metadata_typedef_from_method () to lookup a typedef index from a
37538         field or method token.
37539         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
37540
37541 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
37542
37543         * metadata.c (mono_metadata_parse_field_type): Implement. 
37544         (do_mono_metadata_parse_type): Split engine from
37545         mono_metadata_parse_type, so that we can create smaller structures
37546         for things that just have one pointer to the MonoType (look at
37547         the MonoFieldType)
37548
37549 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
37550
37551         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
37552         as Jan Gray found out, it is incorrect. 
37553
37554 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
37555
37556         * assembly.c: Implement asssembly loading.  This loads an image
37557         and loads all the referenced assemblies.  Come to think of it, we
37558         could always do lazy loading of the assemblies. 
37559
37560         * image.c (mono_image_open): Keep loaded images in a hashtable.
37561
37562         * image.h (MonoImage): Add reference count.
37563
37564 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
37565
37566         * assembly.c (mono_assembly_open): Keep track of the file name in
37567         case the assembly has no ASSEMBLY table.
37568
37569         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
37570         from get.c here.
37571
37572 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
37573
37574         * metadata.c, metadata.h: decode local vars in method header
37575         parse function. Change callers accordingly.
37576
37577 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
37578
37579         * metadata.h, cil-coff.h: protect against multiple inclusion.
37580         Added some new structures to hold information decoded from metadata:
37581         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
37582         and relevant decoding/free functions.
37583         * metadata.c: implement decoding functions. Add warning for out of bounds
37584         index in mono_metadata_locate(). Implement mono_get_method () to retreive
37585         all the info about a method signature and invocation. Remove check on
37586         uninitialized local var in parse_mh() and fix memory leak.
37587
37588 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
37589
37590         * metadata.h: More macros.
37591
37592         * tokentype.h: New file.
37593
37594 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
37595
37596         * assembly.c: added a consistency check and initialize
37597         some structures with g_new0().
37598         * metadata.c: fixed a couple more bugs in table size computation
37599         and add other checks for out-of bound access to metadata.
37600
37601 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
37602
37603         * metatada.c: fix bugs computing table sizes. Spew a
37604         warning when index in string heap is out of bounds.
37605
37606 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
37607
37608         * metadata.h: Add a couple of macros to manipulate tokens. 
37609
37610 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37611
37612         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
37613         cli_section_tables).
37614
37615 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
37616
37617         * metadata.c (mono_metadata_user_string): New function, provides
37618         access to the UserString heap. 
37619
37620 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
37621
37622         * metadata.c: Add inline documentation.
37623
37624 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
37625
37626         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
37627         files. 
37628
37629 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
37630
37631         * typeattr.h: New file, TypeAttribute flags. 
37632
37633 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
37634
37635         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
37636         mono_assembly_ensure_section): Section loading code.
37637         (load_section_tables): Load the sections.
37638
37639         * mono/metadata/metadata.c (mono_metadata_locate_token,
37640         mono_metadata_locate): Functions to locate the information
37641         definition given a token or a table and an index.
37642         (mono_metadata_compute_table_bases): New.
37643         (compute_size): New function to compute the sizes of the various
37644         tables.
37645
37646         * mono/metadata/metadata.h: Finish listing the different index
37647         types. 
37648
37649         * mono/metadata/pedump.c: Improve to dump new information.
37650
37651 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
37652
37653         * mono/metadata/metadata.c: Entered all the tables matching
37654         Beta2. 
37655
37656         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
37657
37658
37659
37660