fa07ec1bfb14e97ee414713c247fa026e4f9a28e
[mono.git] / mono / metadata / ChangeLog
1 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * class.c (mono_assembly_name_from_token): Handle
4         images with null assembly. This can happen with resource
5         or broken assemblies.
6
7         Fixes #623586.
8
9 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
10
11         * class.c (concat_two_strings_with_zero): Guard against
12         null strings.
13
14         Modified version of patch by Sebastien Pouliot.
15
16         Fixes #623653.
17
18 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
19
20         * image.c (mono_image_load_module): Handle the case of
21         module index equal or smaller than zero. It is possible
22         to embed a valid zero index into metadata so this case
23         must be explicitly handled.
24
25         Patch by Sebastien Pouliot.
26
27         Fixes #623581.
28
29 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
30
31         * metadata-verify.c (INVALID_IMPLMAP_FLAGS_BITS): Add non standard
32         bits for best fit on/off (4,5) and throw on unmappable on/off (12/13).
33
34         Fixes #622221.
35
36 2010-07-27  Geoff Norton  <gnorton@novell.com>
37
38         * sgen-archdep.h: Ensure we store the registers we actually
39         need to scan.
40
41 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
42
43         * verify.c (do_invoke_method): Improve error message.
44
45 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
46
47         * verify.c (mono_generic_param_is_constraint_compatible): Don't
48         fail a contraint check even if the candidate has no constraints.
49         All constraints might resolve to the candidate itself so it can
50         have none.
51
52         Fixes #622225.
53
54 2010-07-25  Mark Probst  <mark.probst@gmail.com>
55
56         * sgen-internal.c: Only compile this if HAVE_SGEN_GC is defined.
57
58 2010-07-24  Mark Probst  <mark.probst@gmail.com>
59
60         * sgen-internal.c, sgen-gc.h, sgen-major-copying.c: Make the
61         internal allocator fast by keeping free-lists of chunks, not only
62         within chunks.  Align the chunks, so that on freeing we can get
63         the chunk without searching.
64
65 2010-07-24  Mark Probst  <mark.probst@gmail.com>
66
67         * sgen-internal.c, sgen-gc.c, sgen-gc.h, sgen-gray.c,
68         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning-stats.c,
69         sgen-pinning.c: Allocate fixed-size structs without specifying the
70         size, instead registering it once with its type.
71         Dynamically-sized need their size specified when being freed.
72
73 2010-07-24  Mark Probst  <mark.probst@gmail.com>
74
75         * sgen-major-copying.c, sgen-internal.c, sgen-gc.c, sgen-gc.h,
76         sgen-pinning.c: Copying major collector doesn't mess around with
77         internals of the internal allocator anymore, instead using public
78         functions.
79
80 2010-07-24  Mark Probst  <mark.probst@gmail.com>
81
82         * sgen-internal.c: Internal allocator in its own module.
83
84         * sgen-gc.c, sgen-gc.h, sgen-gray.c, sgen-los.c,
85         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning.c,
86         sgen-pinning-stats.c: Remove internal allocator and call the
87         public functions now.
88
89         * Makefile.am: Added new file.
90
91 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
92
93         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix warnings on amd64.
94
95 2010-07-24  Sanjoy Das <sanjoy@playingwithpointers.com>
96
97         * sgen-gc.h: Removed 'foo defined but not used' warnings for the
98           *_signal_num variables.
99
100 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
101
102         * file-io.c (ves_icall_System_IO_MonoIO_Read): Add a null check.
103         (ves_icall_System_IO_MonoIO_Write): Ditto.
104
105         * loader.c (mono_loader_cleanup): Delete loader_mutex, the shutdown races should
106         be fixed now.
107
108 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
109
110         * loader.c (mono_loader_lock_if_inited): New helper function which can be called
111         during startup before the loader lock is initialized.
112         (mono_loader_unlock_if_inited): Ditto.
113
114
115 2010-07-21  Geoff Norton  <gnorton@novell.com>
116
117         * sgen-archdep.h: Fix the build on amd64-darwin.
118
119 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
120
121         * object.c (mono_print_unhandled_exception): Fix a warning.
122
123 2010-07-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
124
125         * threadpool.c: use a monitor thread to start up new ones when needed.
126         Fixes bug #622398.
127
128 Thu Jul 15 18:44:44 CEST 2010 Paolo Molaro <lupus@ximian.com>
129
130         * reflection.c, class-internals.h, class.c, icall.c: support
131         reflection of default constant value for Re.Emit properties.
132
133 2010-07-14  Miguel de Icaza  <miguel@novell.com>
134
135         * reflection.c (load_cattr_value): Add support for encoding
136         DateTime constants into the blob.    Turns out that this is
137         required by .NET, it was only documented post 1.0.
138
139         * icall.c (ves_icall_type_GetTypeCodeInternal): Guard test for
140         System.Decimal and System.DateTime inside a mono_is_corlib_image
141         call.   A sample program showed that we could return the wrong
142         TypeCode just by creating a class with those names. 
143
144         * class.c (mono_is_corlib_image): Exposed this to other metadata/
145         code.
146
147 2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>
148
149         * security-core-clr.c: Don't abort (only warn) if we cannot find 
150         a caller for relfecting code (transparent is assumed). Fix
151         get_method_access_exception to accept a NULL caller.
152
153 2010-07-14  Mark Probst  <mark.probst@gmail.com>
154
155         * sgen-gc.c: Heavy statistics on the internal allocator.
156
157 2010-07-13  Mark Probst  <mark.probst@gmail.com>
158
159         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
160         properly and in a thread-safe way.
161
162 2010-07-13  Mark Probst  <mark.probst@gmail.com>
163
164         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
165
166 2010-07-13  Mark Probst  <mark.probst@gmail.com>
167
168         * sgen-gc.c: Versions of safe_object_get_size() and
169         copy_object_no_checks() that work without the object's vtable
170         intact, by passing the correct vtable as an argument.
171
172 2010-07-13  Mark Probst  <mark.probst@gmail.com>
173
174         * sgen-marksweep.c: Make allocation of major sections thread-safe.
175
176 2010-07-13  Mark Probst  <mark.probst@gmail.com>
177
178         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
179         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
180         free if parallel mark is enabled.
181
182 2010-07-13  Mark Probst  <mark.probst@gmail.com>
183
184         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
185         allocator if parallel mark (not committed yet) is enabled.
186
187 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
188
189         * reflection.c (inflate_mono_method): Handle dynamic
190         generic instances that have method.count set but
191         methods not. Fixes another crash from boo's test suite.
192
193 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
194
195         * icall.c (ves_icall_MonoMethod_get_base_method): If
196         the method slot is bigger than the class vtable, return
197         the original method. Makes booc work again.
198
199 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
200
201         * verify.c (mono_generic_param_is_constraint_compatible):
202         The candidate type itself might satisty the required
203         constraints.
204
205         Fixes #621599.
206
207 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
208
209         * reflection.c (fix_partial_generic_class): Inflate the
210         generic instance parent in case it was changed after
211         MonoGenericClass was instantiated.
212
213         Fixes one of the issues from #389886.
214
215 2010-07-10  Mark Probst  <mark.probst@gmail.com>
216
217         * sgen-gray.c: Store only a pointer to one end of the gray queue.
218
219 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
220
221         * loader.c (mono_method_signature_checked): Release the domain
222         lock on failure.
223
224 2010-07-10  Mark Probst  <mark.probst@gmail.com>
225
226         * sgen-gc.c: Store the forwarding address in the first word of an
227         object, where the forwarding bit is stored.
228
229 2010-07-10  Mark Probst  <mark.probst@gmail.com>
230
231         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
232         interface to register our Mach exception thread which will not be
233         suspended by stop-the-world.
234
235 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
236
237         * loader.c (mono_get_method_constrained): Properly unlock the
238         domain lock on failure. Use checked variant of
239         inflate_generic_signature.
240
241 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * loader.c (mono_method_signature_checked): Use checked
244         variant of inflate_generic_signature.
245
246         Fixes #606353.
247
248 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
249
250         * metadata.c (mono_metadata_parse_type_internal): Don't use
251         cannonical types when a transient type was requested.
252
253         Fixes #608626.
254
255 2010-07-10  Mark Probst  <mark.probst@gmail.com>
256
257         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
258         All functions that touch the gray queue directly or indirectly now
259         take it as an argument.
260
261 2010-07-10  Mark Probst  <mark.probst@gmail.com>
262
263         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
264         Put the gray queue data into a struct and pass it around.
265
266 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
267
268         * class.c (mono_method_can_access_method_full): Handle type
269         accessibility with very deep nested types.
270
271         * class.c (mono_method_can_access_field_full): Ditto.
272
273         Fixes #619300.
274
275 2010-07-10  Mark Probst  <mark.probst@gmail.com>
276
277         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
278         sgen-scan-object.h: Use a macro for rounding up sizes and
279         addresses to ALLOC_ALIGN.
280
281 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
282
283         * file-io.c: fix GetFileSystemEntries for patterns containing
284         directories.
285
286 2010-07-09  Mark Probst  <mark.probst@gmail.com>
287
288         * sgen-marksweep.c (major_finish_major_collection): Don't free
289         major heap blocks on 32 bit platforms because it can lead to
290         address space fragmentation.  We'll figure this out later.
291
292 2010-07-09  Mark Probst  <mark.probst@gmail.com>
293
294         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
295         heap blocks for mark&sweep eventually.
296
297 2010-07-09  Mark Probst  <mark.probst@gmail.com>
298
299         * sgen-protocol.c: Fix build when binary protocol is disabled.
300
301 2010-07-09  Mark Probst  <mark.probst@gmail.com>
302
303         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
304         thread-safe.
305
306 2010-07-08 Neale Ferguson <neale@sinenomine.net>
307
308         * sgen-archdep.h: Add support for s390x
309         * domain.c: Use gsize so that 64-bit big endian systems produce 
310         bitmap.
311
312 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
313
314         * pedump.c (verify_image_file): Initialize the vtable as well.
315
316 2010-07-07  Geoff Norton  <gnorton@novell.com>
317
318         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
319         header.
320
321 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
322
323         * assembly.c (mono_assembly_load_reference): Replace a g_warning
324         with a mono_trace calls. This makes compiling MD a lot less scary.
325
326 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
327
328         * verify.c (do_stobj): Improve error message.
329
330 2010-07-08  Mark Probst  <mark.probst@gmail.com>
331
332         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
333         from the object because it might have pinned/forwarding bits set.
334
335 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
336
337         * Makefile.am (sgen_sources): Add missing sgen files.
338
339 2010-06-07  Martin Baulig  <martin@ximian.com>
340
341         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
342         New helper function since mono_thread_get_abort_signal() is now
343         internal.
344
345 2010-06-07  Martin Baulig  <martin@ximian.com>
346
347         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
348
349 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
350
351         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
352         public, as mono_string_to_utf_8 is deprecated.
353
354         * object.(c|h): Added mono_object_to_string, a public helper function 
355         that calls ToString on a MonoObject and returns a MonoString.
356
357         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
358
359 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
360
361         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
362         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
363         match their declarations and vice-versa.
364
365
366 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
367
368         * class-internals.h, domain-internals.h: mark functions that are
369         needed by the llvm module.
370
371 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
372
373         * assembly.c (framework_assemblies): Add 3.5 assemblies.
374
375         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
376         by one to have room to remap 3.5 assemblies.
377
378         * domain.c (supported_runtimes): Add 3.5 remapping information.
379
380 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         * reflection.c (mono_image_create_token): Handle a
383         FieldBuilder from a different assembly.
384
385         Fixes #611836.
386
387 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
388
389         * verify.c (do_store_static_field): Improve error
390         message.
391
392 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
393
394         * assembly.c: Revert r159692 since it breaks loading 3.5
395         assemblies under 2.0.
396
397 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
398
399         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
400         TypedByRef is passed.
401
402         * icall.c (ves_icall_Type_make_byref_type): Ditto.
403
404         * icall.c (ves_icall_Type_MakePointerType): Ditto.
405
406         Fixes #612780.
407
408 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
409
410         * assembly.c: Add a few more assemblies to the list of framework
411         assemblies.
412
413         Fixes #617714.
414
415 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
416
417         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
418         fails.
419
420 2010-06-25  Mark Probst  <mark.probst@gmail.com>
421
422         * class.c (mono_class_inflate_generic_method_full_checked): Added
423         a comment regarding a hack in mini-trampolines.c.
424
425 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
426
427         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
428         sizeof(SIZEOF_VOID_P) which is 4.
429
430         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
431
432 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
433
434         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
435         GCs too.
436
437         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
438
439         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
440         objects.
441
442         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
443         desktop mode.
444
445 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
446
447         * *-gc.c (mono_gc_get_description): New function returning a human readable
448         description of the current GC.
449
450 2010-06-24  Miguel de Icaza  <miguel@novell.com>
451
452         * mono-hash.c: Moved here from mono/utils as this file is
453         GC-aware, and the utils directory is not.
454
455 2010-06-23  Miguel de Icaza  <miguel@novell.com>
456
457         * Makefile.am: Add support for building a sgen-aware versions of
458         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
459         they share all the components of the default, but use a differen
460         set of CFLAGS to enable SGEN instead.
461
462         Put the BOEHM defines in the CFLAGS definition. 
463
464         * domain-internals.h (MonoJitInfo): this structure used to have
465         different sizes depending on the GC that was configured (Boehm vs
466         SGen).   I have removed this difference for the sake of avoiding
467         the complexity of dealing with the mono/arch directory requiring
468         GC-specific changes to their Makefiles.
469
470 2010-06-23  Mark Probst  <mark.probst@gmail.com>
471
472         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
473
474 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
475
476         * metadata.c (mono_metadata_type_hash): Don't hash
477         the type kind for dynamic types since it can change.
478
479 2010-06-22 Geoff Norton  <gnorton@novell.com>
480
481         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
482         alloca instead to prevent a deadlock.
483
484 2010-06-22  Geoff Norton  <gnorton@novell.com>
485
486         * domain.c: Allow gettings the tls key, since we need it for
487         cross thread tls poking in sgen-mach
488         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
489         in external files for platform specific STW support.
490         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
491         * sgen-os-posix.c: Move the existing posix signal based STW here.
492
493 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
494
495         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
496
497 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
498
499         * object-internals.h: Map new PropertyBuilder fields.
500
501         * reflection.c (property_encode_signature): Emit an instance
502         signature if property's callconv is hasthis.
503
504         * appdomain.c: Bump corlib version.
505
506 2010-06-20  Jb Evain  <jbevain@novell.com>
507
508         * metadata-verify.c: do not consider the assembly invalid if it
509         doesn't have a #Blob stream as resource assemblies don't
510         necessarily have one.
511
512 2010-06-17  Geoff Norton  <gnorton@novell.com>
513
514         * sgen-archdep.h: sgen support for arm linux and darwin.
515
516 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
517
518         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
519         has a faulty header.
520
521 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
522
523         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
524         way to mono_gc_wbarrier_value_copy but takes a bitmap that
525         indicates which slots need a write barrier.
526
527 2010-06-14  Jonathan Pryor <jpryor@novell.com>
528
529         * Makefile.am (EXTRA_DIST): Add runtime.h.
530
531 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
532
533         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
534
535 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
536
537         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
538         IMT slot which is passed to callbacks.get_imt_trampoline.
539
540 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
541
542         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
543         imt trampoline per imt slot when using LLVM.
544
545 2010-06-10  Jonathan Pryor <jpryor@novell.com>
546
547         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
548           runtime.c:mono_runtime_shutdown().
549         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
550           AppDomain.ProcessExit event in all AppDomains.
551
552 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
553
554         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
555         done by the caller.
556
557 2010-06-05  Mark Probst  <mark.probst@gmail.com>
558
559         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
560         up freeing.
561
562 2010-06-05  Mark Probst  <mark.probst@gmail.com>
563
564         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
565         segments of memory at once, to reduce the number of mmap/munmap
566         calls.
567
568 2010-06-05  Mark Probst  <mark.probst@gmail.com>
569
570         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
571         allocations and distinguish between normal, degraded and pinned
572         allocations.
573
574 2010-06-05  Mark Probst  <mark.probst@gmail.com>
575
576         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
577         allocations count toward major collections and trigger major
578         collections from degraded allocations if appropriate.
579
580 2010-06-05  Mark Probst  <mark.probst@gmail.com>
581
582         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
583
584 2010-06-05  Mark Probst  <mark.probst@gmail.com>
585
586         * sgen-gc.c: Enable mark&sweep again.
587
588 2010-06-05  Mark Probst  <mark.probst@gmail.com>
589
590         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
591
592 2010-06-05  Mark Probst  <mark.probst@gmail.com>
593
594         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
595         major heap allowance for minor collections, instead of two
596         separate ones for small and large objects.  This reduces the
597         number of major collections.
598
599 2010-06-04  Marek Habersack  <mhabersack@novell.com>
600
601         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
602         the BFLAGS_IgnoreCase is raised
603
604 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
605
606         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
607         all information in a single structure. Return information about scopes as well.
608
609         * mono-debug.c (mono_debug_lookup_locals): Ditto.
610
611 2010-06-02  Geoff Norton  <gnorton@novell.com>
612
613         * appdomain.c: If we are running with IOMAP we might
614         have been provided a string that isn't case-aware for our file-
615         system, so we need to use io-portability to check if the file 
616         exists, rather than a simple glib test.
617
618         Fixes #608849
619
620 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
621
622         * verify.c (verify_generic_parameters): Verify if
623         there are not loops in constraints.
624
625 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
626
627         * verify.c (is_compatible_boxed_valuetype): Constaints
628         must be recursively checked if one generic argument
629         has a constraint on another.
630
631         Fixes #610625.
632
633 2010-05-31  Miguel de Icaza  <miguel@novell.com>
634
635         * console-unix.c (terminal_get_dimensions): Fix my previous
636         botched commit and return the actual value obtained from the ioctl.
637
638 2010-05-29  Mark Probst  <mark.probst@gmail.com>
639
640         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
641         references so that we don't have to do the cache-cold fetch of the
642         class in copy_object_no_checks().
643
644 2010-05-29  Robert Jordan  <robertj@gmx.net>
645
646         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
647         mono_marshal_string_to_utf16_copy () to avoid memory allocation
648         mismatches under Windows. Fixes pinvoke2:test_0_asany.
649
650 2010-05-28  Mark Probst  <mark.probst@gmail.com>
651
652         * sgen-gc.c: Change default nursery size to 4MB, because it
653         improves performance on many applications and benchmarks.
654
655 2010-05-28  Mark Probst  <mark.probst@gmail.com>
656
657         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
658         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
659         the GC descriptor by one bit, and don't encode the size for value
660         types not containing references.  Also get rid of
661         DESC_TYPE_STRING.
662
663 2010-05-28  Mark Probst  <mark.probst@gmail.com>
664
665         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
666         other than for remset processing.
667
668 2010-05-28  Mark Probst  <mark.probst@gmail.com>
669
670         * sgen-gc.c: More and better remset consistency checks.
671
672 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
673
674         * sgen-gc.c: Add a note about the int[] trick to avoid some
675         memset.
676
677 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
678
679         * sgen-gc.c (sort_addresses): Use heap sort since it has better
680         performance.
681
682         This helps programs with lots of threads or thread with big stacks
683         since the bottleneck the pin queue can get quite big.
684
685 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
686
687         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
688         a separate function called setup_fragment.
689
690         * sgen-gc.c (search_fragment_for_size_range): Variant of
691         search_fragment_for_size that does search for a secondary smaller
692         size.
693
694         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
695         for tlab allocation so small fragments are used.
696
697         This patch uses small fragments for tlab allocation when possible in order
698         to improve nursery utilization. With a fixed size tlab this patch is not very
699         usefull but once size gets dynamically adjusted, this will be invaluable.
700
701         Performance under pystone 500k is unchanged. Nursery utilization improves by
702         3.5% and 18 more fragments are used per minor GC.
703
704         Performance under modified binary-tree is unchanged. Nursery utilization
705         improves by 0.5% and 3 more fragments are used per minor GC.
706
707         These numbers make sense since as more pinning happens, more fragments are
708         created and so are the chances of having a bunch of small ones.
709
710 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
711         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
712         the current fragment when allocating a TLAB.
713
714         Reduces number of pystone 500k minor collections by 7%.
715
716 2010-05-25  Martin Baulig  <martin@ximian.com>
717
718         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
719
720         * debug-mono-symfile.c: Release memory from symfiles that were
721         loaded from memory.
722
723 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
724
725         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
726         during shutdown.
727
728 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
729
730         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
731         target class and remove some dead code.
732
733 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
734
735         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
736         the MonoTypes inside method headers can be freed when the header is freed.
737
738 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
739
740         * threadpool.c: Fix the DISABLE_SOCKETS build.
741
742 2010-05-19 Martin Baulig  <martin@novell.com>
743
744         Fix #604911.
745
746         * threads.c (wait_for_tids_or_state_change): Use an
747         alertable WaitForMultipleObjectsEx().
748         (wait_for_tids): Likewise.
749
750 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
751
752         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
753         icall.
754
755         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
756         gc tracked memory.
757
758         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
759         argument from a gchandle.
760
761         * marshal.c: Get rid of the delegate_target_locations hash table.
762
763         Fixes #605295.
764
765 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
766
767         * sgen-gc.c: Use _fast variants for string and array length.
768
769 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
770
771         * sgen-gc.c: Fix counters to be 64 bits.
772
773         * sgen-gc.c (dump_heap): Fix formating strings.
774
775 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
776
777         * sgen-gc.c (global_remset_location_was_not_added): New
778         function that implements a 2 element LRU cache for just
779         added remsets. It is used to avoid adding duplicate ones.
780
781         * sgen-gc.c (add_to_global_remset): Check cache before
782         adding new entry.
783
784         * sgen-gc.c (scan_from_remsets): Don't process global remsets
785         that fail the cache test.
786
787         * sgen-gc.c (scan_from_remsets): Simplify the global remset
788         loop removing one condtion that is not possible.
789
790         A 2 element LRU cache was chosen by profiling IronPython 2.6
791         pytones with 1M passes and corlib compilation.
792
793         For the ipy test duplication was originally 940.92, measured
794         by "Store remsets" divided by "Unique store remsets".
795
796         With a 2-element LRU, duplication went to 1.007. Without the
797         check in scan_from_remsets 1.438.
798
799         With a 16-elements LRU, duplication reduction was negligibe.
800         A single element cache was basically of no use.
801
802         With corlib compilation duplication went from  1.4 to 1.02.
803
804         Performance results is a 20% time decrease for ipy and 2%
805         with corlib.
806 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
807
808         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
809
810 2010-05-15  Geoff Norton  <gnorton@novell.com>
811
812         * mono-debug.c: Fix a leak of the global table on shutdown.
813
814 2010-05-15  Geoff Norton  <gnorton@novell.com>
815
816         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
817         to clean up MonoDebugSourceLocation's.
818
819 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
820
821         * class.c (mono_class_create_from_typedef): Fail a class
822         if there is a loop with its parent.
823
824         Fixes #598239.
825
826 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
827
828         * loader.c (mono_loader_set_error_type_load): Convert
829         a g_warninig to mono_trace_warning.
830
831 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
832
833         * class.c (mono_class_get_full): Release strings on failure
834         to avoid leaking them.
835
836 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
837
838         * class.c (mono_class_create_from_typedef): Only return
839         the class if no exceptions were detected.
840
841         * class.c (mono_class_create_from_typedef): Don't remove
842         broken classes from class_cache. Just set failure and
843         bail out.
844
845         This fixes a memory a memory leak where resolving the same
846         broken class multiple times resulted in a memory leak.
847
848         The right behavior would be to actually return the class
849         a let the caller figure it out.
850
851 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
852
853         * mono-ptr-array.h: Add mono_ptr_array_sort.
854
855         * reflection.c (mono_image_build_metadata): Replace that ugly
856         qsort call with mono_ptr_array_sort.
857
858 2010-05-13  Mark Probst  <mark.probst@gmail.com>
859
860         * sgen-gc.c: Switch to the copying major collector, because
861         Mark&Sweep is still buggy.
862
863 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
864
865         * reflection.c (mono_image_build_metadata): Don't put managed
866         references on non-tracked memory.
867
868 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
869
870         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
871
872 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
873
874         * icall.c: Switch to mono-ptr-array.h.
875
876 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
877
878         * Makefile.am: Add mono-ptr-array.h.
879
880         * mono-ptr-array.h: New header that implements
881         a GC tracked equivalent of g_ptr_array. 
882
883 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
884
885         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
886         method to avoid initializing the class.
887
888         Fixes #605115.
889
890 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
891
892         * icall.c (ves_icall_System_MonoType_getFullName): It
893         doesn't require to init the class.
894
895 2010-05-11  Miguel de Icaza  <miguel@novell.com>
896
897         * console-unix.c: Signal handlers now save and restore errno.   We
898         have never had a bug report about this, ioctl does change errno. 
899
900         Hide the unused method.   
901
902         Remove internal declarations from public headers.
903
904         Document what the signal handler is doing
905
906 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
907
908         * sgen-gc.c (clear_unreachable_ephemerons): Clear
909         unreachable keys with a tombstone.
910
911         * sgen-gc.c (mark_ephemerons_in_range): Ignore
912         tombstone keys.
913
914 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
915
916         * icall-def.h:
917         * gc-internals.h:
918         * gc.c: New GC:get_ephemeron_tombstone.
919
920 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
921
922         * appdomain.c (create_exceptions): Rename to
923         create_domain_objects. Create the ephemeron tombstone object.
924
925         * domains-internals.h (MonoDomain): Add new field for the
926         ephemeron tombstone.
927
928         * domain.c (mono_domain_free): Set ephemeron_tombstone to
929         NULL.
930
931 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
932
933         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
934         and dislinks must be processed before LOS since they
935         could end up with pointers to memory returned to the
936         OS.
937
938 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
939
940         * class.c (mono_class_alloc): New helper function to centralize memory allocation
941         for classes, allocates either from the image mempool or from the heap.
942
943         * class.c: Use mono_class_alloc to allocate memory owned by classes.
944
945         * metadata.c (free_generic_class_dependents): Free more items belonging to
946         generic classes.
947
948 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
949
950         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
951         as well. Fixes #604054.
952
953 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
954
955         * metadata-verify.c: MS doesn't mind duplicates in the
956         typeref table. Move it to full verification.
957
958         Fixes #600508.
959
960 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
961
962         * image.c (do_mono_image_load): Report verification
963         errors when loading an image fails.
964
965 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * reflection.c (mono_type_get_object): Remove chunk of code
968         no longer in use.
969
970 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
971
972         * icall-def.h
973         * icall.c: Delete some unused icalls.
974
975 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
976
977         * appdomain.c (mono_domain_has_type_resolve): Check for
978         NULL domain objects to make pedump happy.
979
980         * object.c (mono_field_get_value): Assert on NULL object.
981         It's the caller resposibility to check for this.
982
983         * object.c (mono_field_get_value_object): Ditto.
984
985         Fixes #601384.
986
987 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
988
989         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
990         checks can avoid doing a mono_class_init.
991
992         * icall.c: Remove mono_class_init from a bunch of icalls that
993         don't need it.
994
995         Hopefully we're now lazy enough to fix most victims of #601431.
996
997 2010-05-07  Mark Probst  <mark.probst@gmail.com>
998
999         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
1000
1001 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1002
1003         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
1004
1005 2010-05-07  Marek Habersack  <mhabersack@novell.com>
1006
1007         * culture-info-tables.h: updated to include en-TT culture. Fixes
1008         bug #594035
1009
1010 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1011
1012         Move mono_class_init from mono_type_get_object to icalls.
1013         This causes massive memory savings for Assembly::GetTypes () and
1014         make it fail a lot less due to missing dependencies.
1015
1016         This is a conservative, naive change as it doesn't remove some
1017         mono_class_init from places that might not need them. Carefull
1018         review of those should follow.
1019
1020         * reflection.c (mono_type_get_object): Don't mono_class_init the
1021         returning type.
1022
1023         * reflection.c:
1024         * cominterop.c:
1025         * icall.c:
1026         * marshal.c: Call mono_class_init in functions receiving a MonoType
1027         object.
1028
1029         First step into fixing #601431.
1030
1031 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1032
1033         * gc-internal.h: Add new functions required for ephemeron support.
1034
1035         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
1036
1037         * icall-def.h: Add GC::register_ephemeron_array.
1038
1039         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
1040         under sgen. Its fields must not be marked.
1041
1042         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
1043
1044         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
1045         handling finalizable objects. Clean dead ones after all finalizable
1046         handling.
1047
1048         * sgen-gc.c (dump_heap): Add new kind of internal memory.
1049
1050         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
1051         arrays from the dead domain.
1052
1053         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
1054
1055         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
1056         whose keys are reachable.
1057
1058         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
1059         list of live ephemeron arrays.
1060
1061 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1062
1063         * class.c (mono_class_layout_fields): Don't perform alignment
1064         if align is zero.
1065
1066         * class.c (mono_class_layout_fields): Init field related information
1067         to sane defaults.
1068
1069 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * verify.c (mono_verifier_verify_class): Verify the constraint
1072         of generic type definitions.
1073
1074 2010-05-04  Mark Probst  <mark.probst@gmail.com>
1075
1076         * sgen-marksweep.c: Simplify free list maintenance in sweep.
1077
1078 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1079
1080         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
1081         major_do_collection() across the two major collectors.
1082
1083 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1084
1085         * sgen-gc.c: Add heavy statistics counter for re-added global
1086         remsets.
1087
1088 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1089
1090         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
1091         get rid of a division in critical code.
1092
1093 2010-04-29  Mark Probst  <mark.probst@gmail.com>
1094
1095         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
1096         blocks for objects without references in mark&sweep, to improve
1097         performance.
1098
1099 2010-04-28  Mark Probst  <mark.probst@gmail.com>
1100
1101         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
1102         statistics up-to-date.
1103
1104 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1105
1106         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
1107         heap-dump for mark&sweep.
1108
1109 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * loader.c (mono_method_get_header): Move the is_inflated case before the
1112         wrapper case, as a method can be both.
1113
1114 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1115
1116         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
1117         separate pass to scan pinned and large object but use the gray
1118         queue like for regular objects.
1119
1120 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1121
1122         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
1123         string.h for memmove.
1124
1125         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
1126         ipaddress_to_struct_in6_addr() is only needed when
1127         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
1128
1129 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1130
1131         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
1132         separate copy_object functions for major vs nursery.  Allows us to
1133         get rid of a few checks and the start and end parameters for many
1134         functions.
1135
1136 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1137
1138         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
1139         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
1140         collector.
1141
1142 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
1145         calling setup_mono_type () since the nested parent could recursively reference
1146         the nested class using generic constraints. Fixes #599469.
1147
1148 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1149
1150         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
1151         abstraction.
1152
1153 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1154
1155         * sgen-gc.c: Remove more unneeded code.
1156
1157 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1158
1159         * sgen-gc.c: Disable managed allocator and wbarrier when the
1160         binary protocol is enabled.
1161
1162 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1163
1164         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1165
1166 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1167
1168         * sgen-gc.c: Remove a few commented out and unneeded bits.
1169
1170 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1171
1172         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1173         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1174
1175 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1176
1177         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1178         types.
1179
1180         Fixes #331126
1181
1182 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1183
1184         * sgen-gc.c: Turn off semi-precise stack mark.
1185
1186 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1187
1188         * reflection.c (mono_custom_attrs_from_index): Use right function
1189         to free 'list' (i.e. g_list_free) if the verifier fails.
1190
1191 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1194                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1195                 and MONO_TYPE_VALUETYPE in those case.
1196
1197                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1198
1199                 Hopefully Fixes #564253.
1200
1201 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1202
1203         * domain-internals.h: made threadpool_jobs volatile.
1204         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1205         all local jobs.
1206         * threadpool.c:
1207                 -When two threads try to initialize the socket IO pool,
1208                 the second one waits until the intialization is finished
1209                 instead of continuing right away.
1210                 -Add checks for domain unload: no items added in this case.
1211                 -Only measure the time every 10 elements added to the queue.
1212                 This is an experiment since linux x86 gettimeofday() sucks.
1213                 -Create new thread if there are none waiting for work items.
1214                 -There was a missing decrement of the busy threads.
1215                 -Make sure the local queue is cleaned up before exiting the
1216                 thread when the program ends.
1217
1218 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * reflection.c (mono_type_get_object): Normalize generics types
1221         as to how managed code expect them to be. A generic instance over
1222         the GTD arguments must have the same mirror as the GTD itself.
1223
1224         Fixes #473289.
1225
1226 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1227
1228         * locales.c: Implement support for DISABLE_NORMALIZATION.
1229
1230 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1233         since it is not a MonoMethod.
1234
1235 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1236
1237         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1238         System.Security.SecurityManager - used only by Moonlight
1239         * security-core-clr.c|h: Add Elevated Trust/Permission support
1240         for CoreCLR / Moonlight
1241
1242 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1243
1244         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1245         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1246
1247 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1248
1249         * mono-perfcounters.c: added code for the "Mono
1250         Memory/Total Physical Memory" performance counter.
1251
1252         * mono-perfcounters-def.h: added definition of the "Mono
1253         Memory/Total Physical Memory" performance counter.
1254
1255 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1256
1257         * class.c (mono_class_get_method_by_index): Return NULL
1258         on type load failures.
1259
1260 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * class.c (mono_class_from_typeref): Check if the supplied
1263         image has an assembly bound to it.
1264
1265         Fixes #567884.
1266
1267 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1268
1269         * loader.c (mono_method_get_signature_full): Use new function
1270         inflate_generic_signature_checked to check for errors.
1271
1272         Fixes #560839.
1273
1274 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1275
1276         * loader.c (inflate_generic_signature): Add _checked variant
1277         and move this function to use it.
1278
1279 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1280
1281         * class.c (mono_class_setup_vtable_general): Use error checking
1282         version of mono_class_inflate_generic_method_full.
1283
1284         Fixes #596975.
1285
1286 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1287
1288         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1289         error handling passing MonoError around.
1290
1291         Fixes #560336.
1292
1293 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1294
1295         * socket-io.c: make GetHostByName ("") work on windows.
1296         Fixes bug #456723.
1297
1298 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1299
1300         * object-internals.h:
1301         * threads.c: use a spin lock when accesing the per-thread appdomain
1302         list.
1303
1304 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1305
1306         * threads.c: no need to take the threads lock in push/pop appdomain.
1307
1308 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1309
1310         * reflection.c (_mono_reflection_parse_type): MS supports
1311         non-assembly-qualified types in a generic type parameter list
1312         when enclosed in '[]' (which signals that they should be a fqn).
1313
1314         This breaks ECMA specs for how type names are encoded in cattr
1315         blobs but F# does it.
1316
1317         Fixes #576342.
1318
1319 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1320
1321         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1322         for instance methods/ctors.
1323
1324         Fixes #422113.
1325
1326 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1327
1328         * reflection.c: Use the new verifier support for checking
1329         custom attributes.
1330
1331         Fixes #595306.
1332
1333 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1334
1335         * metadata-verify.c: Implement structural verification
1336         of custom attributes. This check requires access to the
1337         loader since to resolve the size of an enum we have to
1338         look it up.
1339         We don't check if named argumenments are encoded in a
1340         compatible fashion to their underlying field/prop.
1341         Maybe we should?
1342
1343         * verify-internals.h: Add two new cattr verification API.
1344
1345 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1346
1347         * metadata-verify.c (decode_signature_header): Fix signature.
1348
1349 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1350
1351         * verify.c (mono_verifier_is_enabled_for_method): Handle
1352         assembly less images.
1353
1354         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1355
1356 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1357
1358         * loader.c (mono_method_signature_checked): Properly
1359         init MonoError.
1360
1361         * loader.c (mono_method_signature): It's the calee
1362         resposibility to init the error object.
1363
1364 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1365
1366         * metadata-verify.c (decode_signature_header): Do proper
1367         overflow checking.
1368
1369 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1370
1371         * reflection.c: maintain the invariants required by
1372         mono_class_layout_fields() also in typebuilder_setup_fields ().
1373
1374 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1375
1376         * security-core-clr.c: Call mono_class_setup_methods in 
1377         get_default_ctor before checking klass->methods. Fix typo in
1378         comment
1379
1380 2010-04-10  Jb Evain  <jbevain@novell.com>
1381
1382         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1383         add .net 4.0 RTM version.
1384
1385 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1386
1387         * reflection.c (resolve_object): Properly inflate generic
1388         methods when a context is supplied.
1389
1390         Fixes #591226.
1391
1392 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * verify.c (mono_method_verify): A switch op don't empty
1395         the stack for the next one. Fixes a bug when running fsi
1396         under --verify-all.
1397
1398 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1399
1400         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1401         fields as valid standalone sig too. F# does generate them.
1402
1403         * metadata-verify.c (verify_typedef_table_full): Ignore
1404         what <module> extends.
1405
1406 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1407
1408         * verify.c (do_invoke_method): It's ok to do use call with
1409         virtual, non-final methods if their class is sealed.
1410
1411 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1414         is a near identical copy of mono_field_get_value_object. So simply
1415         call it.
1416
1417         * object.c (mono_field_get_value_object): Handle literal fields
1418         on open generic classes.
1419
1420         Fixes #594942.
1421
1422 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1423
1424         * reflection.c (mono_reflection_create_runtime_class): Setup
1425         parent/supertype information again since it can be changed
1426         without notice.
1427
1428 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1429
1430         * verify.c (verify_type_compatibility_full): Properly handle
1431         stores between arrays of primitives.
1432
1433         Fixes the verifier side of #555950.
1434
1435 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1436
1437         class.c (mono_bounded_array_class_get): Properly init
1438         cast_class to take the fact that uint[] and int[] can be
1439         casted between each other.
1440
1441         Fixes #555950.
1442
1443 2010-04-07  Geoff Norton  <gnorton@novell.com>
1444
1445         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1446
1447 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1450         builders. Fixes #594464.
1451
1452 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1455         waiting for all threads to suspend, as those threads can't be suspended.
1456
1457 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1460         to avoid crashes on newly created threads.
1461
1462 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1463
1464         * file-io.c: reset the MonoIOStat structure in case of error.
1465         Fixes bug #582667.
1466
1467 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1468
1469         * class.c (print_implemented_interfaces): Print proper type name.
1470
1471         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1472         the override map for generic instances since it later ignored.
1473
1474         * class.c (mono_class_implement_interface_slow): Don't break for
1475         dynamic generic instances.
1476
1477         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1478
1479         * reflection.c (mono_reflection_method_get_handle): New method that
1480         resolves a method handle.
1481
1482         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1483         case when we override methods from a dynamic generic instance interface.
1484
1485         Fixes #575941.
1486
1487 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1488
1489         * threadpool.c: don't attempt to close the pipe when it has not been
1490         created.
1491
1492 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1493
1494         * threadpool.c: if there are no waiting threads, try to start a new
1495         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1496         No need to use InterlockedCompareExchange to read volatile variables.
1497
1498 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1499
1500         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1501         and reference types that point to the same class.
1502
1503         Fixes #565598.
1504
1505 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1506
1507         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1508         when verifying compatibility between a generic instance and a generic
1509         parameter.
1510
1511         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1512
1513         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1514         name.
1515
1516         Fixes #587849.
1517
1518 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1519
1520         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1521
1522 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1525
1526 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1527
1528         * process.c: when cross-compiling with MinGW, force GetProcessId
1529         lookup using GetProcAddress.
1530
1531 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1532
1533         * sgen-gc.c: parse_environment_string_extract_number() must be
1534         static.
1535
1536 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1537
1538         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1539         gray_object_dequeue(), to make sure they're inlined.
1540
1541 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1542
1543         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1544         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1545
1546 2010-04-02  Jb Evain  <jbevain@novell.com>
1547
1548         * exception.c: remove dead code.
1549
1550 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1553         with mono-gc.h.
1554
1555 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1556
1557         * sgen-gc.c: Make the nursery size adjustable by the
1558         MONO_GC_PARAMS environment variable.
1559
1560         Code is contributed under MIT/X11 license.
1561
1562 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1563
1564         * threadpool.c: threadpool threads wait is alertable.
1565         Fixes bug #592964.
1566         Reduced the stack size of the *poll_wait thread.
1567
1568 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1569
1570         * exception.c|metadata-internals.h: Add new mono_get_exception_
1571         field_access_msg and mono_get_exception_method_access_msg 
1572         functions that accept a const char* parameter to provide more 
1573         details when the exception is thrown.
1574         * security-core-clr.c|h: Rework code to allow logging exceptions
1575         (export MONO_LOG_MASK="security") and to supply more details in
1576         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1577         mono_security_core_clr_is_field_access_allowed and 
1578         mono_security_core_clr_is_call_allowed to return an exception,
1579         with messages and logging, that can be emitted by method-to-ir.c
1580
1581 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1582
1583         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1584         pinned object.
1585
1586 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1589         the assembly name is not well formed utf8. Fixes #567882.
1590
1591 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1594         the generic parameters from the builder. Fixes #473298.
1595
1596 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1597
1598         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1599
1600         * marshal.c (emit_marshal_boolean): Eliminate possible
1601         uninitialized local warning. 
1602
1603 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1604
1605         * class.c (mono_class_init): Postpone coreclr inheritance check
1606         until the end of the initialization (so we can check up the 
1607         default ctor manually for the core-clr inheritance rules).
1608         * security-core-clr.c: Add the missing (undocumented) checks on
1609         default constructors when verifying inheritance rules.
1610
1611 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1612
1613         * domain-internals.h (MonoJitExceptionInfo): Add new field
1614         handler_end to the data union. To be used to point the end
1615         of a finally block.
1616
1617 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * reflection.c: Add support for new v4 type
1620         System.Reflection.MonoModule that is the concrete version
1621         of Module which is abstract unver v4.
1622
1623 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1624
1625         * class.c (mono_class_init): Don't set class failure after
1626         inited = 1 is set. It must be done before.
1627
1628 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1629
1630         * mono-config.c: Add support for OS "haiku"
1631         * ChangeLog: Fix UTF-8 encoding
1632
1633         Code is contributed under MIT/X11 license.
1634
1635 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1636
1637         * console-unix.c: fixed include logic for sys/ioctl.h.
1638
1639 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1640
1641         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1642         systems.
1643
1644 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1645
1646         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1647         unfinished/broken typebuilders.
1648
1649 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1650
1651         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1652         for the minor section allowance.
1653
1654 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1655
1656         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1657         "NoOptimization".
1658
1659 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1660
1661         * sgen-gc.c: Count bytes allocated with heavy statistics.
1662
1663 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1664
1665         * sgen-gc.c: More detailed time statistics.
1666
1667 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1668
1669         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1670         fix the user defined mark interface to pass a pointer
1671         to the object location and not the object itself.
1672
1673 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1674
1675         * reflection.c (mono_method_body_get_object): Release
1676         the method header before the call to CACHE_OBJECT since
1677         this is a macro that returns.
1678
1679 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1680
1681         * class.c (inflate_generic_type): mono_metadata_type_dup
1682         already dupes array information, the g_memdup was just
1683         leaking memory.
1684
1685 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1686
1687         * verify.c: Add stack_peek function. Fix CEE_DUP
1688         to not read from invalid memory if push did expand
1689         the stack.
1690
1691 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1692
1693         * verify.c: Remove old table verification code that has
1694         been superseeded by the new metadata verifier.
1695
1696         * verify.h: Remove mono_image_verify_tables from the public
1697         API.
1698
1699         * pedump.c: Fix for removed bits.
1700
1701 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1702
1703         * verify.c: Allocate stack slows lazily to reduce stack usage
1704         in case of methods with huge stacks. Reduces memory consumption
1705         for mcs yyparse from 459Mb to 1.8Mb.
1706
1707 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1708
1709         * threadpool.c: don't try executing items from domains being
1710         unloaded. Fixes appdomain-async-invoke test.
1711
1712 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1713
1714         * threadpool.c: spin while the threadpool initializes.
1715         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1716         down, don't do anything.
1717
1718 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1719
1720         * threads.c (mono_thread_create_internal): Set the GC type of the
1721         threads_starting_up hash table.
1722
1723 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1724
1725         * threadpool.c: reset 'state' to avoid returning non-null when the
1726         event type is not found.
1727
1728 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1729
1730         * sgen-gc.c: make copy_object () take the address of the
1731         slot holding the reference. This allows saving memory stores
1732         when not needed and it allows keeping track of oldspace->nursery
1733         references for the card table code.
1734
1735 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1736
1737         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1738
1739         Code is contributed under MIT/X11 license.
1740
1741 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1742
1743         * object.c, threads.c, threads-types.h, threads.h: make the
1744         managed thread local storage references precisely tracked.
1745
1746 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1747
1748         * threadpool.[ch]: reworked the threadpool:
1749                 -Threadpool threads use a work-stealing queue. Adding a work
1750                 item from a threadpool thread will queue it in the thread
1751                 local queue without locking (in most cases).
1752                 -epoll events are coalesced before being added to the IO
1753                 queue.
1754                 -Dynamically change the number of active threads
1755                 -Changed the global queue to be more GC friendly
1756
1757         * class-internals.h: add 2 new performance counters for the number of
1758         threads in the threadpool and the IO threadpool.
1759
1760         * object-internals.h: new field in MonoAsyncResult.
1761         * icall-def.h: new internal call for queueing work items.
1762
1763         * Makefile.am: add 2 new files.
1764
1765         * appdomain.c: bump up corlib version.
1766
1767         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1768
1769         * mono-perfcounters-def.h:
1770         * mono-perfcounters.c: added 2 new performance counters.
1771
1772 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1773
1774         * sgen-gc.c: More FIXME/TODO updates.
1775
1776 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1777
1778         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1779         function mono_gc_invoke_with_gc_lock() which invokes a function
1780         with the guarantee that no collection will occur during its execution.
1781
1782 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1783
1784         * sgen-gc.c: Update a few comments.
1785
1786 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1787
1788         * reflection.c: Add support for new v4 type
1789         System.Reflection.MonoAssembly that is the concrete version
1790         of Assembly which is abstract unver v4.
1791
1792 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1793
1794         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1795         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1796
1797         Expose a few macros that are needed for SR but not SRE to the
1798         world (previous inside the SRE ifdef)
1799
1800 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1801
1802         * sgen-gc.c (gc_register_current_thread): We need
1803         stack_start_limit as well in the non-attribute pthread case.
1804
1805 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1806
1807         * threads.c: Fix windows build.
1808
1809 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1810
1811         * thread-types.h: Add mono_thread_resume_interruption.
1812
1813         * threads.c: Add mono_thread_resume_interruption, this
1814         function should be called after the last protected handler
1815         found at interruption time has finished.
1816
1817 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1818
1819         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1820         Check MonoInternalThread's ::state instead of ::abort_exc
1821         since the later can be lazily created.
1822
1823         This is specially problematic when running a finally block
1824         under AbortRequested state. ResetAbort must work, but the
1825         abort_exc object has not been created because interruption
1826         has not began.
1827
1828 2010-03-22  Geoff Norton  <gnorton@novell.com>
1829
1830         * locales.c: Its possible for CFStringGetCStringPtr
1831         to return null and not convert encodings.  Use
1832         CFStringGetCString instead.
1833
1834 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1835
1836         * class-internals.h, class.c, object.c: introduce compressed
1837         interface bitmaps (for now only under small config): this saves
1838         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1839         startups.
1840
1841 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1842
1843         * mono-debug.c: don't try to get the method header, it causes a
1844         deadlock and it is not used for anything anymore.
1845
1846 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1847
1848         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1849         broken by the last change.
1850
1851 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1852
1853         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1854         SOCK_RDM.
1855         
1856         Code is contributed under MIT/X11 license.
1857
1858 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1859
1860         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1861         nursery.
1862
1863         Code is contributed under MIT/X11 license.
1864
1865 2010-03-19  Martin Baulig  <martin@ximian.com>
1866
1867         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1868         dummy field, containing an empty string.
1869         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1870
1871
1872 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1873
1874         * class.c: setup_interface_offsets() refactor to not call
1875         mono_class_get_implemented_interfaces () more times than needed and
1876         to reduce the runtime memory requirements to be O(num_interfaces)
1877         instead of O(max_interface_id).
1878
1879 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1880
1881         * mono-mlist.[ch]: add mono_mlist_set_next ().
1882
1883 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1884
1885         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1886         associated changes to support holes in the protected range of a
1887         try block.
1888
1889         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1890         retrieves the holes table from a given MonoJitInfo.
1891
1892 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1893
1894         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1895         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1896         hide the contents of the MonoString and MonoArray structs from the
1897         public API. Change the accessor macros to accessors functions where
1898         needed. Adjusted the array API to allow for pointer-sized lengths and
1899         starting positions, so 64 bit arrays can be optionally provided in an
1900         API compatible way if needed on 64 bit systems.
1901
1902 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1903
1904         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1905         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1906
1907 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1908
1909         * class-internals.h: remove the method header from MonoMethod since
1910         from now on it will be transient. We have a header pointer for method
1911         wrappers, since in that case we need to keep track of it. For this
1912         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1913         structs now. The same happens with MonoMethodInflated.
1914         * class.c: reset the sre_method flag for inflated method structures:
1915         this makes the code that cares look at the header in the MonoMethodInflated
1916         structure.
1917         * loader.c: lookup the method header in the appropriate field now that
1918         it is removed from MonoMethod.
1919         * metadata-internals.h: add a flag to the method header to know if it
1920         can be freed inside mono_metadata_free_mh ().
1921         * method-builder.c: updates after moving the header field from
1922         MonoMethod to MonoMethodWrapper.
1923         * reflection.c: MonoMethods generated from Reflection.Emit use
1924         MonoMethodWrapper structs if they need a method header now (later take
1925         advantage of this and remove all the current unsafe uses of method_aux_hash).
1926         * metadata.c: make method header parsing not leak when verification
1927         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1928         These changes save a few hundred KB of runtime memory in a mcs
1929         bootstrap or a monodevelop startup.
1930
1931 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1932
1933         * verify.c: Improve error message.
1934
1935 2010-03-12  Jb Evain  <jbevain@novell.com>
1936
1937         * reflection.c (add_exported_type): populate the exported
1938         table with the type's nested type.
1939
1940 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1941
1942         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
1943         can't read parentheses.
1944
1945 2010-03-10  Mark Probst  <mark.probst@gmail.com>
1946
1947         * threads.c (thread_cleanup): Add a guard to dereferencing
1948         "thread" to avoid an unlikely race condition.
1949
1950 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
1951
1952         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
1953         instead of an empty string.
1954
1955 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
1958         convert to a boolean, recent gcc versions compile this differently.
1959
1960 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1961
1962        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
1963        inlined.
1964
1965 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1966
1967         * sgen-gc.c (STRING_SIZE): Off by one.
1968
1969 2010-03-09  Mark Probst  <mark.probst@gmail.com>
1970
1971         * sgen-archdep.h: Fix the signal context register access for
1972         AMD64.
1973
1974 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
1977
1978 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1979
1980         * verify.c: Store the initial basic block returned by mono_basic_block_split
1981         so we can release the whole list and not just the first one.
1982
1983 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1984
1985         * verify.c, debug-helpers.c, profiler.c, loader.c,
1986         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
1987         MonoMethodHeader a transient entity.
1988
1989 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
1992         uncontrolled growth of the gray stack.
1993
1994         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
1995         added items are removed first, improving cache locality. Avoid freeing queue
1996         segments in the fast path, use the list of segments as the free list, truncate
1997         it to its max size at the start of collection.
1998
1999 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
2000
2001         * metadata-internals.h: more memory savings, both with small config and without.
2002
2003
2004 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
2005
2006         * appdomain.c, domain-internals.h, domain.c, object.c:
2007         make class_vtable_hash into an array to reduce memory usage.
2008
2009 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
2010
2011         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
2012         object-internals.h, object.c, reflection.c, threadpool.c:
2013         reduce resource usage when the small config is selected.
2014         In particular, up to 64K of methods/fields/properties/events
2015         are allowed and "other" methods in events are ignored.
2016
2017 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
2018
2019         * threads.c: reduce resource usage when compiled for a small config.
2020
2021 2010-03-05  Mark Probst  <mark.probst@gmail.com>
2022
2023         * sgen-gc.c: Also collect number of degraded-alloced objects with
2024         heavy statistics.
2025
2026 2010-03-04  Geoff Norton  <gnorton@novell.com>
2027
2028         * assembly.c: Only support OSX bundling if the bundle is 
2029         actually detectable.
2030
2031 2010-03-04  Geoff Norton  <gnorton@novell.com>
2032
2033         * loader.c: The marshal specs are freed at the end of the call
2034         but it explicitly frees the strings as well as the container,
2035         so we need to dup them too to avoid referencing free'd memory.
2036
2037 2010-03-04  Geoff Norton  <gnorton@novell.com>
2038
2039         * icall-def.h:
2040         * icall.c: Add a new private internal icall to construct
2041         an object from its type without running the ctor.
2042
2043 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
2044
2045         * profiler.c: allow multiple profiler engines to be loaded
2046         at the same time.
2047
2048 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2049
2050         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
2051         profiler event to track object moves.
2052
2053 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
2054
2055         * object.c, profiler.c, profiler.h, string-icalls.c:
2056         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
2057
2058 2010-03-03  Miguel de Icaza  <miguel@novell.com>
2059
2060         * decimal.c (mono_double2decimal): Add support for reducing the
2061         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
2062         expected.
2063
2064 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2065
2066         * icall-def.h:
2067         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
2068
2069 2010-03-03  Marek Habersack  <mhabersack@novell.com>
2070
2071         * mono-config.c (mono_config_parse_assembly_bindings): added -
2072         parses assembly binding redirections from appdomain's config
2073         file.
2074
2075         * metadata-internals.h: added definition of a new function -
2076         mono_config_parse_assembly_bindings - to support parsing assembly
2077         binding redirections defined in appdomain's config file.
2078
2079         * domain-internals.h: added two new fields to _MonoDomain - a list
2080         of assembly bindings and a flag to parse the config file only
2081         once.
2082
2083         * assembly.c (assembly_binding_maps_name): empty culture name and
2084         NULL culture name are considered equal.
2085         (mono_assembly_apply_binding): added support for domain specific
2086         assembly binding redirections, read from the appdomain's
2087         configuration file. Fixes bug #580185
2088
2089 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
2090
2091         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
2092         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
2093         support.
2094
2095 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2096
2097         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
2098         from this function. The new function receive the parent token instead of a type.
2099
2100         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
2101         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
2102         typebuilders. This make it possible to properly encode generic type builders since
2103         their unmanaged type don't have generics data while unfinished.
2104
2105         Fixes #583655.
2106
2107 2010-03-02  Mark Probst  <mark.probst@gmail.com>
2108
2109         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
2110         writing binary log files (can be enabled by #define'ing
2111         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
2112         bugs in longer running programs.
2113
2114 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
2115
2116         * metadata.c: added some API documentation.
2117
2118 2010-03-01  Robert Jordan  <robertj@gmx.net>
2119
2120         * filewatcher.h: Include glib.h to fix the MSVC build.
2121
2122 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
2125         a GC handle instead. This is a bit slower to access, but avoids burdening the
2126         GC with 100s of individual roots.
2127
2128         * reflection.c (mono_class_get_ref_info):
2129         (mono_class_set_ref_info):
2130         (mono_class_free_ref_info): New internal helper fuctions.
2131
2132         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
2133         of accessing klass->reflection_info directly.
2134
2135         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
2136         words.
2137
2138         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
2139         the previous array.
2140
2141 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
2144         needs an indirection.
2145
2146 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
2149         so all generic sharing code is in one place.
2150
2151         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
2152         we don't call setup_interface_offsets () for unfinished types.
2153
2154 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * class.c (mono_class_generic_sharing_enabled): Move this to
2157         generic-sharing.c.
2158
2159         * image.c: Add an unload hook which is called before an image is unloaded.
2160
2161         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2162         metadata.c having to depend on generic sharing.
2163
2164 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2165
2166         * class.c: reduce size of ridiculously large cache.
2167
2168 2010-02-26  Martin Baulig  <martin@ximian.com>
2169
2170         * mono-debug.h
2171         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2172
2173         * threads.c (mono_thread_internal_reset_abort): New method; resets
2174         the abort, but doesn't throw any exception if no abort was requested.
2175
2176 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2177
2178         * class.c (get_implicit_generic_array_interfaces): Call
2179         mono_class_setup_interface_offsets () before accessing
2180         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2181         some reason.
2182
2183 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2184
2185         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2186         icall internal.
2187
2188 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2189
2190         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2191         direct access to the MonoType fields.
2192
2193 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * threads.h: Move some internal functions which were added to this header by
2196         mistake to threads-types.h.
2197
2198         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2199
2200 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2201
2202         * class-internals.h, class.h, object.h: make MonoRemoteClass
2203         and mono_remote_class() internal.
2204
2205 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2206
2207         * metadata-internals.h, class-internals.h, metadata.h: make the
2208         MonoType guts internal as well.
2209
2210 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2211
2212         * reflection.h: the MonoTypeNameParse guts are internal now.
2213         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2214         are internal now, provide accessors as needed.
2215         * metadata.h, metadata-internals.h: the MonoMethodSignature
2216         guts are internal now.
2217         * Makefile.am: mempool.h is an internal header now.
2218         * *.h, *.c: remove glib.h usage from the public headers.
2219
2220 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2221
2222         * culture-info-table.h : regenerated.
2223
2224 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2225
2226         * metadata.c: Add mono_method_get_header_summary which returns minimal
2227         information about the header of a method. This is the information used
2228         by the inline oracle to reject methods.
2229
2230         This method doesn't decode local variables and doesn't cache it's result,
2231         so it should cause a minimal reduction in memory usage.
2232
2233         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2234         mono_method_get_header_summary.
2235
2236 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2237
2238         * threads.c (mono_thread_exit): Make sure that the main thread is
2239         non-null before dereferencing it.
2240
2241 2010-02-21  Geoff Norton  <gnorton@novell.com>
2242
2243         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2244         locale.
2245         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2246         before falling back to the posix lookup.
2247
2248 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2251         the DONT_MANAGE flag set.
2252
2253 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2254
2255         * domain.c: Remove old v1 version strings. Let the runtime
2256         default to 2.0 instead of failing because it can't find a
2257         working 1.0 instalation.
2258
2259 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2260
2261         * domain.c: Add v4 RC version string.
2262
2263 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2264
2265         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2266         of overflow checking function.
2267
2268 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2269
2270         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2271         generic methods.
2272
2273         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2274         cases for ParameterInfo.
2275
2276         Fixes #579493.
2277
2278 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2281         have has_cctor set. Fixes #575946.
2282
2283 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2284
2285         * appdomain.c: display a warning if the parsing the config file
2286         produces any error.
2287         Skip the BOM in UTF-8 files.
2288         Copy the AppDomainSetup before setting the privateBinPath so that the
2289         correct configuration file is read.
2290
2291 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2294         vtable trampoline per vtable slot index. Not used yet.
2295
2296 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2297
2298         * icall-def.h:
2299         * icall.c: add internal call that returns the system page size.
2300
2301 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2304         'int' for system classes.
2305
2306 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2307
2308         * icall.c, icall-def.h: new icall to check for sufficient
2309         stack space.
2310
2311 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2312
2313         * reflection.c (ensure_complete_type): Check that reflection_info
2314         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2315
2316 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2317
2318         * attrdefs.h:
2319         * tabledefs.h: Add NoOptimization flag.
2320
2321 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2322
2323         * sgen-gc.c: Don't consider it a missing remset if the target
2324         object is pinned - we might have done the store but not added the
2325         remset yet.
2326
2327 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2328
2329         * sgen-gc.c: When checking for missing remsets, don't assert on
2330         the first one, but print them all and then assert.
2331
2332 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2333
2334         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2335
2336 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2337
2338         * console-unix.c: On OSX Control-Y is assigned to
2339         VDSUSP (non-Posix), the
2340         suspend-program-next-time-it-tries-to-read-input command (this is
2341         different than C-z, which suspends immediately).
2342
2343         Do the same thing that bash does and ignore this setting,
2344         making our repl/getline support pasting.
2345
2346 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2347
2348         * sgen-gc.c: Simple plausibility check for scan_starts.
2349
2350 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2351
2352         * sgen-gc.c: Round up when calculating the number of scan starts.
2353
2354 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2355
2356         * reflection.c: Export mono_get_object_from_blob.
2357
2358         * object-internals.h: Ditto.
2359
2360         * icall.c: New icall property_info_get_default_value to get the default
2361         value of a property. Since using this is not common, no caching is done.
2362
2363         * icall-def.h: Add new icall.
2364
2365 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2366
2367         * class.c: Add mono_class_get_property_default_value.
2368
2369         * class-internal.h: Export mono_class_get_property_default_value.
2370
2371 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2372
2373         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2374
2375 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2376
2377         * sgen-gc.c: introduced critical regions to allow some lockless
2378         operations and increase scalability.
2379
2380 2010-02-10  Geoff Norton  <gnorton@novell.com>
2381
2382         * reflection.c: Support building with DISABLE_REFLECTION
2383
2384 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2385
2386         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2387         Closes bug #566057.
2388
2389         * exception.c: fix typo in comment.
2390
2391 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2392
2393         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2394         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2395
2396         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2397
2398         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2399         the internal API.
2400
2401         Fixes #574434.
2402
2403 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2404
2405         * threads.c: Removed two assertions that were too strict.  Added a
2406         clarifying comment.  Fixes #577090.
2407
2408 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2409
2410         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2411         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2412
2413         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2414
2415         * verify.c (mono_type_get_stack_name): Fix a warning.
2416
2417 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2420         mono_marshal_wrapper_info_from_wrapper.
2421
2422         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2423         mono_marshal_method_set_wrapper_data, and export.
2424
2425         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2426         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2427         by calling mono_marshal_get_wrapper_info ().
2428
2429         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2430         small objects which does no size checks.
2431
2432 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2433
2434         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2435
2436 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2437
2438         * verify.c (mono_method_verify): Use the new basic block formation pass
2439         to avoid verifying dead basic blocks. This is the same behavior as the
2440         runtime MS verifier.
2441
2442 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2443
2444         * mono-basic-block.c:
2445         * mono-basic-block.h: New implementation of a basic block formation pass.
2446         The formation pass does static liveness analysis as well to detect dead
2447         basic blocks.
2448
2449 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2452         'this' argument in icalls.
2453
2454 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2455
2456         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2457
2458 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2459
2460         * object.c, domain.c: When using SGen, we must register
2461         vtable->type as a root if it's not a MonoType, because then it
2462         wasn't pin-alloced.
2463
2464 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2465
2466         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2467         at the start of nursery collections, because we might have had
2468         degraded allocations which changed next_data.
2469
2470 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2471
2472         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2473         custom attr so this function works in cross-compiling mode.
2474
2475 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * class.c (make_generic_param_class): Initialize interface offsets since we
2478         set klass->inited. Fixes #574819.
2479
2480 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2483         calling the JIT domain cleanup hook.
2484
2485 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2486
2487         * pedump.c (main): Properly set the verifier mode when running the metadata
2488         verifier.
2489
2490 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2493         overlapping fields now that we're called before has_references is set.
2494
2495         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2496         method. Otherwise all sort of weird stuff happens.
2497
2498 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2501         Fixes #572874.
2502
2503 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2506         Fixes #573322.
2507
2508 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2509
2510         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2511         pin_staging_area_index is greater than 0.
2512
2513 2010-01-22 Miguel de Icaza (miguel@novell.com)
2514
2515         * loader.c: Since we do nothing with the error returned, pass NULL
2516         to ignore the error.
2517
2518 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2519
2520         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2521         happened before starting to encode the actual fields. This avoid ciclic
2522         dependencies and eventual crashes.
2523
2524         Fixes #572660.
2525
2526 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2527
2528         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2529         atomic and remove the half-constructed hack in SGen.
2530
2531 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2532
2533         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2534         has a recursive reference to itself.
2535
2536         Fixes #571863.
2537
2538 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2539
2540         * loader.c (mono_method_signature): Fix error message.
2541
2542 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2543
2544         * sgen-gc.c: Reuse to-space sections between nursery collections.
2545
2546 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2547
2548         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2549         from the current assembly or mscorlib. Fixes bug #322957.
2550
2551 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2552
2553         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2554         get_wrapper_target_class.
2555
2556 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2557
2558         * sgen-gc.c: Fix warnings.
2559
2560 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * verify.c (store_local): Better error message.
2563
2564 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2565
2566         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2567         arguments.
2568
2569 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2570
2571         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2572         function is generics variance aware.
2573
2574 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2575
2576         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2577         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2578
2579 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2580
2581         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2582           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2583
2584         Code is contributed under MIT/X11 license.
2585
2586 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2587
2588         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2589         on a GTD.
2590
2591 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2594         return a point to a wrapper specific info structure describing the wrapper.
2595         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2596  
2597 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2598  
2599         * sgen-gc.c: Make minor collection section allowance adaptive,
2600         depending on the amount of memory reclaimed in the last major
2601         collection.  If more memory was reclaimed (i.e. more garbage
2602         produced), do the next collection earlier.
2603
2604 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2605
2606         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2607         to itself.
2608
2609         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2610         the token as parameter.
2611
2612         * verify-internals.h: Ditto.
2613
2614         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2615
2616         Fixes #571460.
2617
2618 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2619
2620         * sgen-gc.c: Make store_remset_buffer_index long.
2621
2622 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2623
2624         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2625
2626         Fixes #569579.
2627
2628 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2631         off precise marking if it is available.
2632         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2633
2634 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2637
2638         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2639         pinned objects.
2640
2641         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2642         to the array allocator.
2643
2644 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2647         result of mono_compile_method (), it already includes an ftnptr.
2648
2649 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2652
2653 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2656         hash value which doesn't depend on glib/eglib versions.
2657         (mono_metadata_type_hash): Use it.
2658
2659         * object.c (mono_method_get_imt_slot): Ditto.
2660
2661 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2662
2663         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2664         independently of the GTD.
2665
2666         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2667
2668         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2669         to the upper limit since instance_size includes this amount.
2670
2671         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2672
2673         Fixes #569544.
2674
2675 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2676
2677         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2678         with static methods.
2679
2680         * object.c (build_imt_slots): Avoid asserting when static methods are
2681         encountered in an interface.
2682
2683 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2684
2685         * sgen-gc.c (to_space_expand): Fix assertion.
2686
2687 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2688
2689         * string-icalls.c: missing declaration fixes.
2690         * sgen-gc.c: portability fixes.
2691
2692 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2693
2694         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2695
2696         * class.c:
2697         * cominterop.c:
2698         * icall.c:
2699         * object.c: 
2700         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2701
2702 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2703
2704         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2705         it can fail loading the type.
2706
2707         * class.c: Add mono_class_inflate_generic_class_checked.
2708
2709         * class.c:
2710         * verify.c:
2711         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2712
2713 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * loader.c (mono_method_signature_checked): New internal function taking an
2716         MonoError argument.
2717
2718         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2719         Fixes build on rh 7.3.
2720
2721 2010-01-10  Aaron Bockover  <abockover@novell.com>
2722
2723         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2724         at runtime in the same way as on Windows, which yields a relocatable
2725         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2726         of the running mono process.
2727
2728         On TARGET_ARM, fallback () will always be executed.
2729
2730 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2731
2732         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2733
2734 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2735
2736         * class.c (mono_class_is_assignable_from_slow): Support variant
2737         generic delegates.
2738
2739         * class.c (mono_class_implement_interface_slow): Support types with
2740         variant generic arguments.
2741
2742 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2743
2744         * verify.c: Remove some code duplication.
2745
2746 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2747
2748         * object.c: Update docs.
2749
2750 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2751
2752         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2753
2754         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2755         fallback trampoline as well.
2756
2757         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2758         out argument that is set to TRUE if the match was direct. 
2759
2760         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2761
2762         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2763
2764 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * class.c: Add mono_class_interface_offset_with_variance function that does same
2767         as mono_class_interface_offset but takes variance into account.
2768
2769         * class-internal.h: Export mono_class_interface_offset_with_variance.
2770
2771         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2772
2773 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         * object.c:
2776         * icall.c:
2777         * class.c: Add some FIXME for due to variant generic arguments.
2778
2779         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2780         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2781         the bitfield check fails.
2782
2783 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2784
2785         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2786         to be easier to read and fix bugs in the case a non generic type implements a variant
2787         interface.
2788
2789         * class.c (mono_class_has_variant_generic_params): Make non static.
2790
2791         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2792         the private API.
2793
2794 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2795
2796         * assembly.c: fix MONO_PATH debug output.
2797
2798 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2799
2800         * culture-info-table.h : regenerated.
2801
2802 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2803
2804         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2805         types that are meant to not have a parent.
2806
2807 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2808
2809         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2810         from the image mempool, so it is not leaked.
2811
2812 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2813
2814         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2815
2816 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2817
2818         * verify.c (verify_valuetype_layout_with_target): Fix case
2819         that can lead to infinite recursion. Fix bug #567861
2820
2821 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2822
2823         * pedump.c: Run code verifier even if image verification fails
2824         due to a failed type we. This allows more errors to be shown.
2825
2826 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2827
2828         * class.c (count_virtual_methods): Remove the assert and now
2829         fail properly.
2830         
2831         * class.c (setup_interface_offsets): This can fail now.
2832
2833         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2834         errors. Check setup_interface_offsets errors.
2835
2836         * class.c (setup_interface_offsets): Simplify the return error logic
2837         and remove class_init_ok.
2838
2839         Fixes #560327.
2840
2841 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2842
2843         * class.c (mono_class_init): Do class verification at the beginning. Add
2844         some asserts to avoid tripping into invalid memory.
2845
2846         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2847         g_error and a decent message.
2848
2849         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2850
2851         Fixes #567548.
2852
2853 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2854
2855         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2856         as inline functions instead of defining them in mempool.c.
2857
2858         * metadata-internals.h (MonoImageSet): New structure representing a set of
2859         MonoImages, which own a collection of generic instances.
2860
2861         * metadata.c: Get rid of the global generic caches, instead assign each generic
2862         instance to the image set which consists of all the images referenced by the
2863         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2864         the memory used by generic instances to be allocated from a per image-set mempool
2865         later.
2866
2867 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2870
2871 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * appdomain.c (zero_static_data): Fix a warning.
2874
2875         * locales.c (construct_culture_from_specific_name): Applied patch from
2876         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2877         not found. Fixes #567900.
2878
2879 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2880
2881         * loader.c (mono_method_get_signature_full): Remove two asserts.
2882         Return NULL instead so that the verifier can handle both cases 
2883         gracefully.
2884
2885 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2886
2887         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2888         so we can properly fail types instead of crashing.
2889
2890         Fixes #567676.
2891
2892 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2893
2894         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2895         generic method.
2896
2897 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2898
2899         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2900
2901 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2902
2903         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2904         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2905         we can't remove it from it since we don't hold the lock.
2906         (mon_new): Free the orphaned events here when a mon structure is added to the
2907         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2908         this down.
2909
2910 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2911
2912         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2913         as max stack might be zero.
2914
2915         Fixes #562320.
2916
2917 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2918
2919         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2920
2921         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2922         instances if the GTD did.
2923
2924         * class.c (mono_class_setup_properties): Ditto.
2925
2926         * class.c (mono_class_setup_events): Ditto.
2927
2928         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2929
2930         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2931         error setting.
2932
2933         * class.c (mono_class_init): Fail if GTD did.
2934
2935         * cominterop.c:
2936         * generic-sharing.c:
2937         * icall.c:
2938         * loader.c:
2939         * object.c:
2940         * verify.c: Properly handle failure of mono_class_setup_methods.
2941
2942 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2943
2944         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
2945         mono_class_inflate_generic_method_full internal.
2946
2947         * class.c (inflate_generic_context): Now takes a MonoError argument.
2948
2949         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
2950         errors.
2951
2952 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2953
2954         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
2955         they cannot be patched. Partly fixes #564408.
2956
2957 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2958
2959         * metadata-internals.h, reflection.c: Use the
2960         MonoDynamicImage.handleref hash table only with unmanaged keys,
2961         and add a managed hash table handleref_managed for managed keys.
2962
2963 2009-12-24  Mark Probst  <mark.probst@gmail.com>
2964
2965         * sgen-gc.c: Unset to-space bumper between collections.  It might
2966         become invalid due to degraded allocations.
2967
2968 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2969
2970         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
2971         with the one from the original method.
2972
2973         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
2974         compatibility.
2975
2976         * verify-internals.h: Add new function to the internal API.
2977
2978 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
2979
2980         * culture-info-tables.h: regenerated it to include the Georgian culture.
2981
2982 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2983
2984         * sgen-gc.c: Include mono/utils/memcheck.h.
2985
2986         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
2987         instead of the current domain, since the two might not match if this is called
2988         from the debugger.
2989
2990         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
2991         domain which created this assembly.
2992
2993 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2994
2995         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
2996
2997 2009-12-17  Mark Probst  <mark.probst@gmail.com>
2998
2999         * sgen-gc.c: Managed implementation of the specialized generic
3000         store write barrier.
3001
3002 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
3003
3004         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
3005         A private virtual newslot method is used to implement an interface method without exposing
3006         it to users. When querying for public instance methods, such method would hide a public one
3007         on a parent type.
3008
3009         Fixes #564379.
3010
3011 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
3014         conventions.
3015
3016 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3017
3018         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
3019
3020 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3021
3022         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
3023         as they are no longer used.
3024         
3025          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
3026
3027         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
3028
3029 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3030
3031         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
3032         if the owner class has not been finished before returning reflection_info.      
3033
3034         Fixes #565127.
3035
3036 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
3037
3038         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
3039         param doesn't have custom attributes. Fixes #565117.
3040
3041         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
3042         #565120.
3043
3044 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
3047
3048 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3049
3050         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
3051         same amount done by a core-clr enabled runtime.
3052
3053 2009-12-15  Marek Habersack  <mhabersack@novell.com>
3054
3055         * appdomain.c (mono_make_shadow_copy): make sure access mode of
3056         the target files is reset to writable by owner and readable by
3057         everyone else to prevent problems when updating shadow copies of
3058         files whose source is read-only. Fixes bug #556884
3059
3060 2009-12-15  Mark Probst  <mark.probst@gmail.com>
3061
3062         * class.c (mono_generic_class_get_class): Allocate the generic
3063         class via malloc again, so that it can be freed when any one of
3064         the images of its constituent types is closed.
3065
3066         * metadata.c: When closing an image, don't free generic insts and
3067         generic classes right away, but put them into a list for later
3068         freeing.
3069
3070         * image.c, metadata-internals.h: Store the free list and in the
3071         second pass of closing an image, free it.
3072
3073 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3074
3075         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
3076
3077         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
3078         types in type_hash.
3079
3080         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
3081
3082 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3083
3084         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
3085         user type.
3086
3087         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
3088         is used.
3089
3090 2009-12-14  Miguel de Icaza  <miguel@novell.com>
3091
3092         * verify.c (mono_method_verify): The Unused opcodes produce an
3093         InvalidProgramException on .NET
3094
3095 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
3096
3097         * loader.c (mono_method_get_header): Move assert after the verifier
3098         has been called on the method header.
3099
3100 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3101
3102         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
3103
3104         * appdomain.c: Bump corlib version.
3105
3106 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3107
3108         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
3109         types as well since otherwise generic instances would not return UT as arguments but
3110         their undelying system type.
3111
3112         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
3113         to reflect the fact that they can have now multiple different types.
3114
3115         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
3116
3117         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
3118
3119         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
3120
3121         * reflection.c (mono_reflection_register_with_runtime): Init super types
3122         if the image is not dynamic.
3123
3124         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
3125         check if the generic type definition is a TypeBuilder.
3126
3127         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
3128         doesn't belong to a dynamic image, skip initialization.
3129
3130         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
3131         base definition is not a dynamic type.
3132
3133 2009-12-11  Marek Habersack  <mhabersack@novell.com>
3134
3135         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
3136         mono_profiler_string_allocation
3137
3138         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
3139         if string profiling is enabled, call
3140         mono_profiler_string_allocation
3141
3142         * profiler.h: added two MonoProfileFlags -
3143         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
3144         installation functions for the hooks below.
3145
3146         * profiler-private.h, profiler.c: added two hooks:
3147         mono_profiler_string_allocation called whenever a string is
3148         allocated by InternalAllocateStr and mono_profiler_iomap called
3149         whenever IOMAP code performs an adjustement on a file path.
3150
3151 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
3152
3153         * boehm-gc.c: fixed race condition while getting the target of a
3154         disappearing link (bug #522233).
3155
3156 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3157
3158         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3159         the error.
3160
3161 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3162
3163         * reflection.c: Add mono_reflection_register_with_runtime icall to
3164         allow a MonoGenericClass to register itself as the managed mirror of
3165         a given generic instance.
3166         This is a temporary workaround until all MGC instantiation happens in
3167         managed code.
3168
3169         * object-internals.h: Ditto.
3170
3171         * icall-def.h: Ditto.
3172
3173 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3174
3175         * sgen-gc.c (find_in_remsets): Also search the generic store
3176         remsets.
3177
3178 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3179
3180         * sgen-gc.c: Don't access class names in debugging code when
3181         unloading a domain, because they might not be valid anymore.
3182
3183 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3184
3185         * domain.c, domain-internals.h: New function mono_domain_unset().
3186
3187         * appdomain.c (unload_thread_main): Detach the thread again at the
3188         end.
3189
3190         * threads.c: When a thread exists or is detached, unset its domain
3191         so that it's NULL when, for example, a pthread destructor runs.
3192
3193         * sgen-gc.c: Assert that there is no domain set after a thread is
3194         done.
3195
3196 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3197
3198         * class.c (mono_generic_class_get_class),
3199         metadata.c (free_generic_class): Allocate generic MonoClass's from
3200         the image mempool, not via malloc.  The problem with malloc is
3201         that when unloading a domain those classes are freed before
3202         clearing the heap and SGen needs the classes.  Rewriting the
3203         unloading code to do the free later would be more work and there's
3204         no point in using malloc anyway.
3205
3206 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3207
3208         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3209         before returning.
3210
3211 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3212
3213         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3214         user string blobs.
3215
3216         * verify-internals.h: Add new function to the internal API.
3217
3218         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3219         check if it's a valid string.
3220
3221         * object.c (mono_ldstr): Ditto.
3222
3223         Fixes #561943.
3224
3225 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3228         from a method before returning it. This is the expected behavior.
3229
3230 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3231
3232         * reflection.c (inflate_method): Handle the case of a regular system type.
3233
3234 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3235
3236         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3237         gathering code.
3238
3239         * mempool.c, mempool-internals.h: New function
3240         mono_mempool_get_bytes_allocated().
3241
3242         * Makefile.am: sgen-pinning-stats.c added.
3243
3244 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3245
3246         * sgen-gc.c (create_allocator): Only use the fast path if the
3247         object size is within the small object size limit.
3248
3249 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3250
3251         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3252         possibly adding padding to sizeof (GCMemSection).
3253
3254 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3255
3256         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3257         reference is not in the nursery.
3258
3259 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3260
3261         * class.c (mono_class_from_typeref): Bounds check idx against the 
3262         assemblyref table.
3263
3264 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3265
3266         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3267         through the potential roots, then sort the results and find the
3268         pinned objects from there.
3269
3270         * Makefile.am: sgen-pinning.c added.
3271
3272 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3273
3274         * sgen-gc.c: Record generic stores in specialized remset buffers.
3275
3276 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3277
3278         * sgen-gc.c: Make pinned chunks the same size as major heap
3279         sections, and align them as well, so that we can check whether an
3280         object is in a pinned chunk or a major section in constant time.
3281
3282 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3283
3284         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3285
3286 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3287
3288         * sgen-gc.c: Make all major heap sections the same size (currently
3289         128k) and allocate them on aligned addresses.  Small heap sections
3290         give us better granularity with pinned objects - we can free up
3291         much more memory.
3292
3293 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3294
3295         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3296         output removed.
3297
3298 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3299
3300         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3301
3302         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3303         names in addition to the runtime generated one.
3304
3305         * mono/metadata/image.h: Add a function to take the real name of the assembly
3306         image.
3307
3308         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3309         use it instead of the runtime generated one.
3310
3311         Code is contributed under MIT/X11 license.
3312
3313 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3316         before the other checks to prevent problems if the DateTime class is blittable.
3317         Hopefully fixes #559600.
3318
3319 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3320
3321         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3322         returns the largest string length that will not be put into the
3323         LOS.
3324
3325         * sgen-gc.c, gc-internal.h: New function that returns the largest
3326         object size that will not be put into the LOS.
3327
3328         * appdomain.c: Bump corlib version.
3329
3330 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3331
3332         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3333
3334         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3335
3336 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * reflection.c (inflate_method): Fix signature.
3339
3340         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3341         in managed code.
3342
3343 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3344
3345         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3346
3347 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3348
3349         * sgen-gc.c: Abstract to-space handling.
3350
3351 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3354
3355         Fixes #559906.
3356
3357 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3358
3359         * sgen-gc.c: Only add references from outside the nursery to
3360         within the nursery to the global remset list.
3361
3362 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3363
3364         * appdomain.c (create_exceptions): Set the domain temporarily if
3365         necessary to avoid cross-domain references.
3366
3367 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3368
3369         * verify.c (get_stack_type): Return that the type is invalid instead of
3370         asserting.
3371
3372         * verify.c (mono_method_verify): Verify that all locals and arguments
3373         have valid stack types.
3374
3375         Fixes #559913.
3376
3377 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3378
3379         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3380         bounds checking overflow aware.
3381
3382         Fixes #559910.
3383
3384 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * verify.c (do_invoke_method): Check for invalid method signatures.
3387
3388         Fixes #553450.
3389
3390 2009-12-02  Jb Evain  <jbevain@novell.com>
3391
3392         * appdomain.c (MONO_CORLIB_VERSION): bump.
3393         * icall-def.h (get_base_definition): renamed to get_base_method
3394         and add a boolean argument indicating we want the original
3395         method definition, or the immediate base method.
3396         * icall.c: apply the get_base_definition to get_base_method change.
3397
3398 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3399
3400         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3401
3402         Fixes #558042.
3403
3404 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3405
3406         * class.c: remove asserts for invalid type token in
3407         mono_class_name_from_token(), mono_assembly_name_from_token() and
3408         mono_class_create_from_typedef () (fixes bug #553318).
3409
3410 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3411
3412         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3413         incorrect assemblies (bug #553322).
3414
3415 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3416
3417         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3418
3419         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3420
3421         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3422
3423         * class.c (inflate_generic_context): Ditto.
3424
3425         * loader.c (method_from_methodspec): Ditto.
3426
3427         Fixes #558230.
3428
3429 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3430
3431         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3432
3433         * class.c (mono_class_create_from_typespec): Ditto.
3434
3435         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3436
3437         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3438
3439         Fixes #558184.
3440
3441 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3442
3443         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3444
3445         * verify.c (verify_delegate_compatibility): Ditto.
3446
3447         * verify.c (do_newobj): Ditto.
3448
3449         Fixes #558046.
3450
3451 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3452
3453         * sgen-gc.c: Use a gray queue instead of requiring that gray
3454         objects are in a contiguous region.
3455
3456         * sgen-gray.c: The gray queue implementation.
3457
3458         * Makefile.am: sgen-gray.c added.
3459
3460 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3461
3462         * appdomain.c: When unloading a domain, zero its static data and
3463         perform a minor collection when using SGen.  That will get rid of
3464         all the remsets pointing into that domain's static data.
3465
3466         * sgen-gc.c: Allow remsets into static data.  By doing this we
3467         need less checks so we're more efficient.
3468
3469 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3470
3471         * verify.c (mono_method_verify): Check for catch clauses with broken
3472         types.
3473
3474         Fixes #558465.
3475
3476 2009-12-01  Jb Evain  <jbevain@novell.com>
3477
3478         * class.c (make_generic_param_class): set the namespace of
3479         the generic parameter class from its owner, if available.
3480
3481 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3482
3483         * verify.c (code_bounds_check): Do proper overflow checking.
3484
3485         * verify.c (mono_method_verify): The number of switch entries is
3486         an unsigned int. Properly bounds check it.
3487
3488         Fixes #558594.
3489
3490 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3491
3492         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3493         mono_metadata_method_has_param_attrs which only checks if a given param
3494         list has a non zero flags entry.
3495
3496         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3497         to inform how many params should we expect to decode.
3498
3499         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3500         as it's faster than mono_metadata_get_param_attrs.
3501
3502         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3503         add mono_metadata_method_has_param_attrs.
3504
3505 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3506
3507         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3508         failures.
3509
3510         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3511         is -1 but its class is broken.
3512
3513         Fixes #558522.
3514
3515 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3516
3517         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3518         for parameter overflow.
3519
3520         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3521         of mono_metadata_get_param_attrs.
3522
3523         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3524         API.
3525
3526         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3527
3528 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3529
3530         * class.c (mono_class_setup_fields): Check for fields with broken types.
3531
3532         Fixes #558741.
3533
3534 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3535
3536         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3537         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3538         its TypeBuilder::CreateType ().
3539
3540         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3541         if not needed.
3542
3543         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3544         to make setup_interface_offsets happy.
3545
3546         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3547         compilation now works.
3548
3549 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3550
3551         * appdomain.c (create_exceptions): New helper function extracted from
3552         mono_runtime_init () to precreate objects used during exception handling.
3553         (mono_runtime_init): Call it.
3554         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3555
3556 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3559         compilation until the proper one is found.
3560
3561 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * class.c (mono_class_setup_vtable_general): Cache the result of
3564         get_virtual_methods () since it can be slow because of the metadata
3565         optimization.
3566
3567         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3568         from a MonoValueHashTable for now, since the later is based on an earlier
3569         version of hpj's internal probing code and seems to have serious collision
3570         issues.
3571
3572         * loader.c (mono_get_method_full): Update after the change above.
3573
3574 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3577
3578 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3579
3580         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3581         the GTD instead of the DGC instead of crashing.
3582
3583         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3584         required. Inflate fields if needed.
3585
3586         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3587         finished. Renamed.
3588
3589 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3590
3591         * class.c (check_interface_method_override): Check for NULL signatures and fail
3592         the type.
3593
3594         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3595
3596         Fixes #553428.
3597
3598 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3601         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3602
3603 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3604
3605         * loader.c (field_from_memberref): Resolve the class first then the field
3606         signature. Remove a lot of duplicated code and make sure we don't pass valid
3607         values to mono_loader_set_error_field_load.
3608
3609         Fixes #553306.
3610
3611 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3612
3613         * class.c (inflate_generic_type): Change code to use new signature of
3614         mono_error_set_bad_image.
3615
3616         Fixes #558124.
3617
3618 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3619
3620         * verify.c (mono_method_verify): Don't free ctx.params items if 
3621         we aborted while inflating the ctx.locals. Complete previous fix
3622
3623 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3624
3625         * verify.c (mono_method_verify): Use the uninflated type name, 
3626         when the inflated is null, to report errors. Also take care when
3627         freeing, not to free everything since, in case of an error, some
3628         stuff would be copies (i.e. not allocated by the function itself)
3629         Fix bug #558145
3630
3631 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3632
3633         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3634         or overflow. The caller must have done this check explicitly. This guard us
3635         from accessing invalid memory.
3636
3637         * verify.c (do_push_static_field): Check for stack overflow.
3638
3639         Fixes #553333.
3640
3641 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3642
3643         * loader.c (find_method_in_class): Don't crash if the signature cannot
3644         be resolved.
3645
3646         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3647         of asserting for the case of invalid params.
3648
3649         Fixes #553304.
3650
3651 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3652
3653         * image.c (mono_image_load_module): Fix crash when a bad assembly
3654         has no module at all (fix bug #553412) and also replace the 
3655         g_assert with a return NULL (documented return value for failure)
3656
3657 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3658
3659         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3660
3661 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3662
3663         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3664         file attribute to managed code and avoid doing the mask/attribute
3665         checks here. 
3666
3667 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3668
3669         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3670         the managed world.
3671
3672         * icall-def.h: New entry points.
3673         
3674 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3675
3676         * process.c: Don't put references to managed objects into a
3677         g_ptr_array.
3678
3679 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3680
3681         * class.c (can_access_internals): Allow CoreCLR to participate in
3682         allowing (or not) [InternalsVisibleTo] between assemblies.
3683         * security-core-clr.c|h: Make sure that only trusted code (a 
3684         superset of platform code) can access the internals of platform
3685         code.
3686
3687 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3688
3689         * reflection.c: use the correct base class to get the virtual method
3690         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3691
3692 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3693
3694         * security-core-clr.c (get_caller_no_reflection_related): 
3695         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3696         it's still reflection and must be filtered correctly.
3697
3698 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3699
3700         * object.c (compute_class_bitmap): Fix for large bitmaps.
3701
3702 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3703
3704         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3705
3706         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3707         koush@koushikdutta.com). Disable GC_no_dls on android.
3708
3709 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3710
3711         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3712         tlab_next points outside the TLAB because the allocator was
3713         interrupted.
3714
3715 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3716
3717         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3718
3719 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3720
3721         * object-internals.h: Change signature for mono_string_to_utf8_image.
3722
3723         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3724         argument.
3725
3726         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3727         exceptions due to mono_string_to_utf8.
3728
3729 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3730
3731         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3732
3733         * object.c (mono_remote_class): Make sure all resources are released before
3734         raising an exception.
3735
3736         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3737
3738 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3739
3740         * mono-perfcounters.c (network_get_impl): Change variable initialization
3741         ordering to fix potential memory leak in case of exceptions.
3742
3743         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3744         encoded strings.
3745         
3746 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3747
3748         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3749         variable initialization ordering to fix potential memory leak in case
3750         of exceptions.
3751
3752 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3755         needed.
3756
3757 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3758
3759         * appdomain.c: Fix shadow path code to better deal with exceptions.
3760
3761 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3762
3763         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3764         exception in the middle of the runtime code.
3765
3766 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3767
3768         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3769         leak memory with broken envvar value.
3770
3771 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3772
3773         * reflection.c (mono_reflection_setup_internal_class): Because
3774         nested classes are not added to the name cache, we must put them
3775         in the reflection_info_unregister_classes list.
3776
3777 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3778
3779         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3780         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3781         platform (trusted) code. Instead we return a TypeLoadException to
3782         be thrown later. This is the exception thrown by Silverlight 2 if
3783         a type, inside application (user) code is marked with [ComImport]
3784
3785 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3788         mono_is_debugger_attached () too.
3789
3790         * mono-debug.c (mono_is_debugger_attached): New helper function.
3791         (mono_set_is_debugger_attached): Ditto.
3792
3793 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3794
3795         * object-internals.h: Add mono_string_to_utf8_checked.
3796
3797         * object.c: Implement mono_string_to_utf8_checked.
3798
3799 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3800
3801         * class.c: Add missing check for load errors after every
3802         call to mono_class_setup_fields
3803
3804         Fixes #552282.
3805
3806 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3807
3808         metadata-verify.c (verify_tables_schema): Fix the error message.
3809
3810 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3811
3812         * metadata.c: Change event table schema to use TDOR for event type
3813         as this is what it's meant to be.
3814
3815         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3816         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3817         entry.
3818
3819         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3820         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3821         rows in MONO_TABLE_GENERICPARAM.
3822
3823         Fixes #552289.
3824
3825 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3826
3827         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3828         insertion.
3829
3830         * reflection.c (mono_reflection_setup_internal_class): Avoid
3831         registering a gc root the same MonoClass multiple times.
3832         Don't register nested types on the global scope as they should
3833         not be available there.
3834
3835 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3836
3837         * culture-info-tables.h: regenerated.
3838
3839 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3840
3841         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3842
3843 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3844
3845         * string-icalls.c|h: Remove string internal calls that are not 
3846         used anymore by the class libraries.
3847         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3848         which is not used in the class librairies.
3849         * icall-def.h: Update tables.
3850
3851 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3852
3853         * class.h: Move mono_class_inflate_generic_type_checked...
3854
3855         * class-internals.h: to here and make it internal. We don't want to
3856         further expose MonoGenericContext. 
3857
3858 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3859
3860         * verify.c (mono_method_verify): Improve error message.
3861
3862 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3863
3864         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3865         the token is already properly encoded. Fixs 4.0 build.
3866
3867 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3868
3869         * locales.c (construct_number_format): Check if the number index is
3870         valid before trying to use it, if not, just return.
3871         
3872 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3873
3874         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3875         since that loses the abort state. Fixes #539394.
3876
3877 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3878
3879         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3880         explicit this argument to the call signature.
3881         (mono_marshal_get_icall_wrapper): Ditto.
3882
3883 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3884
3885         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3886         to indicate which assembly to use when resolving a custom-mod.
3887
3888         Fixes handling of volatile fields used across assemblies as reported in #551513.
3889
3890 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3891
3892         * loader.c: Improve error messages.
3893
3894 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3895
3896         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3897         of interfaces. Fixes IKVM.
3898
3899         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3900
3901 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3902
3903         * verify.c (verifier_inflate_type): Return the inflated type on success.
3904
3905 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3906
3907         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3908
3909         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3910
3911         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3912
3913         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3914         flag set.
3915
3916         * profiler.c: Add new profiler callbacks for runtime invoke.
3917
3918         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3919
3920 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3921
3922         * sgen-gc.c: Keep track of the reason for a major collection and
3923         write it to the heap-dump file.
3924
3925 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3926
3927         * threads.c: refactor the code that initializes the
3928         thread_start_args into a reusable function and use this in the two
3929         methods that start up threads.
3930
3931 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3934         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3935
3936 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3937
3938         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3939         Until now, we only had the per-cpu(core) counters.
3940
3941 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3942
3943         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
3944         mono_gc_get_suspend_signal(), which returns the suspend signal
3945         number used by the GC.
3946
3947 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3948
3949         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
3950
3951         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
3952         signalling start_notify.
3953
3954 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3955
3956         * appdomain.c: do not test the st_mode field for shadow-copies.
3957         Fixes bug #545276.
3958
3959 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3960
3961         * threadpool.[ch]: added hooks for thread start/finish and item
3962         processing begin/end. For monotouch use only.
3963
3964 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3965
3966         * threads.c (mono_thread_get_name): New helper function.
3967
3968         * reflection.c (resolve_object): Set handle_class for strings too.
3969         (mono_reflection_create_custom_attr_data_args): New helper function to decode
3970         a cattr blob into a set of arrays and structures without creating the custom
3971         attributes themselves.
3972         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
3973
3974         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
3975
3976         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
3977         function.
3978
3979 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3980
3981         * verify.c: Replace calls to mono_class_inflate_generic_type with
3982         mono_class_inflate_generic_type_checked. Fixes #480005.
3983
3984 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3985
3986         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
3987         object since not all paths lead to callees initing it.
3988
3989 2009-10-23  Alp Toker  <alp@nuanti.com>
3990
3991         Fix embedding API breakage from r144688. mono-compiler.h is an internal
3992         header and should not be shipped:
3993
3994         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
3995         which is specific to the mono build. Not going to work.
3996
3997 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
3998
3999         * security-manager.c: Report if core-clr is active from
4000         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
4001         to allow Moonlight BCL to behave appropriately (both in browser
4002         and outside, e.g. smcs)
4003
4004 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4005
4006         * mono-config.c: ignore UTF-8 BOM and report parser errors.
4007         Fixes bug #549108.
4008
4009 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4010
4011         * class.c: fix typo.
4012
4013 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
4014
4015         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
4016         a MonoError parameter.
4017
4018         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
4019         version that can does proper error handling.
4020
4021         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
4022
4023         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
4024
4025         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
4026
4027 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
4030         NO_UNALIGNED_ACCESS is defined.
4031
4032 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * marshal.c (mono_string_builder_to_utf16): Applied patch from
4035         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
4036         Fixes #549173.
4037
4038 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4039
4040         * sgen-gc.c: Shorten sections whenever possible.
4041
4042 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4043
4044         * sgen-gc.c: Use our portable semaphore #defines.
4045
4046 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4047
4048         * sgen-gc.c: A debug option for dumping the heap layout to a file
4049         after each collection.
4050
4051 2009-10-21  Mark Probst  <mark.probst@gmail.com>
4052
4053         * sgen-gc.c: Make managed write barriers atomic via
4054         thread-restarts.
4055
4056 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4057
4058         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
4059         methods. Fixes #543021.
4060
4061 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4062
4063         * socket-io.[ch]: fix VS build.
4064
4065 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4066
4067         * icall-def.h:
4068         * socket-io.[ch]: implemented SendFile.
4069
4070 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * class.c (mono_class_create_from_typedef): Initialize class->element_class
4073         before the interfaces to avoid crashes later if class initialization fails.
4074         Fixes #548417.
4075
4076         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
4077         Fixes #548276.
4078
4079 2009-10-20  Marek Safar  <marek.safar@gmail.com>
4080
4081         * domain.c: Bump 4.0 version.
4082
4083 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
4084
4085         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
4086         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
4087         check since 'pubkey' can't be NULL at this stage
4088         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
4089         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
4090         initialization of 'iter'
4091
4092 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
4093
4094         * cominterop.c : Search the interface parts of vtable to find 
4095           method matches.  Fixes 547030.
4096
4097         Code is contributed under MIT/X11 license.
4098
4099 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
4100
4101         * marshal.c: BeginInvoke cannot be called on multicast delegates with
4102         multiple targets. Fixes bug #574426.
4103
4104 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4105
4106         * profiler.h: Put here the definition of
4107         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
4108         (and fix the build...).
4109
4110 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4111
4112         * profiler.c, profiler.h, profiler-private.h:
4113         Added support for different ways of getting call chains in stat mode.
4114
4115 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4116
4117         * object.c, object-internals.h: New function for computing the
4118         size of an array, factored out of mono_array_new_full().  Use
4119         SGen's functions for allocating arrays and vectors.
4120
4121         * sgen-gc.c, gc-internal.h: Special functions for allocating
4122         arrays and vectors without race conditions.  A managed array
4123         allocator method.
4124
4125         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
4126
4127 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4128
4129         * object.c, object.h, icall.c: Write barriers do the copying now,
4130         as well, so no need for an additional memcpy.
4131
4132         * sgen-gc.c: Lock when storing remsets.  Do the memory
4133         copying/moving in the write barriers.
4134
4135         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
4136
4137         * reflection.c: Added an assert.
4138
4139 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4140
4141         * threads.c, process.c: A few missing write barriers.
4142
4143 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
4144
4145         * mono-perfcounters.c, mono-perfcounters-def.h: Add
4146         network performance counters for bytes sent per second, bytes
4147         received per second, and bytes total per second.
4148
4149         Code is contributed under MIT/X11 license.
4150
4151 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4152
4153         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
4154         Fix warning.
4155
4156 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4157
4158         * threads.c, object-internals.h, object.c: Move code for
4159         transferring an object to a different domain (via
4160         serialization/remoting) to object.c.
4161
4162         * object.c (call_unhandled_exception_delegate): If the exception
4163         is in a different domain than the delegate, transfer the exception
4164         to that domain.
4165
4166 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4169         Fixes #322934.
4170
4171 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4174
4175 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4176
4177         * object.c (mono_method_return_message_restore): Handle the case
4178         where the argument is an instance of a generic type.  Fixes
4179         #544446.
4180
4181 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4182
4183         * object.c (set_value): Write barrier fix - we must pass the
4184         count, not the size.
4185
4186 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * domain.c (mono_init_internal): Print a useful error message when encountering
4189         an old mscorlib, instead of crashing. Fixes #544307.
4190
4191 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * appdomain.c (copy_app_domain_setup): Fix a warning.
4194
4195         * debug-helpers.c (dis_one): Ditto.
4196
4197 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4198
4199         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4200         into the new domain, instead of referencing the original one.
4201
4202         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4203         non-static.
4204
4205         * appdomain.c: Corlib version bump.
4206
4207 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4208
4209         * threadpool.c: one more...
4210
4211 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4212
4213         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4214         threads to die because we're shutting down. delgate5.exe works again.
4215
4216 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4217
4218         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4219           ccw_interface_hash table when a ccw is finalized.
4220
4221         Code is contributed under MIT/X11 license.
4222
4223 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4224
4225         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4226         domain and image unloading into two steps.  We must do this
4227         because clearing the domain in SGen requires the class metadata to
4228         be intact, but we need to free the mono_g_hash_tables in case a
4229         collection occurs during domain unloading and the roots would trip
4230         up the GC.
4231
4232 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4233
4234         * object-internals.h: Remove serialized culture fields from
4235         MonoInternalThread.
4236
4237         * icall-def.h, thread-types.h, threads.c: Remove serialized
4238         culture icalls.
4239
4240         * appdomain.c: Corlib version bump.
4241
4242 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4245         Fixes #543133.
4246
4247 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4248
4249         * sgen-gc.c: Try to shorten the new section after a major
4250         allocation to avoid ever-growing sections.
4251
4252 2009-10-13  Martin Baulig  <martin@ximian.com>
4253
4254         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4255         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4256         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4257         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4258
4259         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4260
4261 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4262
4263         * threadpool.c: fixed the order in which 'completed' and the wait
4264         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4265         No need to use the wait_handle field of ASyncCall. Make sure the
4266         threadpool is active when adding a job or queueing an idle thread.
4267
4268 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4269
4270         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4271
4272         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4273         when using --compile-all.
4274
4275 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4276
4277         * metadata.c (free_generic_class): Unregister the field_objects
4278         roots if we're using SGen.
4279
4280 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4281
4282         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4283         for GenericParamTableEntry.gparam.
4284
4285 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4286
4287         * marshal.c: don't create the handle when calling. It is created later
4288         if needed.
4289
4290 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4291
4292         * sgen-gc.c: Warning fixes.
4293
4294 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4295
4296         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4297         whole heap for cross-domain references before each collection.
4298
4299         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4300         object.
4301
4302         * threadpool-internals.h, threadpool.c: New function
4303         mono_thread_pool_is_queue_array() for checking whether a given
4304         array is used as a (cross-domain) queue by the thread pool code.
4305
4306 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4307
4308         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4309         searches the whole heap for objects containing a specific
4310         reference.  Only for debugging.
4311
4312 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4313
4314         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4315
4316         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4317         byte arrays between domains.
4318
4319 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4320
4321         * threadpool.c:
4322         * class-internals.h:
4323         * mono-perfcounters-def.h:
4324         * mono-perfcounters.c:
4325         -There is a list of idle threads
4326         -Each of those idle threads wait on their own WaitHandle instead
4327         of all of them using the same semaphore. When a new work item is
4328         added, the job is assigned directly to an idle thread or a newly
4329         created one if possible and then the handle for that thread is
4330         signaled. Compare that to the current approach where all the
4331         threads in the pool compete to dequeue a job from the same
4332         queue.
4333         -New struct ThreadPool that brings together the bunch of static
4334         variable for each threadpool (IO and regular).
4335         -New performance counters: # of items added and its rate per
4336         threadpool. The rate will be used later, perhaps together with
4337         other perf. counters, to decide when idle threads should exit.
4338
4339 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4340
4341         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4342         Fix typo on Windows build.      
4343         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4344         
4345         Code is contributed under MIT/X11 license.
4346
4347 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4348
4349         * object-internals.h: The Thread class is split up into Thread and
4350         InternalThread now.  We have exactly one InternalThread per
4351         thread, and at most one Thread per appdomain per thread.  Most
4352         data is stored in InternalThread.  All InternalThread objects live
4353         in the root domain.
4354
4355         * class-internals.h: Add internal_thread_class to MonoDefaults.
4356
4357         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4358         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4359         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4360         resulting from the split of the Thread class.
4361
4362         * gc-internal.h: Prototype for new function for checking whether a
4363         thread is the finalizer thread.
4364
4365         * appdomain.c: Corlib version bump.
4366
4367 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4368
4369         * appdomain.c|h: Add a mono_domain_try_unload method which is
4370         equivalent to mono_domain_unload, except that it returns an exception
4371         instead of throwing it. Make mono_domain_unload use the
4372         mono_domain_try_unload method to avoid code-duplication.
4373
4374 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4377         a problem.
4378
4379 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4382         aborting when a conversion is not implemented.
4383
4384 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4385
4386         * verify.c: when comparing culture strings, use g_ascii_strcmp
4387
4388         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4389         when comparing public key tokens to use memcmp on 16 bytes.   I do
4390         not believe this ever worked as advertised in the past.
4391
4392         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4393         which would have always failed earlier.
4394
4395 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4396
4397         * gc.c: Raise a NullArgumentException if the object passed is
4398         null.
4399
4400 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * image.c (mono_image_close): Atomically decrement the reference count and
4403         remove the image from the hash tables, to prevent another thread from seeing a
4404         dying MonoImage. Fixes #541194.
4405
4406 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4407
4408         * threadpool.c: actually use the minimum number of 'completion ports'
4409         (for us is just a potential worker thread).
4410
4411 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4412
4413         * threadpool.c: remove ares_htable. It does not make sense any more
4414         since the same objects are now stored in GC-tracked arrays while they are
4415         in the queue.
4416
4417 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4418
4419         * threadpool.c: increase the minimum length of the queues to 128.
4420         Remove warning.
4421
4422 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4425         return the modified signature used by string ctors.
4426
4427 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4428
4429         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4430         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4431         method, to be used by full-aot.
4432
4433 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4434
4435         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4436         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4437         be known to be good.
4438
4439         * class.c (mono_class_init): Fail array types if their element type fails initialization
4440         as well.
4441
4442         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4443         initialization, additionally we request the element_type vtable to be initialized as well.
4444
4445         This is fine and should not increase the working set in any meaningful way since it's reasonable
4446         to assume       that most code will create an array and eventually populate it, which will require the
4447         type's vtable to be initialized.
4448
4449         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4450
4451 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4452
4453         * normalization-tables.h : regenerated.
4454
4455 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4458         a leb128 encoding can take up to 5 bytes.
4459
4460 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4461
4462         * class.c (verify_class_overrides): Remove useless argument.
4463
4464         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4465         before interface enumeration as this is no longer required.
4466
4467 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4468
4469         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4470         used under mono_class_init context. This functions avoid any code path that
4471         calls mono_class_init, which leads it to be slow as some things like the interface
4472         bitmap are not available.
4473
4474         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4475         of it's own broken version. Fixes the verifier part of #538588.
4476
4477         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4478         API.
4479
4480 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4481
4482         * class.c (mono_class_init): Always set an exception in a class if
4483         vtable setup fails.  Fixes #538577.
4484
4485         * generic-sharing.c: Raise an exception if mono_class_vtable()
4486         returns NULL.
4487
4488 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4489
4490         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4491         methods of vtypes, as they could be incorrectly shared with static methods
4492         taking an IntPtr argument.
4493
4494 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4495
4496         * domain.c:
4497         * object.c:
4498         * class-internals.h: renamed waithandle_class to
4499         manualresetevent_class.
4500         * marshal.c: propagate the exception if a remoting BeginInvoke call
4501         fails.
4502
4503 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4504
4505         * object.c: Properly handle vtable failures.
4506
4507 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4508
4509         * socket-io.c: Assert on vtable failure.
4510
4511         * mono-mlist.c: Assert on vtable failure.
4512
4513 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4514
4515         * marshal.c: Assert on vtable failure.
4516
4517 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4518
4519         * icall.c: Properly handle vtable failures.
4520
4521 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4522
4523         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4524
4525 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4526
4527         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4528
4529         * console-unix.c (do_console_cancel_event): Same.
4530
4531 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4532
4533         * class-internals.h: Add mono_class_vtable_full function that allows control
4534         if an exception should be raised or not.
4535
4536         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4537         to do what its documentation say, that is to return NULL and set exception_type on
4538         failure.
4539
4540         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4541         and change the code to honor it.
4542
4543 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4544
4545         * verify.c: Fix typo in error message.
4546
4547 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4548
4549         * security-core-clr.c: Fix default_platform_check so it can run
4550         the runtime coreclr tests (without an infinite recursion when
4551         throwing an exception).
4552
4553 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4554
4555         object.c (mono_delegate_ctor_with_method): Guard against null method.
4556
4557 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4558
4559         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4560         that should be replaced with error handling later.
4561
4562 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * marshal.c (mono_delegate_end_invoke): Fix warning.
4565
4566 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4567
4568         * loader.c (mono_field_from_token): Properly handle invalid
4569         dynamic tokens.
4570
4571 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4572
4573         * pedump.c (verify_image_file): Skip types that can't be
4574         decoded.
4575
4576 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * verify.c: Look for recursive valuetypes only against the
4579         type been initialized as this is a lot simpler and works.
4580
4581 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4582
4583         * verify.c: Ensure that fields are properly loaded before
4584         checking them.
4585
4586 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4587
4588         * object.c (mono_object_get_virtual_method) : Call 
4589           mono_cominterop_get_invoke if the object is a COM object.
4590
4591         Code is contributed under MIT/X11 license.
4592
4593 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4594
4595         * verify.c: Check for recursive valuetype definitions.
4596
4597 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         Use inheritance-aware interface offsets. Inherited types use the same offsets
4600         of their parents. This reduce offset duplication in case more than one type in
4601         the inheritance tree explicitly implements the same interface.
4602
4603         This also removes a source of vtable bubbles found in #532409. An abstract type
4604         isn't required to provide abstract methods to all interfaces it implements, which
4605         resulted in a bubble with the previous scheme as the child would get a non-full
4606         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4607         should be fixed.
4608
4609         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4610         it's expected to not cause any significant increase beyond that.
4611
4612         * class.c (setup_interface_offsets): Compute super class iface offsets
4613         first to force sharing.
4614
4615         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4616         dumping only the relevant ones.
4617
4618         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4619         methods a new slot regardless if they belong to an interface or not. This allows
4620         an inherited type to override the iface method separately from the class one.
4621
4622 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4623
4624         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4625         applications that take less than 2s to execute.
4626         Bug #524984 fixed.
4627
4628 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4629
4630         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4631
4632         * object.c (mono_get_runtime_callbacks): New helper function to return
4633         the runtime callbacks.
4634
4635         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4636         mono_get_runtime_build_info () as the display name.
4637         
4638 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4639
4640         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4641         argument, since NEWARR expects a native int. Fixes #481559.
4642
4643 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4646         against broken SRE methods.
4647
4648 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4649
4650         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4651         a NULL variable. Abort early on failure.
4652
4653 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * class.c (can_access_type): Fail visibility test for non nested
4656         types with nested visibility.
4657
4658 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4659
4660         * assembly.c (parse_public_key): Avoid allocating (and not 
4661         freeing) the public key array when it's not requested by the 
4662         caller.
4663         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4664         ves_icall_System_Threading_Thread_Thread_internal): Free 
4665         allocated memory on error.
4666
4667 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4668
4669         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4670
4671 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4672
4673         * class.c (mono_class_setup_fields): Remove duplicated local variable
4674         named gklass.
4675         Rename gklass to gtd to reflect the fact that it points to the generic
4676         type definition.
4677         Remove the duplicated call to mono_class_setup_fields on gtd and move
4678         the error check to the beginning.
4679
4680 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4683         Remove cruft of the previous patch.
4684
4685 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4686
4687         * metadata-verify.c (verify_method_table): Check for abstract + final.
4688         Fixes #534175.
4689
4690 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4691
4692         * verify.c (verify_class_fields): Check for duplicate fields.
4693
4694 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4695
4696         * metadata-verify.c: Verify the typeref table for duplicates.
4697
4698 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         This reverts r140936 and properly handles interfaces with static methods. The
4701         right fix is to ensure vtables without bubles which is an easier to verify
4702         constraint. We should avoid such special cases as of the reverted patch as those
4703         only make the runtime more brittle.
4704
4705         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4706         static methods on interfaces.
4707
4708         * class.c (setup_interface_offsets): Use the number of virtual methods when
4709         calculating interface offsets instead of the number of methods. This way we
4710         avoid bubles on the layout.
4711
4712 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4713
4714         * metadata-verify.c (verify_metadata_header): Some very smart
4715         obfuscators like to add extra stream headers. Ignore them.
4716
4717 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4720         methods correctly.
4721
4722 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4723
4724         * metadata-verify.c: Verify for duplicated types.
4725
4726 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4727
4728         * metadata-verify.c (verify_typedef_table): Verify for nested types
4729         without an entry on the nested class table.
4730
4731 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4734         <tom_hindle@sil.org>. Add locking around hash table accesses.
4735
4736 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4737
4738         * verify.c (mono_verifier_verify_class): Verify all interface if
4739         really are interfaces. Fixes #534184.
4740
4741 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4742
4743         * pedump.c: Initialize all types during metadata validation so we report
4744         errors only detected as part of class initialization.
4745
4746 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4747
4748         * metadata-verify.c (verify_method_table): PInvoke requires method to
4749         be static. Fixes #534189
4750
4751 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4752
4753         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4754         being NULL.
4755
4756 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4757
4758         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4759         for holes or bad methods. Fixes #525314.
4760
4761 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4762
4763         * class.c (setup_interface_offsets): Don't allocate slot
4764         for the same interface multiple times. This creates bubbles
4765         that waster space and make vtable verification harder.
4766
4767         The same interface get a slot multiple times since we need
4768         to get the closure of all implemented interfaces, which means
4769         the same interface is reported multiple times.
4770
4771 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4772
4773         * verify.c (mono_verifier_verify_class): Don't check the fields
4774         of generic instances since the context on which they got expanded
4775         might lead to false positives.
4776
4777         Such thing happens when a generic type is inflated in the context
4778         of a generic method and the inflated type of a field turns into a
4779         generic method argument, which causes the checking code to think
4780         it's an invalid class when it's not.
4781
4782 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4783
4784         * verify.c (mono_type_is_valid_in_context): Verify if type
4785         is NULL and remove duplicate test.
4786
4787 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4788
4789         * verify.c (mono_verifier_verify_class): Check fields for
4790         invalid generic arguments.
4791
4792 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4793
4794         * class.c (verify_class_overrides): Verify if for static
4795         and non virtual methods.
4796
4797 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4798
4799         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4800         Check for errors after retrieving the vtable.
4801
4802 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4803
4804         * class.c (mono_class_setup_vtable_general): Verify
4805         if method overrides are valid before processing them.
4806
4807 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4808
4809         * marshal.c (mono_array_to_lparray): Fix minimal build with
4810         cominterop disabled.
4811
4812         * marshal.c (mono_free_lparray): Same.
4813
4814 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4815
4816         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4817         the hash function for the ares_htable.
4818
4819 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4820
4821         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4822         bit for assembly flags. MS is ok with it but there is no spec anywhere
4823         on its mean
4824
4825 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4826
4827         * class.c (mono_class_create_from_typedef): Emit profiler events
4828         in all cases.
4829
4830 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4831
4832         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4833         Release memory on failure.
4834
4835 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4836
4837         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4838         to the internal API.
4839
4840         * metadata.c (get_constraints): Use a single-linked table as we don't
4841         traverse it backward. Fail and return FALSE if only of the contraint types
4842         is not found.
4843
4844         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4845         to mono_metadata_load_generic_param_constraints except for having a return value.
4846         This has to be done since the later is part of the public API.
4847
4848         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4849         and fail the type.
4850
4851         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4852         and fail the method.
4853
4854 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4857         with MS broken behavior of emmitting EH section sizes without the
4858         header size added.
4859
4860 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4861
4862         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4863         memory until we're sure that we'll need it. This avoids leaking for
4864         broken types or duplicated instantiation.
4865
4866 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4869         mistake.
4870
4871 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4872
4873         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4874         and expected size calculation.
4875
4876 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4877
4878         * class.c (mono_class_get_field_idx): Add fixme for broken
4879         behavior for types with multiple fields with the same name.
4880         I would rather fix it, but have no idea on how to generate
4881         such artifact for testing.
4882
4883 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4884
4885         * verify.c (verifier_load_field): We should allow references to
4886         fields to be made using the generic type definition. It's up to
4887         the loader system to fail invalid ops.
4888
4889         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4890         are invalid.
4891
4892 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4893
4894         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4895
4896         * metadata-internals.h: Fix declaration of 
4897         mono_metadata_interfaces_from_typedef_full.
4898
4899         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4900         heap_alloc_result parameter that controls if the result should be
4901         g_malloc'd.
4902
4903         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4904         array be g_malloc'd and properly document this public API function.
4905
4906 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4907
4908         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4909         remove METHOD_HEADER_TINY_FORMAT1.
4910
4911         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4912
4913         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4914
4915         Both spec and MS uses only 2 bits to enumerate the kind of header.
4916         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4917         is superfluous, only used for tiny headers with odd code lengths.
4918
4919         This change also make sure that mono doesn't wronly interpret bit 2
4920         of fat header flags, which is currently reserved.
4921
4922 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4923
4924         * metadata.c (do_mono_metadata_parse_type): Do error
4925         checking for element types. Don't abort if presented
4926         with a broken type kind.
4927
4928 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4929
4930         * metadata.c (mono_metadata_parse_method_signature_full):
4931         Gracefully fail bad vararg signatures.
4932
4933 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4934
4935         * profiler.c:
4936         * class.c: Fix warnings for uninitialized variables.
4937
4938 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4939
4940         * icall.c: Fix _NSGetEnviron method declaration warning.
4941
4942 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4943
4944         * icall.c:
4945         * reflection.c: Make bitwise checks explicit.
4946
4947 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4948
4949         * debug-helpers.c:
4950         * marshal.c: Fix printf warnings.
4951
4952 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * reflection.c (encode_cattr_value): Fix a warning.
4955
4956 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4957
4958         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
4959         of array bounds.
4960
4961 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4962
4963         * loader.c (mono_method_signature): Don't assert on broken
4964         signature. Print a more useful error message.
4965
4966 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4967
4968         * loader.c (mono_method_get_marshal_info): Assert if
4969         signature is invalid. Bounds check stores to the
4970         mspecs array;
4971
4972 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4973
4974         * loader.c (field_from_memberref): Fix warning.
4975
4976 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4977
4978         * loader.c (mono_method_get_param_names): Check if signature
4979         is null. Don't store beyond the size of the name array.
4980
4981 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4982
4983         * loader.c (mono_get_method_constrained): Check if signature
4984         is null.
4985
4986 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4987
4988         * loader.c (mono_loader_set_error_bad_image): Improve
4989         error messages.
4990
4991 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4992
4993         * loader.c (mono_get_method_full): Convert an assertion
4994         into a loader error.
4995
4996 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
4997
4998         * class-internals.h, class.c: Better naming and documentation.
4999
5000 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
5001
5002         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
5003         obj is NULL.
5004
5005 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5006
5007         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
5008         parsing fails.
5009
5010 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5011
5012         * loader.c (mono_loader_error_prepare_exception): Handle missing field
5013         errors with no class set.
5014
5015         * loader.c (field_from_memberref): If the field signature is of the wrong
5016         type fail with a MissingFieldException instead of a BadImageException as
5017         this is the behavior observed on MS. 
5018
5019 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5020
5021         * loader.c (field_from_memberref): Don't crash if either the field
5022         signature or the typespec class are invalid.
5023
5024 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5025
5026         * verify.c (verifier_load_field): Don't allow field related
5027         ops to reference fields on generic type definition.
5028
5029 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5030
5031         * metadata-verify.c: Add new warning level for errors specified
5032         by ECMA 335 but that MS ignores.
5033
5034         * metadata-verify.c (verify_method_table): Make compiler controled
5035         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
5036         this check is safe because the end result will only be some visibility
5037         exceptions been thrown.
5038
5039 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5040
5041         * verify.c (get_boxable_mono_type): Don't allow the
5042         use of the generic type definition on boxed type positions.
5043
5044         Fixes #531237.
5045
5046 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5047
5048         * threadpool.c: Make sure no cross-domain references remain in
5049         ares_htable or the arrays that are thrown away when resizing.
5050
5051 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5052
5053         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
5054         list of classes for which we have to unregister reflection_info
5055         with the GC and which are not in the namespace cache.
5056
5057         * reflection.c (mono_reflection_initialize_generic_parameter): Add
5058         the class to the list.
5059
5060 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5061
5062         * domain.c (mono_domain_free): Unregister the GC roots in
5063         MonoDomain.
5064
5065 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5066
5067         * reflection.c (mono_reflection_type_get_handle): Fix typo.
5068
5069 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5070
5071         * class.c: Add mono_class_get_field_from_name_full which does
5072         the same as mono_class_get_field_from_name but does check field
5073         signature as well.
5074
5075         * class-internals.h: Export mono_class_get_field_from_name_full as
5076         part of the internal API.
5077
5078         * loader.c (field_from_memberref): Search fields by name and signature
5079         as it's valid to have two fields with same name but different types.
5080
5081         Fixes #528055.
5082
5083 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
5084
5085         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
5086
5087         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
5088
5089         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
5090         System.Type.
5091
5092 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
5095
5096         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
5097
5098 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5099
5100         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
5101         to sgen-scan-object.h, which can be included and parameterized via
5102         macros.
5103
5104         * Makefile.am: sgen-scan-object.h added.
5105
5106 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5107
5108         * gc.c: #define GC_dont_gc if we're compiling with SGen.
5109
5110 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5111
5112         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
5113         before clearing a domain in the GC.
5114
5115 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5116
5117         * exception.c (mono_exception_from_name_domain): Actually create
5118         the exception in the specified domain.
5119
5120         * appdomain.c (mono_domain_create_appdomain_internal): Create the
5121         OutOfMemoryException a bit later so that the domain is inialized
5122         "enough" that it works.
5123
5124 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5125
5126         * threads.c (thread_cleanup): Clean up the cached_culture_info
5127         array to prevent cross-domain references.
5128
5129 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
5130
5131         * metadata.c: more documentation for MonoType accessors.
5132
5133 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
5134
5135         Fix incorrect size definitions where the tail array isn't a list
5136         of pointers
5137         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
5138         define size.
5139         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
5140         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
5141         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
5142
5143 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5144
5145         * reflection.h:
5146         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
5147
5148 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5149
5150         * metadata.c:
5151         * loader.c:
5152         * metadata-internals.h:
5153         * method-builder.c:
5154         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
5155
5156 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5157
5158         * cominterop.c:
5159         * metadata.c:
5160         * metadata.h:
5161         * loader.c:
5162         * marshal.c:
5163         * reflection.c: #define for sizeof in MonoType and
5164         MonoMethodSignature.
5165
5166 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5167
5168         * domain.c:
5169         * domain-internals.h: add and use #define's instead of sizeof()
5170         for MonoJitInfo and MonoJitInfoTable.
5171
5172 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5173
5174         * object.c:
5175         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5176
5177 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5178
5179         * metadata.c:
5180         * metadata.h:
5181         * object.c:
5182         * class-internals.h:
5183         * generic-sharing.c:
5184         * marshal.c: use a #define instead of sizeof() for a few
5185         structures that use a zero-length array.
5186
5187 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5190         to handle inflated generic methods.
5191
5192         * appdomain.c: Bump corlib version.
5193
5194         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5195         instances.
5196
5197         * reflection.c (fixup_method): Same
5198
5199         * reflection.c (resolve_object): Same.
5200
5201         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5202         g_error and a decent message.
5203
5204 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5205
5206         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5207         from the object because it could not yet be available globally
5208         (it happens if the profiler tries to create a gchandle on the
5209         MonoThread object of a thread that is still registering itself
5210         with the runtime).
5211
5212 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5213
5214         * reflection.c (mono_generic_class_get_object): Initialized the
5215         managed type arguments array.
5216
5217         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5218
5219         * appdomain.c: Bump corlib version.
5220
5221 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5222
5223         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5224         #527902.
5225
5226 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5227
5228         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5229         Avoid a crash if synch_cs is not set.
5230         
5231         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5232         Handle the case when the handle is 0.
5233
5234         * appdomain.c: Bump corlib version.
5235
5236 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5237
5238         * reflection.c (mono_type_get_object): Fix a warning.
5239
5240 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5241
5242         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5243         descriptor here.  We assume it's already been computed.
5244
5245         * generic-sharing.c (instantiate_other_info): Compute the GC
5246         descriptor for info type MONO_RGCTX_INFO_KLASS.
5247
5248 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5249
5250         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5251         type, so don't use MONO_OBJECT_SETREF to set a field.
5252
5253 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5254
5255         * gc.c: We were missing one case where invoking a finalizer would
5256         not reset the domain.  Also, in the finalizer thread loop, assert
5257         that we're in the root domain.
5258
5259 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5260
5261         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5262         if the type is not an array.
5263
5264 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5265
5266         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5267         method bound to the declaring type of the method. Raise an exception
5268         if the type is not a generic param.
5269
5270 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5271
5272         * class.c (print_unimplemented_interface_method_info): Print the
5273         full type name.
5274
5275         * class.c (mono_class_setup_vtable_general): When dealing with a
5276         generic instance first check if the generic type definition is
5277         not broken.
5278
5279 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5280
5281         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5282
5283         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5284
5285         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5286
5287         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5288
5289         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5290
5291         Code is contributed under MIT/X11 license
5292
5293 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * verify.c: Fix naming of stelem and ldelem.
5296
5297 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5298
5299         * generic-sharing.c: Replace the templates lock with the loader
5300         lock because of very hard to resolve deadlock issues.
5301
5302 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5303
5304         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5305         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5306         directly. Fixes #525338.
5307
5308         * class.c (mono_class_get_vtable_size): New helper function.
5309
5310         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5311         the field belongs to the type. Fixes #525733.
5312
5313 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5314
5315         * sgen-gc.c: When we stop a thread and its stack top is not within
5316         its allocated stack (because it's in an altstack signal handler),
5317         restart it and stop it again, until it is.
5318
5319 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5320
5321         * sgen-gc.c: Take a thread's stack top and registers from the
5322         sigcontext in the suspend signal handler.
5323
5324         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5325         stuff to sgen-archdep.h.
5326
5327         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5328         caller, because have code in sgen-archdep.h to acquire that data.
5329
5330 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5331
5332         * profiler.c, profiler.h, profiler-private.h:
5333         Added support for keeping track of code chunks and buffers.
5334
5335 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * metadata-verify.c: Fix endianness problems on decoding functions.
5338         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5339
5340 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5341
5342         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5343         schema for vectors and one dimension SZARRAY.
5344
5345 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5346
5347         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5348         schema for vectors and one dimension SZARRAY.
5349
5350 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5351
5352         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5353         Interlocked.(Compare)Exchange with object arguments, which invoke
5354         write barriers.
5355
5356 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5357
5358         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5359         passed invalid arguments.   Fixes another crasher in the
5360         Silverlight test suite.
5361
5362         * class.c (mono_class_array_element_size): Return 0 for the size
5363         of the class;  This fixes the crasher exposed by :
5364
5365         typeof (void).MakeArrayType ();
5366
5367         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5368         if there is no method to dereference.    Put all the code that
5369         depends on this inside the if (method) block.
5370
5371         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5372         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5373
5374         With this change, we pass the test.
5375         
5376         * reflection.c (mono_reflection_sighelper_get_signature_local):
5377         Only dereference the assembly if it has been set.    Fixes a
5378         crasher exposed by #525328
5379
5380 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5381
5382         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5383         don't perform the store in mono_gc_wbarrier_generic_nostore().
5384         Remove the second argument (value), which is not needed.
5385
5386 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5387
5388         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5389         the build.
5390
5391         * boehm-gc.c: Ditto.
5392         
5393 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5394
5395         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5396         not perform the store itself.  Introduce
5397         mono_gc_wbarrier_generic_nostore(), which is the same as
5398         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5399         store.
5400
5401 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5402
5403         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5404         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5405         we still need the memcpy().
5406
5407 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5408
5409         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5410         so that big arrays are handled correctly.  Always use
5411         safe_object_get_size() to calculate array object sizes, which
5412         takes bounds into account.
5413
5414 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5415
5416         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5417         GC descriptor is computed before we use it.
5418
5419 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5420
5421         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5422         write barrier if necessary.
5423
5424 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5425
5426         * icall-def.h, icall.c, thread-types.h: New separate icall for
5427         VolatileWrite(object&,object) that uses a write barrier.
5428
5429         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5430         barriers in icalls which write to "ref" or "out" arguments.
5431
5432 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5433
5434         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5435         handler in a separate icall, to reduce the size of the wrappers.
5436
5437 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5438
5439         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5440
5441 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * metadata-verify.c (parse_field): Allow byref field.
5444
5445         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5446
5447         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5448
5449 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5450
5451         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5452         Fixes #522784.
5453
5454 2009-07-20  Robert Jordan  <robertj@gmx.net>
5455
5456         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5457         Fix invalid IL in valuetype handling (STOBJ must push the
5458         corresponding class). Fixes bug #523149.
5459
5460         Code is contributed under MIT/X11 license.
5461
5462 2009-07-20  Geoff Norton  <gnorton@novell.com>
5463
5464         * gc.c: Use proper semaphores where available on posix and darwin.
5465
5466 2009-07-19  Geoff Norton  <gnorton@novell.com>
5467
5468         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5469
5470 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5471
5472         * refletion.c (is_sre_usertype): Change name to is_usertype and
5473         invert it's result so it returns true if the type is an user type
5474         and not the opposite.
5475
5476         * reflection.c (is_*_type): Change all of those to use new macro
5477         check_corlib_type_cached that cached the type lookup so we don't
5478         need to do string comparisons all the type. Changed the signature
5479         to take a MonoClass instead.
5480
5481         * reflection.c: Change mono_image_create_token and resolve_object
5482         to use is_sre_* functions.
5483
5484 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5485
5486         * sgen-gc.c: Check for writes to the stack in the managed
5487         wbarrier as well.
5488
5489 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5490
5491         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5492         but put them on a list which is processed with the other thread's
5493         remsets.
5494
5495 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5496
5497         * sgen-gc.c: Fix and enable the internal allocator instead of
5498         using malloc/free (which causes deadlocks).
5499
5500 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5501
5502         * refletion.c: Fix builds with SRE disabled by adding a minimal
5503         implementation of mono_reflection_type_get_handle.
5504
5505 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5506
5507         * refletion.c: Make mono_reflection_type_get_handle non static.
5508
5509         * object-internals.h: Export mono_reflection_type_get_handle.
5510
5511         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5512         unmanaged handle using mono_reflection_type_get_handle.
5513
5514 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5515
5516         * refletion.c: Replace all reads of MonoReflectionType::type with
5517         calls to mono_reflection_type_get_handle. Only the functions that
5518         deal with constructing TypeBuilder::type have not been changed
5519         because they have to deal with NULL values.
5520
5521         This is a first step into supporting reflection types that don't
5522         map directly into their unmanaged counterpart.
5523
5524 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5525
5526         * metadata-verify.c (parse_locals_signature): Don't complain
5527         on signature with zero locals since MS generates it and doesn't
5528         bother with.
5529
5530 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * reflection.c (mono_image_get_array_token): Resolve return
5533         type using mono_reflection_type_get_handle.
5534
5535         * reflection.c (mono_image_get_array_token): Resolve array method
5536         parent type using mono_reflection_type_get_handle.
5537
5538 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * reflection.c (mono_image_basic_init): Applied patch from
5541         <Dax@daxxfiles.net>. Set the public key token from the assembly
5542         builder. Fixes #518909.
5543
5544         * appdomain.c: Bump corlib version.
5545
5546 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5547
5548         * class.c (mono_class_needs_cctor_run): Make this return false if
5549         the class has no cctor.
5550
5551 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5552
5553         * sgen-gc.c: When the minor GC needs to allocate a new section,
5554         invoke the major GC afterwards.
5555
5556 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5557
5558         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5559           Applying the window_style field to the SHELLEXECUTEINFO struct.
5560
5561         Code is contributed under MIT/X11 license.
5562
5563 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5564
5565         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5566         locking earlier.  Fix it in the managed allocator by making sure
5567         that no thread is stopped there before the GC runs.  If we do stop
5568         a thread there, we restart it and let it run a but, until it stops
5569         somewhere else.
5570
5571         * gc-internal.h, gc.c: Function for getting the IP from a signal
5572         context via a function registered by mini.
5573
5574 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5575
5576         * object-internals.h (MonoIntPtr): New structure describing a boxed
5577         IntPtr.
5578
5579         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5580         returns. Fixes #519953.
5581
5582         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5583
5584 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5585
5586         * class-internals.h, generic-sharing.c: New RGCTX info type for
5587         getting a remoting invoke with check wrapper.
5588
5589 2009-07-07  Geoff Norton  <gnorton@novell.com>
5590
5591         * icall-def.h: Fix the enable-minimal build.
5592
5593 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5594
5595         * object-internals.h: Add MonoReflectionDerivedType.
5596
5597         * reflection.c: Implement support for PointerType.
5598         Fixed tons of warnings.
5599
5600 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5601
5602         * object-internals.h: Add MonoReflectionByRefType.
5603
5604         * reflection.c: Implement support for ByRefType.
5605
5606 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5607
5608         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5609
5610         * object-internals.h: Add MonoReflectionArrayType and
5611         mono_reflection_create_unmanaged_type.
5612
5613         * reflection.c: Implement support for ArrayType.
5614
5615 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5616
5617         * metadata-verify.c (is_valid_method_header): Parse EH block
5618         flags correctly.
5619
5620 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5621
5622         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5623         processing the disappearing links, and process disappearing links
5624         in a loop until no new objects are copied.
5625
5626 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5627
5628         * object.c (handle_enum): Invoke the write barrier when copying
5629         value type instances.
5630
5631         * sgen-gc.c: Register remsets for unmanaged write barriers only
5632         when the address written to is actually on the heap.  This makes
5633         set_value() in object.c work without requiring that the result be
5634         on the heap.
5635
5636 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5637
5638         The runtime wrappers are all bound to a given type that must
5639         exist in the same image. For regular images we use the <Module>
5640         type, which is required to exist for all images.
5641
5642         The <Module> type can't be used for dynamic images because it
5643         might not exist at the time the wrapper is required, so we create
5644         a synthetic type to use instead.
5645
5646         The current code works because of the 2 stage setup of MonoClass,
5647         but once this is gone it will no longer work.
5648
5649         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5650
5651         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5652
5653         * object-internals.h: Export mono_image_set_wrappers_type icall
5654         as part of the internal API.
5655
5656         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5657         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5658
5659         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5660         image wrappers_type to the provided value.
5661
5662 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5663
5664         * appdomain.c (deregister_reflection_info_roots): No need
5665         to use the image lock here.
5666
5667 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5668
5669         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5670
5671 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5672
5673         * threads.c: Store the thread start argument in a hash table instead of
5674         registering it as a root, as libgc doesn't support unregistering roots
5675         under windows, leading to 'too many root sets' errors when many threads
5676         are created.
5677
5678         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5679         shutdown, they can still be referenced by the other dying objects.
5680         Fixes #514506.
5681
5682 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5683
5684         * socket-io.c: DontLinger does not allow LingerOptions.
5685
5686 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5687
5688         * metadata-verify.c: The spec doesn't mention that it's possible to add
5689         custom attribute to a generic parameter. Fixed.
5690
5691 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5692
5693         * class.c (inflate_generic_type): Don't crash while trying to output a message
5694         on why we're aborting.
5695
5696 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5697
5698         * socket-io.c: DontLinger can take an int or a boolean too.
5699
5700 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5701
5702         * gc.c: check for a null argument to SuppressFinalize () and
5703         ReRegisterForFinalize ().
5704
5705 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5706
5707         * loader.c (method_from_methodspec): Call into the verifier to check
5708         the signature.
5709
5710         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5711
5712         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5713         part of the internal API.
5714
5715 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5716
5717         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5718         the signature.
5719
5720         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5721
5722         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5723         part of the internal API.
5724
5725 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5726
5727         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5728         the signature.
5729
5730         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5731         blob verification.
5732
5733         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5734         part of the internal API.
5735
5736 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5737
5738         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5739         when doing basic verification. 
5740
5741         This check must be done since the runtime peeks into signatures in much
5742         more places than it does decoding so it makes sense to ensure that all
5743         pointers to blob objects are well formed.
5744
5745 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5746
5747         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5748         Use proper overflow dectection. Fix usage of it.
5749
5750 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5751
5752         * loader.c (field_from_memberref): Call into the verifier to check
5753         the signature.
5754
5755         * loader.c (mono_method_get_signature_full): Same.
5756
5757         * loader.c (method_from_memberref): Same.
5758
5759         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5760
5761         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5762         part of the internal API.
5763
5764 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5765
5766         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5767         or unloaded, still return an AsyncResult, but don't add it to the
5768         threadpool.
5769
5770 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5771
5772         * threads.c: fix missing colon when DEBUG is defined.
5773
5774 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5775
5776         * threadpool.c: Don't add new calls to a threadpool if the domain
5777         of the call is unloading or unloaded.  When dequeuing a job, null
5778         the reference in the queue.
5779
5780 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5781
5782         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5783         generation if an object was moved.
5784
5785 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5786
5787         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5788           parameters of type SAFEARRAY[VARIANT].
5789
5790         * reflection.c (encode_marshal_blob): Properly generate element type
5791           (SafeArraySubType marshal attribute option).
5792
5793         Code is contributed under MIT/X11 license.
5794
5795 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5796
5797         * reflection.c: in mono_method_clear_object () really ensure all the
5798         objects are removed.
5799
5800 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5801
5802         * loader.c (mono_method_signature): Call into the verifier to check
5803         the method signature.
5804
5805         * metadata-verify.c (verify_method_table): Move signature verification
5806         to verify_method_table_full.
5807
5808         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5809
5810         * verify-internals.h: Export mono_verifier_verify_method_signature as
5811         part of the internal API.
5812
5813 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5814
5815         * loader.c (mono_method_get_header): Call into the verifier to
5816         check the method header.
5817
5818         * metadata-verify.c: Add mono_verifier_verify_method_header.
5819
5820         * verify-internals.h: Export mono_verifier_verify_method_header as
5821         part of the internal API.
5822
5823 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5824
5825         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5826         check the field signature. Replace an assert with an explicit check.
5827
5828         * class.c (mono_class_setup_fields): Call into the verifier to check
5829         the field signature.
5830
5831         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5832
5833         * verify-internals.h: Export mono_verifier_verify_field_signature as
5834         part of the internal API.
5835
5836 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5837
5838         * class.c (mono_class_find_enum_basetype): Simplify this function
5839         by moving code outside of the loop and not decoding static fields.
5840
5841 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5842
5843         * metadata-verify.c (verify_typedef_table): Check the extends
5844         token here. Move to here a flags check from verify_typedef_table_full.
5845
5846 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * metadata-verify.c (is_valid_method_header): Fix a warning.
5849
5850         * metadata-internals.h (MonoImage): Remove the unused 
5851         static_rgctx_invoke_wrapper_cache.
5852
5853         * image.c marshal.c: Ditto.
5854
5855 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5856
5857         * image.c (do_mono_image_load): Enable table data verification.
5858
5859 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5860
5861         * metadata-verify.c (is_valid_constant): Fix nullref check.
5862
5863 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5864
5865         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5866
5867 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5868
5869         * sgen-gc.c: Managed allocation with pthreads TLS.
5870
5871         * threads.c, threads-types.h: Functions for the JIT to tell the
5872         runtime whether it supports the MONO_TLS opcode.
5873
5874 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5875
5876         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5877         without methods.
5878
5879 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5880
5881         * metadata-verify.c (is_valid_constant): Fix the string length check.
5882         Use safe overflow checking. Add decent error messages.
5883
5884 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5885
5886         * metadata-verify.c: Move remaininh blob checks to the offline
5887         verification path.
5888
5889 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5890
5891         * metadata-verify.c: Move more blob checks to the offline verification
5892         path.
5893
5894 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5895
5896         * object-internals.h : Adding interrupt_on_stop field.
5897
5898         * threads.c (mono_thread_request_interruption) : On Windows exit the
5899           thread if interrupt_on_stop is set.
5900
5901         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5902          Removing old interrupt logic and setting the interrupt_on_stop for the
5903          thread when calling accept.
5904
5905         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5906          setting the interrupt_on_stop for the thread when calling accept.
5907
5908         Contributed under MIT/X11 license.
5909
5910 2009-06-20  Martin Baulig  <martin@ximian.com>
5911
5912         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5913
5914 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5917         running in no-exec mode.
5918
5919 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5920
5921         * metadata-verify.c (verify_method_table): Move header
5922         checking to verify_method_table_full.
5923
5924         * metata-verify.c (mono_verifier_verify_full_table_data):
5925         Call verify_method_table_full.
5926
5927 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5928
5929         * metadata-verify.c (verify_field_table): Move signature
5930         checking to verify_field_table_full.
5931
5932         * metata-verify.c (mono_verifier_verify_full_table_data):
5933         Call verify_field_table_full.
5934
5935 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5936
5937         * metadata-verify.c (verify_typedef_table): Move remaining
5938         stuff to verify_typedef_table_full.
5939
5940 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5941
5942         * metadata-verify.c: Kill is_corlib from VerifyContext.
5943         It is only used by the offline mode.
5944         So we better remove it from the runtime path.
5945
5946 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5947
5948         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
5949         function that perform the offline metadata verification steps.
5950
5951         * metadata-verify.c (verify_typedef_table): Move some checks to
5952         verify_typedef_table_full and make it been called by new function
5953         mono_verifier_verify_full_table_data.
5954
5955         * pedump.c: Call mono_verifier_verify_full_table_data.
5956
5957         * verify-internals.h: Export mono_verifier_verify_full_table_data as
5958         part of the internal API.
5959
5960 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5961
5962         * metadata-verify.c (typedef_is_system_object): Fix System.Object
5963         check.
5964
5965         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
5966         flags bits. SupportLastError was confused as bit 7 instead of 6.
5967
5968         * metadata-verify.c (verify_implmap_table): Fix import scope verification
5969         to check against the module ref table instead of module.
5970
5971         * metadata-verify.c (verify_implmap_table): Fix corlib check.
5972
5973         * pedump.c: Call mono_image_load_names.
5974
5975 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5976
5977         * image.c: Extract mono_image_load_names from do_mono_image_load.
5978
5979         * metadata-internals.h: Export mono_image_load_names as part of
5980         the internal API.
5981         
5982 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
5983
5984         * metadata.c (mono_metadata_cleanup): Free the generic method cache
5985         first, as it could reference data in the other caches.
5986
5987 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5988
5989         * metadata-verify.c: Finished with method header verification.
5990
5991 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * metadata-verify.c: Added more header verification code.
5994         Now only EH clauses are missing.
5995
5996 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * marshal.c (get_runtime_invoke_type): Don't share primitive types
5999         for return values.
6000
6001 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6002
6003         * metadata-verify.c: Initial method header verification.
6004
6005 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * metadata-verify.c (verify_import_table): The IAT contents
6008         might end been patched by the windows DL when running with
6009         coree enabled.
6010
6011 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * class.c (mono_class_from_typeref): If the enclosing type is not
6014         found return null instead of crashing. Fixes #508487.
6015
6016 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
6017
6018         * normalization-tables.h : updated to the latest unicode charcter
6019           data.
6020         * appdomain.c : bump corlib version.
6021
6022 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
6023
6024         * class.c (mono_class_from_name): Fix support for assembly references
6025         in the EXPORTEDTYPE table. Fixes #511704.
6026
6027 2009-06-13  Geoff Norton  <gnorton@novell.com>
6028
6029         * domain.c: Ensure that mono_domain_assembly_open actually opens the
6030         assembly in the target domain.
6031
6032 2009-06-12  Robert Jordan  <robertj@gmx.net>
6033
6034         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
6035         because "this" of the managed signature has become an
6036         ordinary parameter in the unmanaged signature.
6037
6038 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
6039
6040         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
6041         field for owner-less generic containers.
6042
6043         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
6044         image field of the owner-less generic containers created here.
6045
6046         * metadata.c (mono_metadata_load_generic_params): Ditto, the
6047         contain is ownerless until the caller sets its owner.
6048
6049         * metadata.c (type_in_image): Handle owner-less generic containers
6050         correctly.
6051         
6052 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * image.c (mono_image_close): Support debug_assembly_unload for
6055         dynamic images too.
6056
6057 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
6058
6059         * class.c: Fix some typos in comments.
6060
6061 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
6064
6065         * threads.c (mono_thread_execute_interruption): Avoid creating the
6066         abort exception object while holding the synch_cs lock.
6067
6068 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6069
6070         * metadata-verify.c: Verify basic cattr content.
6071
6072 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
6073
6074         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
6075         nested types.
6076         
6077         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
6078         support for nested types. Fixes #511704.
6079
6080 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6081
6082         * metadata-verify.c: Verify methodspec signatures.
6083
6084 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6085
6086         * metadata-verify.c: Verify typespec signatures.
6087
6088 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
6089
6090         * metadata.c (free_inflated_method): Call 
6091         mono_marshal_free_inflated_wrappers (), which was missed earlier.
6092
6093 2009-06-08  Miguel de Icaza  <miguel@novell.com>
6094
6095         * mono-config.c: Small change to report the PPC64/ILP32 model.
6096
6097 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6098
6099         * metadata-verify.c (parse_type): Check szarray.
6100
6101 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6102
6103         * metadata-verify.c (parse_type): Check fnptr.
6104
6105 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6106
6107         * metadata-verify.c (parse_type): Check generic instances.
6108
6109 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6110
6111         * metadata-verify.c (parse_type): Check array shape.
6112
6113 2009-06-05  Robert Jordan  <robertj@gmx.net>
6114
6115         * class.c (mono_class_create_from_typedef): Check only for
6116         mscorlib's System.Array.
6117
6118 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6119
6120         * metadata-verify.c (parse_type): Check pointer, class/valuetype
6121         and generic params. 
6122
6123         * metadata-verify.c (parse_field): Check the signature.
6124
6125 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6126
6127         * metadata-verify.c: Implement locals signature check.
6128
6129 2009-06-04  Marek Safar  <marek.safar@gmail.com>
6130
6131         * domain.c: Add .NET 4.0 Beta 1 version.
6132
6133 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
6134
6135         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
6136           For QueryInterface on CCWs consider the base class
6137           interfaces as well.
6138
6139         Code is contributed under MIT/X11 license.
6140
6141 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
6144
6145         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
6146         used.
6147
6148         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6149         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
6150
6151         * generic-sharing.c (inflate_other_data): Ditto.
6152         
6153 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6154
6155         * metadata-verify.c: Implement property signature check.
6156
6157 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6158
6159         * sgen-gc.h: Register saving support for PPC.
6160
6161 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6162
6163         * sgen-gc.c: Fixed a pthread TLS screwup.
6164
6165 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6166
6167         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6168         supported.
6169
6170 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6171
6172         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6173         keyword is not supported.
6174
6175 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6176
6177         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6178         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6179         the inflated method is freed. Fixes #508389.
6180
6181         The code is contributed under the MIT/X11 license.
6182         
6183 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * marshal.c (get_wrapper_target_class): New helper function.
6186         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6187         the <Module> class of the image. Fixes #509049.
6188
6189 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6190
6191         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6192         Check if the thread was interrupted and proccess it straight away.
6193         Makes abortion much more responsive.
6194
6195 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6196
6197         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6198         MonoThread::interruption_requested to match it's counterpart.
6199
6200         Fixes a hang in abort-stress-1 on a 2 core x86.
6201
6202         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6203         Fix warning.
6204
6205 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6206
6207         Change MonoImage::name_cache to be protected by the image lock
6208         instead of the loader lock.
6209
6210         * appdomain.c (deregister_reflection_info_roots): Protect access
6211         to name_cache.
6212
6213         * class.c (mono_image_init_name_cache): Change from the loader lock
6214         to the image lock. Check if the cache wasn't already created.
6215
6216         * class.c: Change from the loader to the image lock.
6217
6218         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6219         the code to hold the image lock while iterating over name_cache and
6220         not go into mono_array_new holding it.
6221
6222         * metadata-internals.h: Add a comment about this change.
6223
6224 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6225
6226         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6227         Under the 2.0 profile raise the loader error.
6228
6229         Fixes #508532.
6230
6231 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6232
6233         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6234         of ldind opcode for generic instances so we don't fail for direct wrappers.
6235         This only affect direct calls.
6236
6237 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6238
6239         * reflection.c (create_dynamic_mono_image): Fix warnings.
6240
6241         * generic-sharing.c (other_info_equal): Ditto.
6242         
6243 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6244
6245         * metadata-verify.c: Implement field signature check.
6246
6247 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6248
6249         * metadata-verify.c: Implement standalone signature check.
6250
6251 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6252
6253         * metadata-verify.c: Implement methodref signature check.
6254
6255 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6258         callbacks supplied by the runtime.
6259
6260         * object.c (mono_install_callbacks): New internal function to install
6261         the callbacks.
6262
6263         * object.c (mono_create_ftnptr): Move the implementation of this to
6264         mini/.
6265
6266         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6267
6268 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6269
6270         * metadata-verify.c (parse_return_type): Proper byref check.
6271         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6272         generic signatures and method params.
6273
6274 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6275
6276         * metadata-verify.c (decode_signature_header): Fix bounds check.
6277
6278         * metadata-verify.c (parse_custom_mods): Check custom mods.
6279
6280         * metadata-verify.c (parse_type): Do initial basic verification
6281         of valid values.
6282         
6283         * metadata-verify.c (is_valid_method_signature): Parse the generic
6284         param count.
6285
6286 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6287
6288         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6289         discarded based on their most specific definition so we set the method_slots
6290         array before checking if the method is acceptable or not.
6291
6292         Fixes #506757.
6293
6294 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6295
6296         * icall.c: Free the old array when resizing a mono_ptr_array.
6297
6298 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6299
6300         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6301         for the hashes whose keys are managed objects.
6302
6303 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6304
6305         * object-internals.h, threads.c: Set the execution context on
6306         thread start here, not in corlib.
6307
6308         * appdomain.c: Bump corlib version.
6309
6310 2009-05-27  Martin Baulig  <martin@ximian.com>
6311
6312         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6313         if `_mono_debug_using_mono_debugger' is set to make things work
6314         properly when embedding Mono.
6315
6316 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6317
6318         * class.c (mono_class_setup_fields): Don't mark simd types as having
6319         16 bytes alignment as the whole runtime doesn't support.
6320
6321 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6322
6323         * metadata-verify.c (safe_read): Use endian safe read macros.
6324
6325 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6328         it is read-only when using full aot.
6329
6330 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6331
6332         * metadata-verify.c (is_valid_method_signature): Verify parts
6333         of the return type. Provide an error message in case of failure.
6334
6335 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6336
6337         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6338
6339 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6340
6341         * metadata-verify.c: Include the size prefix in the bounds check.
6342
6343 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6344
6345         * icall.c: Remove warnings.
6346
6347         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6348         prevent auto-detection based on GCC defines.
6349
6350         Add PS3
6351
6352         * metadata-verify.c: Do not include signal.h
6353
6354         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6355         messages.  Not sure why the g_assert_not_reached is not enough to
6356         quiet the compiler.
6357         
6358
6359         * appdomain.c: Remove code that is not used when
6360         DISABLE_SHADOW_COPY is set.
6361
6362         * image.c: use g_getenv
6363
6364 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6365
6366         * reflection.c: Remove code that it not used with
6367         DISABLE_REFLECTION_EMIT is defined.
6368
6369 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6372         invoke wrappers.
6373
6374 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6375
6376         * socket-io.c
6377         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6378         the ifdef here and instead put that on io-layer
6379
6380 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6381
6382         * metadata-verify.c: Verify the generic param constraint table.
6383
6384 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * metadata-verify.c (verify_generic_param_table): Fix
6387         thinko on the valid flags bits for generic params.
6388
6389 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6390
6391         * metadata-verify.c: Verify the methodspec table.
6392
6393 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * metadata-verify.c: Verify the generic param table.
6396
6397 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6398
6399         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6400
6401 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6402
6403         * sgen-gc.c: Use generation enum more consistently and use the
6404         correct generation in mono_gc_register_for_finalization().
6405
6406 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6407
6408         * metadata-verify.c: Verify the nested class table.
6409
6410 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6411
6412         * metadata-verify.c: Verify the manifest resource table.
6413
6414 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6415
6416         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6417
6418 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6419
6420         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6421         wrappers, this is now done in the JIT.
6422         
6423         * class.c (mono_set_generic_sharing_supported): New internal function.
6424         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6425
6426 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6427
6428         * metadata-verify.c: Verify the exported type table.
6429
6430 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6431
6432         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6433
6434 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6435
6436         * metadata-verify.c: Verify the file table.
6437
6438 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6439
6440         * metadata-verify.c (verify_assembly_table): Fix an error message.
6441
6442         * metadata-verify.c: Verify the assemblyref table.
6443
6444 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6445
6446         * metadata-verify.c (verify_assembly_table): Fix the valid
6447         bits mask for flags.
6448
6449 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6452         generic methods as well.
6453
6454 2009-05-15  Geoff Norton  <gnorton@novell.com>
6455
6456         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6457         use-case and is significantly more performant than the wapi layer.
6458
6459 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6460
6461         * metadata-verify.c: Verify the assembly table.
6462
6463 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6464
6465         * metadata-verify.c: Fix rows limit check.
6466
6467 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6468
6469         * metadata-verify.c: Verify the fieldrva table.
6470
6471 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6472
6473         * sgen.c: Speed up weak links and finalizers by grouping them by
6474         generation.
6475
6476 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6477
6478         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6479         free the old GCHandle (only applies to SGen).
6480
6481 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6482
6483         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6484         mono_metadata_load_generic_params () for non-generic methods.
6485
6486 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6487
6488         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6489         New function for returning a monitor's weak link if it has one.
6490
6491         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6492         one) when clearing a domain.  These can still be around because
6493         the object might not have been collected.
6494
6495 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6496
6497         * gc.c: Fix a warning.
6498
6499 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6500
6501         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6502         prevous wait that resulted in a deadlock on Windows when initializing
6503         the runtime form DllMain. Also results in improved startup time.
6504         (finalizer_thread): Get rid of thread_started_event.
6505         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6506         resulting MonoThread.
6507
6508         Contributed under MIT/X11 license.
6509
6510 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6511
6512         * metadata-verify.c: Verify the implmap table.
6513         Don't require that #US and #Strings be present.
6514
6515 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6516
6517         * security-core-clr.c: Delegate checks are done at creation time,
6518         not a invocation time. Fix exception for Telerik Silverlight demo
6519
6520 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6521
6522         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6523         case for the Thread class.
6524
6525         * threads.c: Do clean-up of abort exception/state in
6526         thread_cleanup() instead of Thread.free_internal().  Also clean up
6527         current_appcontext.  The reason we have to do that is because
6528         those references might point into another domain and if that
6529         domain is unloaded before the thread is finalized, they point to
6530         invalid data.
6531
6532 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6533
6534         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6535         stub signatures.
6536         
6537         Contributed unter MIT/X11 license.
6538
6539 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6540
6541         * verify.c, metadata-verifier.c: Add support for disabling the
6542         verifier in some builds.
6543
6544         [ Sorry, my previous commit accidentally commited some work in
6545         progress ]
6546
6547 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * class.c (mono_class_setup_fields): Set class->field.first for
6550         generic instances.
6551
6552 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6553
6554         * metadata-verify.c: Verify the typespec table.
6555
6556 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6557
6558         * metadata-verify.c: Verify the module table.
6559
6560 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6561
6562         * metadata-verify.c: Verify the methodimpl table.
6563
6564 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6565
6566         * metadata-verify.c: Verify the property table.
6567
6568 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * debug-helpers.c (mono_method_desc_match): Add support for generic
6571         glob patterns.
6572
6573 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6574
6575         * metadata-verify.c: Verify the propertymap table.
6576
6577 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6578
6579         * metadata-verify.c: Verify the event table.
6580
6581         * metadata-verify.c (search_sorted_table): Fix offset
6582         calculation.
6583
6584 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6585
6586         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6587
6588 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6589
6590         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6591         because mono_delegate_free_ftnptr() needs it.
6592
6593 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6594
6595         * metadata-verify.c: Verify the eventmap table.
6596
6597 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6598
6599         * metadata-verify.c: Verify the standalonesig table.
6600
6601 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6602
6603         * metadata-verify.c: Verify the field layout table.
6604
6605 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6606
6607         * class.c (mono_type_get_name_recurse): Don't crash
6608         for ownerless generic params.
6609
6610         * debug-helpers.c (mono_type_get_desc): Correct the format
6611         for ownerless generic params.
6612
6613 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6614
6615         * metadata-verify.c: Verify the class layout table.
6616
6617 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6618
6619         * metadata-verify.c: Verify the decl security table.
6620
6621 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6622
6623         * domain.c (mono_domain_set_internal_with_options): Don't do
6624         anything if the old domain is the same as the old one.  Fixes
6625         #499326.
6626
6627 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6628
6629         * appdomain.c: Deregister the reflection_info roots when unloading
6630         a domain.
6631
6632         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6633         memory allocated by a domain and frees its disappearing links.
6634
6635         * boehm-gc.c, null-gc.c: Empty implementation of
6636         mono_gc_clear_domain().
6637
6638 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6639
6640         * appdomain.c (clear_cached_vtable): Free the static fields memory
6641         block.
6642
6643 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6644
6645         * gc.c: Set the correct domain when invoking finalizers.
6646
6647         * appdomain.c: Set the correct domain when creating threads.
6648
6649 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6650
6651         * sgen-gc.c: Fix skip size for vectors.
6652
6653 2009-05-03  Martin Baulig  <martin@ximian.com>
6654
6655         * mono-debug-debugger.c
6656         (mono_debugger_check_breakpoints): Check class init handlers even
6657         if we don't have any method load handers.
6658
6659 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6660
6661         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6662         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6663
6664 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * metadata-verify.c: Verify the field marshal table.
6667
6668 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6669
6670         * metadata-verify.c: Verify the custom attribute table.
6671
6672 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         * metadata-verify.c: Verify the constant table.
6675
6676 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6677
6678         * metadata-verify.c: Verify the memberef table.
6679
6680 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6681
6682         * metadata-verify.c (get_coded_index_token): Remove
6683         dead argument.
6684
6685 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * metadata-verify.c: Verify the interfaceimpl table.
6688
6689 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * verify.c: Improve error message.
6692
6693         * debug-helpers.c (mono_type_get_desc): Harden the code that
6694         deals with VAR and MVAR.
6695
6696 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6697
6698         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6699         part of #498692.
6700
6701 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6702
6703         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6704         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6705
6706 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6707
6708         * security-core-clr.c: Avoid redundant checks for platform code, 
6709         e.g. check for method and for class (very common) and check
6710         for class and outer class (less common)...
6711
6712 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * reflection.c: Avoid returning random cattrs for synthetic methods.
6715         Fixes #498545.
6716
6717 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6718
6719         * assembly.c: assemblies in the GAC should never be shadow-copied.
6720
6721 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6722
6723         * domain.c, domain-internals.h: Disable
6724         track_resurrection_{objects,handles}_hash in MonoDomain if using
6725         SGen.
6726
6727 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6728
6729         * metadata-verify.c: Verify the param table.
6730
6731 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6732
6733         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6734         MethodList.
6735
6736         * metadata-verify.c (verify_method_table): Proper check the ParamList
6737         field.
6738
6739 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * metadata-verify.c (verify_method_table): Check for runtime
6742         implemented functions such as delegate .ctors. Remove spurious
6743         printf.
6744         
6745 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6748
6749 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6750
6751         Don't allocate MonoGenericInfo for ownerless generic params.
6752         * class-internals.h (MonoGenericParam::info): Move field to ...
6753         (MonoGenericParamFull): ... this.  New struct.
6754         (MonoGenericContainer::type_params): Change type to
6755         MonoGenericParamFull.
6756         (MonoGenericParam, MonoGenericContainer): Update accessors.
6757         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6758         'info' field for ownerless generic param.
6759         (mono_metadata_load_generic_params): Update to changes.
6760         * reflection.c (mono_reflection_create_generic_class): Likewise.
6761         (reflection_methodbuilder_to_mono_method): Likewise.
6762         (mono_reflection_initialize_generic_parameter): Likewise.
6763
6764 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6765
6766         Don't use MonoGenericParamInfo for ownerless generic params.
6767         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6768         use ParamInfo class at all.
6769         (mono_class_from_generic_parameter): Use them.
6770         (make_generic_param_class): Fix a couple of instances where 'pinfo
6771         == NULL' wasn't handle.
6772
6773 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6774
6775         * class.c (make_generic_param_class): Carve out of ...
6776         (mono_class_from_generic_parameter): ... here.
6777
6778 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6779
6780         Simplify mono_class_from_generic_parameter
6781         * class-internals.h (MonoGenericParamInfo::token): New field.
6782         * metadata.c (mono_metadata_load_generic_params): Initialize it
6783         from metadata.
6784         * class.c (mono_class_from_generic_parameter): Use it instead of
6785         searching through metadata.
6786
6787 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6788
6789         * metadata-verify.c: Add verification of the method table.
6790
6791 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6792
6793         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6794         Delegate::Invoke optimization.
6795
6796 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6797
6798         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6799         string returned by get_shadow_assembly_location_base.
6800
6801         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6802         about caller's ownership.
6803
6804 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6805
6806         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6807         reflection memory on domain unload.
6808
6809         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6810         reflection cleanup code do it.
6811
6812         * domain-internals.h: Add mono_reflection_cleanup_domain.
6813
6814         This fixes a memory leak for managed mirrors of reflection objects
6815         on domain unload. 
6816
6817 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6818
6819         * metadata-verify.c: Implement more verification of the field table.
6820
6821 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6822
6823         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6824         doesn't try to parse the input assembly, which can be broken.
6825
6826 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6827
6828         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6829         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6830         by using the lowest bit in the link to store whether the link is
6831         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6832
6833 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6834
6835         * Makefile.am: Split the console support in platform specific code
6836         and put together a framework for making this easy in the future so
6837         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6838
6839 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6840
6841         * pedump.c: Fix a warning.
6842
6843 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6846         mono_class_from_mono_type to avoid bad interactions with the dual representation
6847         of the generic type definition.
6848
6849 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6850
6851         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6852         get the MonoClass for the call context type as it might be a generic
6853         instance.
6854
6855         Fixes #491483.
6856
6857 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6858
6859         * object-internals.h: The Thread object has no execution_context
6860         member anymore.
6861
6862         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6863         the execution context.
6864
6865         * appdomain.c: Bump corlib version.
6866
6867 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6868
6869         * verify.c (do_newobj): Improve error message.
6870
6871 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6872
6873         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6874         is nested in the filter block.
6875
6876         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6877         block is not fully nested.
6878
6879         Fixes #495656.
6880
6881 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6882
6883         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6884         not MonoType to check for equality of valuetypes as the generic type
6885         definition allows for two different encodings: the generic type definition
6886         class or a generic instance over the GTD arguments.
6887
6888         Fixes #496175.
6889
6890 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6891
6892         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6893
6894         * verify.c (do_initobj): Improve error message.
6895
6896 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6897
6898         * metadata-verify.c: Enable pe verification as the issue with #496453
6899         is that the authenticode data directory have a different unspecified
6900         format. Ignore it for now.
6901
6902         * pedump.c: Run the metadata verifier together with the IL verifier.
6903
6904         Fixes ##496453.
6905
6906 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6907
6908         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6909
6910 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6911
6912         * class.c (can_access_type): Check visibility against
6913         the element type for pointers and arrays.
6914
6915         Fixes #496150.
6916
6917 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6918
6919         * metadata-verify.c: Fix cli and table verification to use information
6920         from the MonoImage. A lot of duplicated code got killed.
6921
6922 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6923
6924
6925         This patch starts to integrate the metadata verifier with the runtime code.
6926
6927         This patch causes major regression in functionality for the metadata verifier
6928         as cli and table verification are disabled since they require to be ported to
6929         use MonoImage information.
6930
6931         * image.c (do_mono_image_load): Split the code in this function
6932         into mono_image_load_pe_data and mono_image_load_cli_data.
6933         Add     care_about_pecoff parameter to not load pecoff data.
6934         Call into the metadata verifier for pecoff and cli verification.
6935
6936         * image.c (mono_image_open_raw): New function that doesn't perform
6937         any parsing of the image contents.
6938         
6939         The reason for the 3 new functions is to give pedump better control
6940         into the interaction with the verifier.
6941
6942         * metadata-internals.h: Add new functions from image.c as part of the
6943         internal mono API.
6944
6945         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
6946         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
6947         to make those functions work together with the runtime.
6948
6949         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
6950         true if the image needs to be verified.
6951
6952         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
6953
6954         * pedump.c: Use new metadata verifier API.
6955
6956 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
6957
6958         * object.c (mono_install_vtable_trampoline): Make this receive a
6959         trampoline creation function instead of trampoline, allowing the JIT
6960         to use a different trampoline for each vtable.
6961
6962 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6963
6964         * object.c (mono_raise_exception): Don't reset the thread abort
6965         exception state here.
6966
6967 2009-04-18  Mark Probst  <mark.probst@gmail.com>
6968
6969         * icall-def.h: New icall for getting the thread abort exception
6970         state for a thread.
6971
6972         * object.c, thread.c, object-internals.h: A thread's abort
6973         exception state is now a GC handle.  To get the object it stands
6974         for, we must move it into the current app domain, if it's
6975         different than the one where it originated from.
6976
6977         * appdomain.c: Bump corlib version.
6978
6979         * domain.c, domain-internals.h: New function for setting the
6980         domain and migrate the thread abort exception or not.
6981
6982 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6983
6984         * metadata-verify.c: Add initial verification of the
6985         field table.
6986
6987 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6988
6989         * metadata-verify.c: Add a macro to conditionally enable
6990         dumping of verification information. Add  make_coded_token
6991         and search_sorted_table to enable search sorted tables
6992         by a given coded token.
6993
6994 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
6995
6996         * metadata-verify.c: Add array mapping from table index
6997         to description offset. Add get_col_offset and get_col_size
6998         functions.
6999
7000 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7001
7002         * metadata-verify.c: Add remaining table descriptions offsets.
7003         Add remaining coded index descriptions.
7004
7005 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7006
7007         * metadata-verify.c: Fixed constant table description.
7008         Fixed calculation of HasCustomAttribute coded index size.
7009         Fixed calculation of size for many table indexes. 
7010
7011 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7012
7013         * pedump.c (dump_metadata): Dump table offset instead
7014         of useless pointer in memory.
7015
7016 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7017
7018         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
7019
7020 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7021
7022         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
7023         a missing of for interface types.
7024
7025 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7026
7027         * metadata-verify.c (verify_pe_optional_header): Add comment of why
7028         the code is commented.
7029
7030         * metadata-verify.c (verify_resources_table): Remove spurious printf
7031         and don't fail if there are unmanaged resources. Gmcs generates a useless
7032         one     for all assemblies - I bet it's some MS compatibility junk.
7033
7034 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7035
7036         * metadata-verify.c (verify_typedef_table): Verify the extends field.
7037
7038         * metadata-verify.c (mono_image_verify): Add a is_corlib.
7039
7040         * verify-internals.h: Same.
7041
7042         * pedump.c: Fix for mono_image_verify new signature.
7043
7044 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7045
7046         * metadata-verify.c (verify_typedef_table): Verify for some invalid
7047         flags combinations.
7048
7049 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7050
7051         * metadata-verify.c (verify_module_table): Ignore the generation field.
7052
7053 2009-04-15  Martin Baulig  <martin@ximian.com>
7054
7055         * debug-mono-symfile.c
7056         (mono_debug_symfile_lookup_location): Don't print a warning for
7057         unknown extended opcodes if they're within 0x40 and 0x7f.
7058
7059 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
7060
7061         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
7062         invoke signatures returning an enum. Fixes #494847.
7063
7064 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7065
7066         * metadata-verify.c: Initial code to verify the typedef table.
7067
7068 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7069
7070         * verify.c (mono_method_verify): Don't fail if an unconditional branch
7071         with non empty stack happens before the beginning of a try block.
7072
7073         Fixes #494812.
7074
7075 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7076
7077         * metadata-verify.c: Verify typename and typenamespace fields of
7078         the typeref table.
7079
7080 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7081
7082         * metadata-verify.c: Initial code to verify the typeref table.
7083
7084 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7085
7086         * verify.c (verify_delegate_compatibility): Fix error message.
7087
7088 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
7089
7090         * security-core-clr.c: Fix typo
7091
7092 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
7095         a MonoGHashTable to keep its values alive.
7096         (emit_marshal_boolean): Fix a warning.
7097
7098 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7099
7100         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
7101         not have any interface configured for IPv4/IPv6.
7102
7103 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7104
7105         * assembly.c: fix typo in error message.
7106
7107 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7108
7109         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
7110         allocating the location holding the this argument to prevent
7111         'too many root sets' errors.
7112
7113         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
7114         to mark fields as special static.
7115         (mono_field_static_get_value): Handle special static fields.
7116         (mono_field_static_set_value): Ditto.
7117
7118         * class-internals.h (struct _MonoClassField): Document this.
7119
7120 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7121
7122         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
7123           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
7124           case.  This will handle when managed code returns null to native code.
7125
7126         Code is contributed under MIT/X11 license.
7127
7128 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7129
7130         * object.c (build_imt_slots): Changing a free to a g_free to match
7131           the g_malloc0 in add_imt_builder_entry that allocated this memory.
7132
7133         Code is contributed under MIT/X11 license.
7134
7135 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7136
7137         * marshal.c (emit_marshal_boolean): Adding code to ensure that
7138           the correct TRUE value is passed through the marshaling layer.
7139
7140         Code is contributed under MIT/X11 license.
7141
7142 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
7145         correctly. Fixes #492330.
7146         
7147         * marshal.c: Fix the embedding of object pointers into JITted code in
7148         the native-to-managed wrappers by allocating some GC tracked memory, and
7149         embedding the address of that.
7150
7151 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
7154         pointers into the vtable.
7155
7156 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7157
7158         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7159
7160         * verify.c (verify_ldftn_delegate): Improve error message.
7161
7162 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7163
7164         * reflection.c (my_mono_class_from_mono_type): Remove.
7165
7166 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7167
7168         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7169         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7170         and constraints fields into ...
7171         (MonoGenericParamInfo): ... this.
7172         (mono_generic_param_info, mono_generic_container_get_param_info):
7173         New accessors.
7174         * class.c, debug-helpers.c, icall.c: Update to changes.
7175         * metadata.c, reflection.c, verify.c: Likewise.
7176
7177 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7178
7179         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7180
7181         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7182         
7183         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7184         booleans with sbytes.
7185
7186 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7187
7188         * class.c (can_access_instantiation): Verify accesibility of element types
7189         for arrays and pointers.
7190
7191         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7192
7193         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7194
7195         Fixes #493068.
7196
7197 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7198
7199         * verify.c (do_invoke_method): Improve error messages.
7200
7201 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7202
7203         * verify.c:  Fixing the MSVC build.
7204
7205         Code is contributed under MIT/X11 license.
7206
7207 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7208
7209         * security-core-clr.c: Simplify get_reflection_caller not to call
7210         mono_method_get_last_managed (another stack walk) and adjust the
7211         callers to handle a (should not happen) NULL return value.
7212
7213 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7214
7215         Add accessors to some MonoGenericParam fields
7216         * class-internals.h (mono_generic_param_owner): New accessor.
7217         (mono_generic_param_num): Likewise.
7218         (mono_type_get_generic_param_owner): New helper.
7219         (mono_type_get_generic_param_num): New helper.
7220         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7221
7222 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7223
7224         * class-internals.h (mono_generic_container_get_param): New wrapper.
7225         * class.c, icall.c, metadata.c, verify.c: Use it.
7226
7227 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7228
7229         Fix gtest-252.cs
7230         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7231         the standard case/loop.  In particular, don't complain about
7232         references to generic type definitions.
7233
7234 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7235
7236         * debug-helpers.c (dis_one): Decode string arguments.
7237
7238 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7239
7240         * pedump.c (dump_verify_info): Dump type name correctly.
7241
7242 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7243
7244         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7245         are larger than code size.
7246
7247         This can happen in valid code if the try/catch block is not followed by any instruction
7248         and do a backward branch on the leave instruction.
7249
7250         Fixes #492494.
7251
7252 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7253
7254         * security-core-clr.c: Fix typo while comparing second method names
7255         in can_avoid_corlib_reflection_delegate_optimization
7256
7257 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7260
7261         Fixes #487738.
7262
7263 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7264
7265         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7266         a MVAR using a class context.
7267
7268         Fixes #490335.
7269
7270 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7273
7274         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7275
7276         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7277         functions supplied by the JIT for the SGEN GC.
7278
7279         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7280         
7281 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7282
7283         monitor.c (mono_monitor_try_enter_internal):
7284         Added calls to profile monitor contentions.
7285         Also duplicated a small piece of code (the "get the monitor" logic)
7286         from the fast path to the slow path, and changed the relevant goto
7287         statements, so that monitor acquisition events can be emitted from the
7288         slow path (this is by Paolo Molaro).
7289
7290 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7291
7292         * profiler.c, profiler.h, profiler-private.h:
7293         Added support for profiling monitor contentions.
7294
7295 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7296
7297         * metadata-verify.c: Verify the modules table.
7298
7299 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7300
7301         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7302         using the context of the method been verifier and not of the method been called.
7303
7304         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7305         safely inflate generic types. 
7306
7307 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7308
7309         * security-core-clr.c: Change the strategy for checking the 
7310         "reflection using delegates optimization" to avoid unneeded 
7311         attributes in multiple class libraries.
7312
7313 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7314
7315         * sgen-gc.c: Remove object element in the disappearing link struct
7316         by storing the object pointer in the link.
7317
7318 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7319
7320         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7321
7322 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7323
7324         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7325
7326         * verify.c (mono_method_verify): Do proper bounds checking of exception
7327         clause ranges.
7328
7329 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7330
7331         * loader.c (mono_field_from_token): Don't crash if the field parent could
7332         not be decoded.
7333
7334 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7335
7336         * sgen-gc.c: Execute critical finalizers after ordinary
7337         finalizers.
7338
7339         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7340         mono_defaults.
7341
7342 2009-03-31 Jb Evain <jbevain@novell.com>
7343
7344         * verify.c (do_ldstr): don't check if a string is in the user strings
7345         heap if the current image is dynamic.
7346
7347 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7348
7349         * sgen-gc.c: Wait until the last finalizer has executed when
7350         returning from WaitForPendingFinalizers.
7351
7352 2009-03-31  Martin Baulig  <martin@ximian.com>
7353
7354         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7355         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7356         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7357         (mono_debugger_event_create_appdomain): New function.
7358         (mono_debugger_event_unload_appdomain): New function.
7359
7360         * appdomain.c (mono_domain_create_appdomain_internal): Call
7361         mono_debugger_event_create_appdomain().
7362
7363 2009-03-31  Martin Baulig  <martin@ximian.com>
7364
7365         * mono-debug-debugger.c
7366         (mono_debugger_register_class_init_callback): Also register the
7367         class init callback if the class is already initialized to make
7368         things work with shadow copied assemblies.
7369
7370 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7371
7372         * security-core-clr.c
7373         (mono_security_core_clr_ensure_reflection_access_field): Let 
7374         critical code access the field (just like we do for methods). Use
7375         check_field_access helper.
7376         (mono_security_core_clr_ensure_reflection_access_method): Use 
7377         check_field_access helper.
7378
7379 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7380
7381         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7382         call the run-finalize function directly.
7383
7384         * gc.c, gc-internal.h: Make run_finalize() non-static.
7385
7386 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7387
7388         * sgen-gc.c: Use a separate struct for disappearing links.
7389
7390 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7391
7392         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7393         * MaxIOVectorLength enabled, just ignore them.
7394         Fixes bug #349688.
7395
7396 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7397
7398         * metadata-verify.c: Fix eglib build.
7399
7400 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7401
7402         * threads-types.h: Fix the win32 build.
7403
7404 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7405
7406         * class.c: move coreclr inheritance/override checks to 
7407         security-core.clr.c
7408         * security-core.clr.c|h: add code from class.c with additional
7409         documentation. Fix override check when the method is not critical.
7410
7411 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7412
7413         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7414         (match_class): Ditto.
7415
7416 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7417
7418         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7419
7420         * metadata-verify.c: Implement table layout row size calculation. Verify
7421         the total size of the tables.
7422
7423 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7424
7425         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7426
7427 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7428
7429         * appdomain.c:
7430         * console-io.[ch]: added new mono_console_init() to make sure that
7431         file descriptors 0, 1 and 2 are opened.
7432         Bug #489019 fixed.
7433
7434 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7435
7436         * appdomain.h: Export a new callback type and a new function to
7437         set this callback. This allow a mono host to provide it's own
7438         definition for "platform code".
7439         * metadata-internals.h: Add a core_clr_platform_code flag on 
7440         _MonoImage to (cache and) know if it is representing platform 
7441         code.
7442         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7443         on platform code images.
7444         * security-core-clr.c|h 
7445         (mono_security_set_core_clr_platform_callback): Allow the host
7446         to provide it's own platform check definition.
7447         (mono_security_core_clr_determine_platform_image): Detect if an 
7448         image is platform code (using the specified callback).
7449         (mono_security_core_clr_is_platform_image): Return cached value 
7450         for platform code.
7451
7452 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7453
7454         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7455         which has different parameter types for the 'tid' argument in windows and
7456         the io-layer.
7457
7458         * appdomain.c attach.c threads.c: Use the new helper.
7459
7460 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7461
7462         * metadata-verify.c: Verify valid table bits.
7463
7464 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7465
7466         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7467
7468         * metadata-verify.c: Add initial table schema verification.
7469
7470 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7471
7472         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7473         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7474         #488383.
7475
7476         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7477
7478         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7479
7480 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7481
7482         * security-core-clr.c: Add/update documentation
7483
7484 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7485
7486         * marshal.c (emit_marshal_object): Generate code to throw an exception
7487         instead of throwing it. Fixes #488670.
7488
7489 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7490
7491         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7492         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7493         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7494         and add a call to mono_security_core_clr_ensure_delegate_creation
7495         to do the extra checks required by CoreCLR.
7496         * security-core-clr.c|h: Add function to check delegate creation,
7497         both in the binding and accessibility, under CoreCLR.
7498
7499 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7500
7501         * reflection.c (mono_reflection_create_dynamic_method): when 
7502         coreclr is enabled make sure that every resolved object are
7503         checked (e.g. field and method access).
7504         * security-core-clr.c|h: Add function to check objects resolved
7505         when a dynamic method is created.
7506
7507 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7508
7509         * metadata-verify.c: Cache directory rva translations.
7510
7511         * metadata-verify.c: Add cli-header and streams verification.
7512
7513 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7516         the wrong offset (8 instead of 6).
7517
7518 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7519
7520         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7521         methods, return the native function address itself. Fixes
7522         #487758.
7523
7524 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7525
7526         * console-io.c: some of the values for control characters might not be
7527         present.
7528
7529 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7530
7531         * exception.c|h: Add helpers to create [Field|Method]AccessException
7532         * icall.c: Add required coreclr check calls for field reflection.
7533         Move the existing (method) check logic into security-core-clr.c
7534         * security-core-clr.c: Add functions to check if the access of a
7535         field or method is allowed when reflecting under coreclr. This is
7536         mostly done using a stack walk to find the "real" caller: i.e. the
7537         code that is calling the reflection
7538
7539 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7540
7541         * gc-internal.h: Change location of gc_wrapper.h
7542
7543 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7544
7545         * class.c: Simplification to coreclr checks for overrides that
7546         makes it easier to set breakpoints.
7547
7548 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7549
7550         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7551         mono_security_core_clr_method_level): Avoid potential 
7552         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7553         user/application code) and make it easier to set breakpoints
7554
7555 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * metadata-verify.c: Reject cli header tables that mono don't handle.
7558
7559 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7560
7561         * pedump.c: Fix CLI header dumping.
7562
7563 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * metadata-verify.c: More CLI header verification.
7566
7567 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7568
7569         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7570
7571 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7572
7573         * metadata-verify.c: Initial verification of the CLI header.
7574
7575 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7576
7577         * metadata-verify.c (verify_resources_table): Fix verification of zero
7578         sized resource section and id entries count.
7579
7580 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7581
7582         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7583
7584 2009-03-17  Jb Evain  <jbevain@novell.com>
7585
7586         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7587
7588 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7591         (mono_gc_make_descr_for_array): Ditto.
7592
7593 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7594
7595         * verify.c (mono_verifier_is_class_full_trust): Add support for
7596         CoreCLR security mode where trusted assemblies are defined as
7597         "platform code".
7598
7599 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * metadata-verify.c: Add minimal PECOFF resource verification.
7602
7603 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7604
7605         * metadata-verify.c: Be less restrictive with some coff fields.
7606
7607 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7608
7609         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7610         params as boxed values on stack. Fixes #485706.
7611
7612 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7613
7614         * console-io.c: the termios values may vary in different flavors of unix.
7615
7616 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7617
7618         * console-io.[ch]: return the entire set of control characters when
7619         initializing the terminal.
7620         * appdomain.c: bump corlib version.
7621
7622 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7623
7624         * mono-perfcounters.c: added support for in-process custom
7625         performance counters.
7626
7627 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7628
7629         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7630
7631 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7632
7633         * metadata-verify.c: Verify the data pointed by the import table. 
7634
7635 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7636
7637         * metadata-verify.c (load_data_directories): Store data
7638         directory contents.
7639
7640         * metadata-verify.c: Verify the import table. 
7641
7642 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7643
7644         * metadata-verify.c: Verify data directories.
7645
7646 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7647
7648         * metadata-verify.c: Check section header flags.
7649
7650 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7651
7652         * appdomain.c: if the assembly name is a shadow-copied file, return
7653         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7654         in mono_make_shadow_copy.
7655         * icall.c: if the assembly name is a shadow-copied file, replace it
7656         with the original assembly path.
7657
7658         Bug #484244 fixed. NUnit tests for corlib can be run without
7659         --noshadow now.
7660
7661 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7664         entries when the table is reallocated.
7665
7666         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7667         mono_gc_alloc_fixed () since it contains GC refs.
7668
7669 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7670
7671         * reflection.c (ensure_complete_type): New helper function to call
7672         type resolve handlers for unfinished dynamic types.
7673         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7674
7675 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7678         #483247.
7679
7680 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7683
7684 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7685
7686         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7687         between GCHandles of type WeakTrackResurrection and the objects they
7688         point to.
7689
7690         * gc.c: Partly implement the sematics of GCHandles of type 
7691         WeakTrackResurrection: these handles should only be cleared after the
7692         finalizer of the object they are pointing to has ran.
7693
7694 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7695
7696         * icall.c: Partially revert r126631 because using the jump
7697         trampolines for generic shared methods makes it superfluous.
7698
7699 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7700
7701         * threads.c (handle_store): Create the 'threads' hash table with the proper
7702         MONO_HASH_VALUE_GC type.
7703
7704 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7705
7706         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7707         FIRST_GC_TRACKED.
7708
7709         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7710         and LAST_GC_TRACKED as a GC root.
7711
7712         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7713
7714         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7715         the static data even if it consists of 1 reference.
7716
7717         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7718         if there is a GC descriptor.
7719
7720         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7721         instead of through the GC since they contain no object references.
7722
7723 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7724
7725         * generic-sharing.c (instantiate_other_info): Always return a jump
7726         trampoline for method code.
7727
7728 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7729
7730         * culture-info-tables.h: generated to include the en-tt culture.
7731
7732 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7733
7734         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7735         capture the thread context.
7736
7737         * object.c (mono_async_result_new): Cache the invoke wrappers to
7738         ExecutionContext::Capture.
7739
7740 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7741
7742         * marshal.h: Add a prototype for what mono_compile_method returns
7743         for invoke wrappers.
7744
7745         * gc.c: Use the new prototype declaration.
7746
7747 2009-03-04  Geoff Norton  <gnorton@novell.com>
7748
7749         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7750         * gc-internal.h:
7751         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7752
7753 2009-03-04  Martin Baulig  <martin@ximian.com>
7754
7755         * mono-debug.h
7756         (mono_debugger_runtime_invoke): Removed.
7757
7758         * mono-debug-debugger.c
7759         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7760
7761 2009-03-02  Martin Baulig  <martin@ximian.com>
7762
7763         * mono-debug.h
7764         (mono_debugger_unhandled_exception): Removed.
7765         (mono_debugger_handle_exception): Removed.
7766         (mono_debugger_throw_exception): Removed.
7767
7768         * mono-debug.c
7769         (mono_debug_debugger_version): Bump to 5.
7770
7771         * mono-debug-debugger.c: Moved the exception handling code to
7772         ../mini/debug-mini.c
7773
7774 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7775
7776         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7777         finalize_objects_hash.
7778
7779         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7780         
7781         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7782         field.
7783
7784         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7785         cache.
7786
7787         * image.c (mono_image_close): Free it.
7788         
7789         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7790         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7791         on the this argument.
7792
7793         * gc.c (run_finalize): Optimize the calling of the finalizers.
7794
7795 2009-03-03  Martin Baulig  <martin@ximian.com>
7796
7797         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7798         of the `MonoGenericInst' changes.
7799
7800 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7803         mono_array_class_get_cached to reduce locking contention. Extract
7804         a domain var.
7805
7806         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7807         intermediary managed arrays. Use caching version of mono_array_new
7808         to allocate the result array.
7809
7810         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7811
7812         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7813
7814         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7815         to reduce locking contention.
7816
7817 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7818                 
7819         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7820         thunk builder code for the non-interface case.
7821
7822 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7823
7824         * object.c (get_generic_virtual_entries): New helper function to collect
7825         the virtual generic method instances which need to be added to an IMT
7826         thunk.
7827         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7828         Instead of creating a new IMT thunk, reset the vtable slot to the
7829         trampoline, the thunk will be created the next time the trampoline is called.
7830         (build_imt_slots): Add support for virtual generic methods in interfaces by
7831         adding to the IMT thunk all the methods registered using 
7832         mono_method_add_generic_virtual_invocation ().
7833
7834         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7835         (struct _MonoIMTCheckItem): Ditto.
7836
7837         * object.c (mono_method_add_generic_virtual_invocation): Take a
7838         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7839         the IMT thunk to include all items.
7840         
7841         * object.c (mono_class_create_runtime_vtable): Add a missing
7842         mono_loader_unlock ().
7843
7844 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7845
7846         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7847
7848         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7849
7850 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7851
7852         * object-internals.h: Rename _MonoReflectionEvent to
7853         MonoReflectionMonoEvent so it reflects the right managed type.
7854         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7855
7856         * icall.c:
7857         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7858         type.
7859
7860 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7863         intermediary managed arrays. Use caching version of mono_array_new
7864         to allocate the result array.
7865
7866 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7867
7868         * reflection.c: Use cached version of mono_array_new alongside
7869         the mono_reflection_get_custom_attrs_by_type call path.
7870
7871 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7872
7873         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7874         intermediary managed arrays. Use caching version of mono_array_new
7875         to allocate the result array.
7876
7877         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7878
7879 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7880
7881         * icall.c: Add small implementation of a growable stack bound array.
7882
7883         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7884
7885         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7886         intermediary managed arrays. Use caching version of mono_array_new
7887         to allocate the result array.
7888
7889 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7890
7891         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7892         helps Enum::CompareTo to be implemented without reboxing all enums
7893         to their underlying type.
7894 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7897         since it acquires a global lock leading to scalability problems.
7898
7899         * profiler.c: Make the stat profiler work with multiple appdomains, this
7900         currently only works when no appdomains are unloaded.
7901
7902 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7903
7904         * appdomain.c: make the check to avoid copying when the assembly is
7905         already shadow copied actually work.
7906
7907 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7908
7909         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7910
7911         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7912         changes to the managed side.
7913
7914 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7915
7916         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7917         classes + a separate lock for it, as it is used frequently at runtime, not
7918         just during metadata loading/JIT compilation.
7919
7920         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7921         for szarrays.
7922         
7923         * object-internals.h (mono_class_from_name_cached): New macro to cache
7924         the results of the lookup locally without having to declare a static
7925         variable to hold it.
7926         (mono_class_get_field_from_name_cached): Ditto.
7927         (mono_array_class_get_cached): Ditto.
7928
7929         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7930         the new macros.
7931         
7932         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7933         slower search in metadata.
7934
7935         * pedump.c: Fix a warning.
7936
7937 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7938
7939         * reflection.c (encode_locals): Add checks for user types.
7940         (method_encode_clauses): Ditto.
7941         (method_encode_code): Ditto.
7942         (mono_image_create_token): Ditto.
7943
7944         * object-internals.h: Change the type of more fields from MonoReflectionType*
7945         to MonoObject*.
7946
7947 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
7948
7949         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
7950         the a thread does not suspend within 100ms.
7951
7952         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
7953         in addition to StopRequested as well.
7954
7955         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
7956
7957         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
7958         search the method_hash before inserting a new entry, to avoid crashes when
7959         the same method is inserted multiple times, causing the old 
7960         MonoDebugMethodInfo structure to be freed by the value dtor function.
7961
7962 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7963
7964         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
7965         SO_EXLUSIVEADDRUSE where available.
7966
7967 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
7968
7969         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
7970         runtime invoke wrappers, this time it is string ctor wrappers, which
7971         pass a dummy string as 'this' instead of their obj argument. Fixes
7972         #478473.
7973
7974 2009-02-21  Jb Evain  <jbevain@novell.com>
7975
7976         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
7977         only get create_culture once.
7978
7979 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * reflection.c (mono_reflection_setup_internal_class): Move the user type
7982         check before the locking.
7983         
7984         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
7985         (mono_reflection_create_runtime_class): Ditto.
7986         (mono_reflection_sighelper_get_signature_local): Ditto.
7987         (mono_reflection_sighelper_get_signature_field): Ditto.
7988
7989         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
7990         is a System.MonoType object or similar.
7991         (monotype_cast): New helper function to cast a MonoObject to a 
7992         MonoReflectionType object.
7993
7994         * object-internals.h: Change MonoReflectionType* members in structures to
7995         MonoObject* members to force the usage of the monotype_cast () function.
7996
7997         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
7998         structures/arrays. This causes us to assert instead of crashing when 
7999         instances of user defined subclasses of System.Type are encountered.
8000
8001 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8002
8003         * cil-coff.h:
8004         * icall-def.h:
8005         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
8006         win32 resource loaded from a PE file.
8007
8008         * image.c: fix mono_image_lookup_resource.
8009
8010 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8011
8012         * icall-def.h:
8013         * threads-types.h:
8014         * threads.c: added internal call for WaitHandle.SignalAndWait.
8015
8016 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
8017
8018         * cominterop.c : Adding cominterop_type_from_handle and 
8019           registering it as an icall.  Replacing all references
8020           to type_from_handle.
8021
8022         Code is contributed under MIT/X11 license.
8023
8024 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8025
8026         * Makefile.am: Add lock-tracer.h and lock-trace.c.
8027
8028         * appdomain.c: Call the tracer init function.
8029
8030         * domain-internals.h: Enable the tracer for the domain locks.
8031
8032         * image.c: Enable the tracer for image locks.
8033
8034         * loader.c: Enable the trace for the loader lock.
8035
8036         * lock-tracer.h:
8037         * lock-tracer.c: Initial implementation of the lock trace utility.
8038         The tracer requires a compile time define to be enabled and a env var
8039         to be enabled at runtime.
8040
8041 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8042
8043         * domain.c (mono_domain_code_foreach): Improve documentation.
8044
8045 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8046
8047         * appdomain.c:
8048         * generic-sharing.c:
8049         * object.c:
8050         * reflection.c:  Adjust locking order to the new semantics where the loader lock
8051         comes first.
8052
8053 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
8054
8055         * domain.c: Add mono_domain_code_* functions that perform locking
8056         around the domain codeman.
8057
8058         * domain-internals.h: Export those functions.
8059
8060         * object.c: Use new functions instead of acquiring the domain lock.
8061
8062 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
8065         delegate. Fixes #477396.
8066
8067 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8068
8069         * reflection.c (create_custom_attr): Get rid of alloca.
8070
8071 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
8072
8073         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
8074           Adding exception handling for all CCW calls.
8075
8076         Code is contributed under MIT/X11 license.
8077
8078 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8079
8080         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
8081
8082         * marshal.c (emit_marshal_boolean): Add null checks to the new 
8083         native->managed marshalling code. Fixes #476247.
8084
8085 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * class.c (mono_class_get_vtable_entry): Move the addition of
8088         static rgctx invoke wrappers for vtable methods here, this simplifies
8089         a lot of code and causes fewer rgctx wrappers to be created.
8090
8091         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
8092         name of the statistics to begin with an uppercase.
8093
8094 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8095
8096         * reflection.c: Revert previous change as it breaks the build.
8097         
8098 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8099
8100         * verify.c: Properly handle SZARRAY element type.
8101
8102         Fixes #474271.
8103
8104 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8105
8106         * reflection.c (mono_image_create_method_token): Correctly encode
8107         MethodDef MemberRefParent token.
8108
8109         Fixes #472845.
8110
8111 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * image.c (mono_image_close): Delete the critical section before
8114         freeing the memory holding it.
8115
8116 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8117
8118         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
8119         Fixes #476257.
8120
8121 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8122
8123         * pedump.c (main): Call mono_marshal_init so pedump
8124         doesn't crash.
8125
8126 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8127
8128         * loader.c (method_from_memberref): Properly fix #474271 and
8129         don't break the runtime bad.
8130
8131 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
8134         (mono_domain_alloc0): Ditto.
8135
8136 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8137
8138         * loader.c (method_from_memberref): Don't abort if the array
8139         method is not found. A regular loader failure is more informative
8140         and correct.
8141
8142         Fixes #474271.
8143
8144 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8145
8146         *loader.c: Guard MonoImage::method_cache/methodref_cache
8147         using the image lock instead of the loader lock.
8148
8149         * metadata.h: Add comments about which fields are protected by
8150         the image lock.
8151
8152 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8153
8154         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
8155
8156         * generic-sharing.c (mono_method_construct_object_context): Remove the
8157         wrapper_type == NONE assert, it is not needed.
8158
8159 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8160
8161         * reflection.c (clear_cached_object): New helper function.
8162         (mono_method_clear_object): New function to clear the cached reflection
8163         objects for a dynamic method.
8164
8165         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8166         Partly fixes # 463323.
8167         
8168 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8169
8170         * class.c:
8171         * loader.c:
8172         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8173
8174 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8175
8176         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8177         take the image lock instead of the loader lock.
8178
8179         * metadata-internals.h: Export new functions.
8180
8181 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8182
8183         * domain.c (app_config_parse): Remove another use of stat that is
8184         not necessary as g_file_get_contents already does the presence
8185         check. 
8186
8187 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8190
8191         * marshal.c: Move the bstr handling code to cominterop.c.
8192
8193         * marshal.c: Remove some COM interop code missed previously.
8194
8195 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8196
8197         More Paolo patches from the Wii port:
8198         
8199         * security.c: Remove ves_icall_System_Environment_get_UserName
8200         from here.
8201
8202         * icall.c: And put ves_icall_System_Environment_get_UserName
8203         here. 
8204
8205         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8206         redundant call to stat that was only used to test for the file
8207         existence.   Patch from Paolo.
8208
8209         * gc.c (run_finalize): If COM is disabled, do not link in
8210         mono_marshal_free_ccw.
8211
8212         * generic-sharing.c: Use alloca.h here as well.
8213
8214 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8215
8216         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8217
8218 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * cominterop.c cominterop.h: New files.
8221
8222         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8223         function/typedefs which are needed by cominterop.c global.
8224
8225 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8226
8227         * generic-sharing.c: Don't take the loader lock to guard image
8228         mempool allocs.
8229
8230 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8231
8232         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8233         called without the loader lock which is required to guard MonoImage:tokens.
8234
8235 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8236
8237         * class.c:
8238         * metadata.c:
8239         * method-builder.c:
8240         * marshal.c:
8241         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8242
8243 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8244
8245         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8246         Rework the code to use regular mono_image_alloc/0.
8247
8248         * loader.c: Rework the code to use regular mono_image_alloc/0.
8249
8250         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8251
8252 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8253
8254         * object-internals.h : Fixing a typo in the 
8255           MonoReflectionComVisibleAttribute struct.
8256
8257         * marshal.c (cominterop_com_visible): Check the implemented 
8258           interfaces for ComImport.
8259
8260         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8261           assume that bools should be treated as VARIANTBOOLs.
8262
8263         * marshal.c (emit_marshal_boolean): Adding cases for 
8264           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8265
8266         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8267           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8268
8269         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8270           should be treated as VARIANTBOOLs.    
8271
8272         Code is contributed under MIT/X11 license.
8273
8274 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8275
8276         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8277         allocation with the image lock.
8278
8279 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8280
8281         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8282         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8283
8284         * object.c: Add mono_string_to_utf8_image.
8285
8286         * object-internals.h: Export mono_string_to_utf8_image.
8287
8288         * reflection.c: Rework all explicit references to the the image mempool to go thought
8289         the mono_image_alloc set of functions.
8290
8291 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8292
8293         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8294         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8295         and generics-sharing.c.
8296
8297         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8298         as first argument. Note that this function remains broken as it doesn't perform locking around the
8299         mempool allocation.
8300
8301         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8302
8303         * image.c: Add g_slist_append_image.
8304
8305         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8306         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8307
8308         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8309         Fix all related code to do the same.
8310
8311         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8312
8313         * metadata-internals.h: Fix the signatures.
8314
8315 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8318         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8319         and similar to work using MonoImage.
8320
8321         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8322         MonoMemPool.
8323
8324         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8325
8326         * class.c (mono_metadata_signature_deep_dup): Same.
8327
8328         * class.c (inflate_generic_type): Same.
8329
8330         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8331
8332         * metadata.c (mono_metadata_signature_dup_full): Same.
8333
8334         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8335         mono_metadata_signature_dup_full.
8336
8337         * metadata.c (mono_metadata_type_dup): Same.
8338
8339         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8340
8341         * reflection.c: Same.
8342
8343         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8344
8345         * metadata-internals.h: Fix the signatures.
8346
8347         * class-internals.h: Same.
8348
8349 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8350
8351         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8352         and use mono_image_alloc set of functions instead. 
8353
8354         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8355         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8356         of a MonoMemPool.
8357
8358         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8359
8360         * class.c (g_list_prepend_mempool): Removed.
8361
8362         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8363
8364         * image.c: Add g_list_prepend_image.
8365
8366         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8367
8368         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8369
8370
8371 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8372
8373         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8374         mono_image_unlock.
8375
8376         * image.c (mono_image_init): Init the lock field.
8377  
8378         * image.c (mono_image_init): Cleanup the lock field.
8379
8380         * image.c: Add mono_image_(un)lock functions.
8381
8382 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8383
8384         * class.c, class-internals.h: mono_method_get_context_general()
8385         combines the functionality of mono_method_get_context() and
8386         mini_method_get_context().
8387
8388         * generic-sharing.c, domain-internals.h:
8389         mono_method_construct_object_context() and
8390         mono_domain_lookup_shared_generic() moved from mini.
8391
8392         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8393         method doesn't have the correct instantiation because it's shared
8394         generic code.  Fixes #473999.
8395
8396 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8397
8398         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8399
8400         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8401         
8402 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8403
8404         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8405
8406         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8407
8408         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8409         and recheck the cache for dups after it.
8410
8411         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8412
8413         Fixes one of the deadlocks found in #473150.
8414
8415 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8416
8417         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8418           For Win32, add additional break conditions for accept.
8419
8420         Code is contributed under MIT/X11 license.
8421
8422 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8425         lazily initialize the native wrapper cache.
8426         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8427         cache, since they are different from the normal wrappers.
8428
8429         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8430
8431         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8432         AOT compiled native wrappers.
8433
8434 2009-02-09  Geoff Norton  <gnorton@novell.com>
8435
8436         * appdomain.h:
8437         * security-core-clr.c: Allow enabling core-clr from the embedding
8438         API.
8439
8440 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8441
8442         * socket-io.c: when requesting all the local ips, if there are no
8443         interfaces up and running, MS returns 127.0.0.1.
8444
8445 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8446
8447         * mono-perfcounters-def.h: processor time is an inverse time.
8448         Fixes bug #468625.
8449
8450 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8451
8452         * socket-io.c: an empty host name returns the list of local IPs.
8453         Fixes bug #386637 part 1/2.
8454
8455 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * verify.c (mono_class_interface_implements_interface): Call
8458         mono_class_setup_interfaces ().
8459         (merge_stacks): Ditto.
8460
8461 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8462
8463         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8464         klass->interfaces.
8465         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8466         (mono_generic_class_get_class): Ditto.
8467
8468 2009-02-06  U-QUACK\miguel  <miguel@quack>
8469
8470         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8471         they live in security.c
8472
8473         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8474         another bit from Paolo's code.
8475
8476 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8477
8478         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8479         methods which will be discarded by add_imt_builder_entry ().
8480
8481         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8482         need to be boxed.
8483
8484         * loader.c: Add a statistics for the size of the memberref signature cache.
8485         
8486         * loader.c (find_cached_memberref_sig): New helper function.
8487         (cache_memberref_sig): Ditto.
8488
8489         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8490         they will be parsed again for every generic instantiation, leading to unbounded
8491         memory growth.
8492
8493 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8494
8495         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8496         parameters of generic methods.
8497
8498         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8499         after the original method is copied to the inflated method.
8500         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8501
8502         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8503         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8504
8505         * class.c metadata.c: Update after the changes above.
8506
8507 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8508
8509         * metadata-verify.c: Simplified error handling and added
8510         section table validation.
8511
8512 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8513
8514         * class-internals.h (MonoClassExt): New structure containing rarely used
8515         fields of MonoClass.
8516         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8517         through a new 'ext' field.
8518
8519         * class.c (mono_class_alloc_ext): New helper function to allocate 
8520         class->ext.
8521
8522         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8523
8524 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8525
8526         * object.c (mono_object_get_virtual_method): Properly inflate
8527         generic methods.  Fixes #472692.
8528
8529 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8530
8531         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8532         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8533         for the parent type, the created type must be ready to be used on a generic
8534         instantiation.
8535         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8536         we won't have duplicated entries in generic_inst_cache.
8537
8538         Fixes #469553.
8539
8540 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8541
8542         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8543         replace with plain BSD per the comments on the bug MONO77637.
8544
8545 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8546
8547         * class.c (mono_class_get_generic_class): New accessor function.
8548         (mono_class_get_generic_container): Ditto.
8549
8550         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8551         fields, similar to the ones in MonoMethod.
8552
8553         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8554         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8555
8556         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8557         
8558         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8559         the same information as element_class->byval_arg.
8560
8561         * class.c reflection.c: Remove references to class->byval_arg.
8562
8563         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8564         klass->enum_basetype directly.
8565
8566         * verify.c metadata.c object.c icall.c reflection.c: Use 
8567         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8568         directly.
8569
8570 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8571
8572         * icall-def.h: Remove internal calls for sockets when
8573         DISABLE_SOCKET is defined, file system writing features when the
8574         OS only support reading and not writing data and Policy support if
8575         the Policy is disabled.
8576         
8577         * image.c (do_mono_image_open): Apply Paolo's patches for using
8578         mono_file_map_ APIs here.
8579
8580         * assembly.c: Add support for platforms to avoid prefix
8581         auto-detection. 
8582
8583 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8584
8585         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8586         warning.
8587
8588         * class.c (mono_class_inflate_generic_class): New helper function.
8589
8590         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8591         statistics for inflated methods/classes.
8592
8593         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8594
8595         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8596         the call is made from Delegate.CreateDelegate () for the invoke method of
8597         a delegate.
8598
8599         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8600
8601         * metadata.c (mono_metadata_signature_size): New helper function.
8602
8603         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8604         generic instances.
8605
8606         * metadata.c (inflated_method_in_image): Avoid calling 
8607         mono_method_signature () if the method does not already have a signature.
8608
8609 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8610
8611         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8612         valuetype is compatible with target type, check by inheritance as a
8613         VT is not really compatible with System.ValueType, for example.
8614
8615         * verify.c (do_invoke_method): Improve error message.
8616
8617         * verify.c (do_box_value): If boxing a nullable, use the type argument
8618         on stack instead.
8619
8620         * verify.c (do_newobj): Improve error message.  
8621
8622         Fixes #469549.
8623
8624 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8625
8626         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8627
8628 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8629
8630         * generic-sharing.c: Don't hold domain lock when calling
8631         instantiate_other_info().  Fixes #471958.
8632
8633         * domain-internals.h, loader.c: Describe locking policy of domain
8634         lock vs loader lock.
8635
8636 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8637
8638         * verify.c (mono_delegate_signature_equal): Make it possible to check
8639         first-arg-bound delegates to static method.
8640
8641         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8642         static methods with the first arg bound.
8643
8644         Fixes #469529.
8645
8646 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8647
8648         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8649         errors.
8650
8651         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8652         under strict mode. Any type, when boxed can be seen as a reference type.
8653
8654         Fixes #469528.
8655
8656 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8657
8658         * object.h: The lower bound of an array is a signed integer value.
8659         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8660         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8661
8662         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8663         calculate the upper bound.
8664         
8665         Fixes #471252.
8666
8667 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8668
8669         From Paolo's work, refactored, cleared up:
8670         
8671         * threadpool.c, icall.c: ifdef code that requires a working socket
8672         stack.
8673
8674         * metadata.c (mono_metadata_field_info): Do not attempt to return
8675         a value from a function declared as void.
8676
8677         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8678         from the console stack.
8679
8680         * assembly.c: use strrchr instead of rindex.
8681
8682         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8683         alloca.h on systems that have it.
8684
8685         * environment.c: Avoid code that uses stuff from
8686         HAVE_SYS_UTSNAME_H
8687         
8688         * appdomain.c: Include sys/time.h.
8689
8690         * console-io.c: include sys/ioctl.h if it is available.
8691
8692 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8693
8694         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8695
8696         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8697         the method builder.
8698
8699         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8700         after it was created and cached, as the later is not thread safe.
8701         
8702 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8705         called while the debugging module is not initialized. Fixes #471669.
8706
8707 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8708
8709         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8710
8711         Fixes #471255.
8712
8713 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8714
8715         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8716         loader lock is not taken while the templates lock is held.  Fixes
8717         #471089.
8718
8719 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8720
8721         * metadata.c (type_in_image): Added a check to fix a monodis
8722         crash.
8723
8724 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8725
8726         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8727         nullable arguments.
8728
8729         * object.c (mono_runtime_invoke_array): Ditto.
8730         
8731         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8732         freeing wrappers of dynamic methods.
8733
8734         * loader.c (mono_free_method): Call it. Fixes #463323.
8735         
8736         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8737         methods taking vtype/byref arguments, to fix yet another bug caused by
8738         the sharing of runtime invoke wrappers. Partly fixes #471259.
8739
8740 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8741
8742         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8743         <first file in file table>:1 when the IL offset does not have an associated
8744         line number.
8745
8746 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8749         variable info for a method.
8750
8751         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8752         
8753 2009-01-30  Jb Evain  <jbevain@novell.com>
8754
8755         * pedump.c: reuse code from monodis to make sure pedump honors
8756         MONO_PATH, which is needed to verify net_2_1 assemblies.
8757
8758 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8759
8760         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8761         there is no line number info.
8762
8763 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8764
8765         Avoid some MonoType allocations
8766         * reflection.c (mono_reflection_initialize_generic_parameter):
8767         Reuse MonoType from param->pklass rather than allocating one.
8768         (mono_dynamic_image_free): Update to changes.
8769
8770 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8771
8772         Rearrange some code to improve consistency
8773         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8774         (mono_reflection_initialize_generic_parameter): ... here.
8775
8776 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8777
8778         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8779         with type constraints as an experiment.
8780
8781         * boehm-gc.c (on_gc_notification): Update mono_stats.
8782
8783 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8784
8785         Avoid some allocations
8786         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8787         pointer to tail array to avoid extra allocation.
8788         * metadata.c (free_generic_inst): Update to changes.
8789         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8790         on-stack struct.
8791
8792 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8793
8794         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8795         return TRUE if the two type objects are the same.
8796
8797 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8798
8799         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8800         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8801         klass->min_align, since klass->min_align contains the managed alignment,
8802         while the native alignment can be different, like for longs on x86.
8803         Fixes #469135.
8804
8805         * class-internals.h (MonoMarshalType): Add a min_align field.
8806
8807 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8808
8809         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8810         the 1.0 format.
8811
8812 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8813
8814         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8815         some comments about the usage of the used_regs field.
8816
8817         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8818         Fixes #469217.
8819
8820 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8821
8822         * appdomain.c: return NULL instead of throwing FileNotFoundException
8823         when LoadAssembly() fails.
8824
8825 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8826
8827         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8828         image if the owner is NULL.  Fixes the AOT failures.
8829
8830 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8833         MonoGenericParam structure using memset so the image field is initialized
8834         as well.
8835
8836 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8837
8838         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8839         a plain store.
8840
8841 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * class.c (mono_class_setup_vtable_general): In the generic instance
8844         optimization, set method->slot for abstract virtual methods. Fixes part of
8845         #467834.
8846
8847 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8848
8849         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8850         which signals that the unloading has started but all appdomain services must
8851         remain operational.
8852
8853         * appdomain.c (mono_domain_unload): The initial state for unloading now
8854         is unloading_start and we switch to unloading after the managed call to
8855         AppDomain::DomainUnload has finished.
8856
8857         The new unloading state has to be created because managed code in the
8858         DomainUnload event can depend on things like the threadpool still working.
8859         The domain must remain fully functional while the event executes.
8860
8861         This shown as an issue due to Process::WaitForExit, which waits for
8862         async reads of stdout and stderr to complete. Since those are processed
8863         in the threadpool the code deadlocks because the DomainUnload callback 
8864         waits for the async read finished event, which should have been set by a
8865         threadpool job but has been discarded due to the domain been in unload
8866         state.
8867
8868 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8869
8870         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8871         image must match.
8872
8873 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8874
8875         * reflection.c (resolve_object): For fields, inflate the class and
8876         then get the field in the inflated class.
8877
8878 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8879
8880         * object-internals.h (struct _MonoException): Added a comment
8881         explaining the new use of trace_ips.
8882
8883 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8884
8885         * generic-sharing.c (inflate_other_data): Inflate array methods
8886         correctly.
8887
8888         * loader.c, class-internals.h: Rename search_in_array_class() to
8889         mono_method_search_in_array_class() and make it non-static.
8890
8891 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8892
8893         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8894         Hopefully fixes #458168.
8895
8896 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8897
8898         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8899         as it is performed elsewhere.
8900
8901         Code is contributed under MIT/X11 license
8902
8903 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8904
8905         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8906         requests queued.
8907         * object.c (mono_raise_exception): Increment the exceptions total
8908         counter when an exception is thrown.
8909         * class-internals.h: Add a location for storing the total number of
8910         asp.net requests served.
8911         * mono-perfcounters.c: Implement update support for asp.net counters
8912         from the class libraries. Implement read support for asp.net counters
8913         and exceptions total counter.
8914
8915 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8916
8917         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8918         accessing klass->methods. Fixes #467385.
8919
8920 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8921
8922         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8923         for byval arguments without an [Out] attribute. Fixes #467212.
8924
8925         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8926         Fix compilation under android.
8927         
8928         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8929         processed, scan them directly after they are copied, to achieve better locality
8930         and cache usage.
8931
8932         * socket-io.c: Applied patch from Koushik Dutta
8933         (koush@koushikdutta.com). Disable IPV6 when running under android.
8934
8935 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * icall.c (ves_icall_InternalExecute): Add write barriers.
8938
8939         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8940         the GC code.
8941
8942         * sgen-gc.c: Implement write barriers in IL code.
8943
8944 2009-01-17  Geoff Norton  <gnorton@novell.com>
8945
8946         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
8947
8948 2009-01-17  Geoff Norton  <gnorton@novell.com>
8949
8950         * image.c: When unloading the image->references table, there can be gaps
8951         in it.  Ensure that we iterate every entry to avoid leaking assembly references
8952         when unloading an appdomain.
8953
8954 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
8955
8956         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
8957         speed up ptr-in-nursery checks.
8958
8959         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
8960         threads_lock () to prevent deadlocks.
8961
8962         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
8963         does not need to be scanned during minor collections, since writes to it
8964         must use write barriers.
8965
8966 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
8967
8968         * metadata-verify.c: Add pe nt header verification.
8969         
8970 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8971
8972         * gc.c: Fix a few warnings when using SGEN.
8973
8974 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
8975
8976         * metadata-verify.c: Add pe optional header verification.
8977
8978 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * sgen-gc.c: Add support for user defined marker functions, used by
8981         MonoGHashTable to avoid registering a GC root for every hash node.
8982
8983 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
8986         non-pinned roots into separate hashes to avoid having to traverse them
8987         in functions which are only interested in one kind.
8988
8989 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8990
8991         * metadata-verify.c: Add pe header machine field verification.
8992         
8993 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
8994
8995         * metadata-verify.c: Add pe header size verification.
8996
8997 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
8998
8999         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
9000         using the GC, they don't contain references.
9001
9002         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
9003
9004 2009-01-13  Geoff Norton  <gnorton@novell.com>
9005
9006         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
9007         AppDomains created on the native side can be cleaned up on the native side.
9008
9009 2009-01-13  Geoff Norton  <gnorton@novell.com>
9010
9011         * appdomain.c: Ensure that we call mono_context_init for the embedding api
9012         as well as the managed api.
9013
9014 2009-01-13  Geoff Norton  <gnorton@novell.com>
9015
9016         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
9017         with a MonoAppDomain initialized against it.
9018
9019 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
9022         
9023         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
9024
9025         * marshal.c: Avoid setting the exception clauses after a method has been entered 
9026         into the wrapper caches. Fixes #465700.
9027
9028         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
9029         method builder.
9030         (mono_mb_create_method): Set the clauses from the method builder.
9031
9032 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
9033
9034         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
9035         Patch from Makoto Kishimoto.
9036
9037 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9038
9039         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
9040         encoding them as ROOT_DESC_COMPLEX.
9041         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
9042
9043 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
9046         no longer point to the nursery.
9047
9048         * sgen-gc.c: Add a few comments/FIXMEs.
9049         
9050         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
9051
9052         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
9053         initialization of the various _method variables thread safe. Fixes
9054         #465377.
9055
9056 2009-01-12  Mark Probst  <mark.probst@gmail.com>
9057
9058         * domain.c, domain-internals.h: Remove the shared_generics_hash
9059         and its lookup functions.
9060
9061 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
9062
9063         * socket-io.c:  Fixing the MSVC build. 
9064
9065         Code is contributed under MIT/X11 license.
9066
9067 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
9068
9069         * metadata-verify.c: Add pe header watermark verification.
9070
9071 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9072
9073         * metadata-verify.c: Add lfanew verification.
9074
9075 2009-01-12  Jb Evain  <jbevain@novell.com>
9076
9077         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
9078         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
9079
9080 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
9081
9082         * socket-io.c: Fix the build.
9083
9084         * environment.c: Fix an #ifdef.
9085
9086 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * threadpool.c (async_invoke_thread): Handle the wait function returning
9089         WAIT_IO_COMPLETION as well.
9090         (async_invoke_io_thread): Ditto.
9091
9092 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
9093
9094         * threads.c: Fixing the Windows build.
9095
9096         Code is contributed under MIT/X11 license.
9097
9098 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9099  
9100         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
9101         interrupt a wait.
9102         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
9103         the thread to wait again.
9104
9105 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * metadata-verify.c: Initial skeleton of the metadata verifier.
9108
9109         * pedump.c: Add support for the metadata verifier.
9110
9111         * verify-internal.h: Export the whole assembly metadata verifier function.
9112
9113 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9114
9115         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
9116
9117 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * Makefile.am: Upgrade dtrace-prelink.sh location.
9120
9121 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9122
9123         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
9124         well. Otherwise the shutdown deadlock that happens on unix will can happen
9125         as well.
9126         If the main thread code finishes too fast it's possible that the finalizer
9127         thread won't have executed yet, won't record itself as the finalizer thread
9128         and the shutdown sequence will wait on it forever.
9129
9130 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9131
9132         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
9133         with MSVC.
9134
9135 2009-01-08  Miguel de Icaza  <miguel@novell.com>
9136
9137         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
9138         Robert Jordan for pointing this out.
9139
9140 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
9141
9142         * icall.c
9143         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
9144         ves_icall_System_IO_DriveInfo_GetDriveType.
9145
9146 2009-01-07  Miguel de Icaza  <miguel@novell.com>
9147
9148         * icall.c: Wrap calls to mono_strtod in CriticalSection
9149         invocations when using eglib, to work around #464316.
9150
9151 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9152
9153         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
9154         return value of GetCurrentDirectory to never access unitialized memory.
9155
9156 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9157
9158         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9159         return value of GetCurrentDirectory and expand the buffer if needed.
9160
9161         Fixes #459094.
9162
9163 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9164
9165         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9166           Adding a call to mono_init_com_types.
9167
9168         Code is contributed under MIT/X11 license.
9169
9170 2009-01-07  Geoff Norton  <gnorton@novell.com>
9171
9172         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9173         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9174         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9175         be the value of the ip buffer.
9176
9177 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9178
9179         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9180         interfaces_packed here.
9181
9182         Fixes part of #463294.
9183
9184 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9185
9186         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9187
9188         Fixes part of #463294.
9189
9190 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9191
9192         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9193         is a boxed complex as well.
9194
9195         Fixes part of #463294.
9196
9197 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9198
9199         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9200         control if a methodspec should be created for the generic method definition from external assemblies.
9201         Caching of methodspec is done using the handleref hash table.
9202
9203         Fixes #462592.
9204
9205 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9206
9207         * loader.c (find_method): When searching the interfaces of a class
9208         check the transitive closure of implemented interfaces.
9209
9210         Fixes #463303.
9211
9212 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9213
9214         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9215         
9216 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9217
9218         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9219         interfaces calculation to fill_valuetype_array_derived_types.
9220
9221         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9222         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9223         for example.
9224
9225         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9226         interfaces for valuetypes if needed.    
9227
9228         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9229         for their basetype as well. Types are array expanded if rank is > 0.
9230
9231         Fixes #400716.
9232
9233 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9234
9235         * socket-io.h : Changing the signature of
9236           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9237           the blocking state.
9238
9239         * icall-def.h :  Changing the signature of
9240           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9241
9242         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9243           For Windows only.  Avoid blocking when calling accept by
9244           querying for a connection via select.  The loop also queries
9245           the thread state every 1000 micro seconds for the thread
9246           stop state.  This will avoid the process hanging on shutdown
9247           when using a TcpChannel that is never connected to.
9248
9249         Code is contributed under MIT/X11 license.
9250
9251 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9252
9253         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9254
9255 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9256
9257         * class.c (get_implicit_generic_array_interfaces): Extract common
9258         code to a helper function making it a lot easier on the eyes.
9259
9260 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9261
9262         * class.c (get_implicit_generic_array_interfaces): If the internal
9263         enumerator is an interface inflate System.Object instead of itself.
9264
9265         Fixes #461261.
9266
9267 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9268
9269         * object.c (mono_runtime_invoke_array): Don't assert with
9270         byref nullable types.
9271
9272         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9273         byref nullables we unbox the object and store it on the
9274         stack. 
9275         We can't use the boxed object since it is the T of Nullable<T>
9276         and the boxed representation of a nullable it's underlying type
9277         or null.
9278         We could cheat and create a boxed nullable and use the same
9279         machinery of other byref VTs but this feels like a hack and
9280         using the stack has the bonus of reducing heap pressure.
9281
9282         Fixes #461941.
9283
9284 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9285
9286         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9287         return value.
9288
9289         Fixes #461867.
9290
9291 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9292
9293         * icall-def.h : Adding an internal call definition for 
9294           System.Environment.internalBroadcastSettingChange.
9295
9296         * icall.c : Adding a Windows only implementation to broadcast a 
9297           WM_SETTINGCHANGE when an environment variable has changed.
9298
9299         Code is contributed under MIT/X11 license.
9300
9301 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9302
9303         * class.c, class-internals.h: Made
9304         mono_class_has_parent_and_ignore_generics() non-static.
9305
9306 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9307
9308         * image.c: deal with the mmap failing when loading an image.
9309
9310 2008-12-17  Geoff Norton  <gnorton@novell.com>
9311
9312         * threadpool.c: Ensure that the io_queue_lock is initialized
9313         in all circumstances, as we always attempt to cleanup against it.
9314
9315 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9316
9317         * icall.c (ves_icall_System_Environment_get_Platform): For
9318         compatibility reasons for existing client code we will keep
9319         returning 4 for a while.   
9320
9321         For how long will depend on the documentation being updated, and
9322         for us to give client code a chance to be updated.
9323
9324         This reverts the original decison on #433108 since we did not
9325         catch roughly 33 instances of the broken code in our own source
9326         code base, we did not catch failures on the buildbots, and QA did
9327         not bring this as a problem.
9328
9329         Only today I found some customer's code breaking due to our own
9330         class libraries not being fully updated and tracked it down to
9331         this change.  I am reverting it because if we could not even get
9332         our story straight in our own code base, how can we hope that our
9333         end user code be fixed?
9334
9335         As of this morning, our Wiki page that documents how to detect
9336         Unix had not been fixed.    
9337
9338 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9339
9340         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9341
9342         * class.c (mono_class_get_fields): Handle loading errors.
9343
9344 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9345
9346         * 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.
9347         
9348 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9349
9350         * mono-perfcounters.c: avoid warning.
9351
9352 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9353
9354         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9355         make sure all interfaces have MonoClass::interface_id set.
9356
9357         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9358         method table is property set.
9359
9360 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9361
9362         * class.c: New function mono_class_setup_interface_id that setup
9363         MonoClass::interface_id if needed.
9364
9365         * class-internals.h: Export new function.
9366
9367 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9368
9369         * class.c: Add code to sanity check the vtable after setup_vtable_general
9370         has done it's work.
9371
9372 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9373
9374         * icall.c: make Assembly.GetExecutingAssembly work properly when
9375         reflection is used to invoke the method.
9376         Bug #321781 fixed.
9377
9378 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9379
9380         * metadata/generic-sharing.c: Look for constraints in all type
9381         arguments, not just the first one.
9382
9383 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9384
9385         * appdomain.c: return the correct CodeBase for an Assembly instance
9386         that was loaded from the shadow-copy directories.
9387         Bug #458190 fixed.
9388
9389 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9392
9393         * sgen-gc.c (check_object): New debugging helper function.
9394
9395         * object.c: Fix calls to mono_value_copy_array ().
9396
9397 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * class.c (mono_class_setup_fields): If working on an inflated class
9400         first check if the generic definition did init with success.
9401
9402         Fixes #445361.
9403
9404 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9405
9406         pedump.c (main): Fix a warning.
9407
9408 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9409
9410         * object-internals.h : Adding a definition for 
9411           MonoReflectionComVisibleAttribute.
9412
9413         * marshal.c (cominterop_com_visible) :  Method added to check the 
9414           ComVisible attribute of a class.
9415
9416         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9417           cominterop_raise_hr_exception added to consolidate common code 
9418           to raise hr exceptions.
9419
9420         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9421           if a managed class should support IDispatch.
9422
9423         * marshal.c 
9424           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9425           Added additional checks for managed object when getting 
9426           an IDispatch interface.
9427
9428         Code is contributed under MIT/X11 license.
9429
9430 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9431
9432         pedump.c (main): Handle mono_get_method () returning NULL. 
9433
9434 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9435
9436         * marshal.h: Fix a warning.
9437
9438 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9439
9440         * marshal.c : Adding cominterop_release_all_rcws to release all
9441           runtime callable wrappers held by the runtime.
9442
9443         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9444           
9445         Code is contributed under MIT/X11 license.
9446
9447 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * metadata.c (mono_image_alloc_lock): New helper function.
9450         (mono_image_alloc0_lock): Ditto.
9451
9452         * metadata.c: Use the alloc_lock () helper functions for allocating
9453         memory from the image mempool.
9454
9455 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9456
9457         * class.c (mono_class_from_generic_parameter): Document it's
9458         locking behavior. Fix double checked locking here, we stored in
9459         param->pklass a partially initialized MonoClass and no membar was used.
9460
9461 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9462
9463         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9464         (3) functions are present in the C library use them to do the
9465         job. If they are absent, make sure that the sum of int_part and
9466         dec_part is rounded before returning. This is necessary due to the
9467         division of dec_part by the power of 10 before the final addition
9468         is performed - if the result is not rounded in some cases it will
9469         yield invalid results.
9470
9471 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9474         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9475         instruction instead of a pointer constant.
9476
9477 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9478
9479         * loader.c (mono_method_get_header): Do most of the work outside the
9480         loader lock, to avoid assembly load hook deadlocks.
9481
9482         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9483         (mono_metadata_parse_type_full): Ditto.
9484
9485 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9486
9487         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9488         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9489         funtions. Finally, use a lock to produce well ordered output.
9490
9491         The lock looks silly, as all calls to the corlib mempool should be guarded
9492         with the loader lock, but for some reason this fact doesn't help. 
9493
9494         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9495
9496 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9497
9498         * socket-io.c: 64 bit big-endian fixes.
9499
9500 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9501
9502         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9503         targets that require strict compatibility between the types.
9504
9505         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9506         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9507         Kill the strict argument and create a new one valuetype_must_be_boxed.
9508
9509         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9510         state that all valuetypes must be boxed.
9511
9512         Fixes #448560.
9513
9514 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9515
9516         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9517         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9518
9519         Contributed under MIT/X11 license.
9520
9521 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9522
9523         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9524         the inflate_generic_type machinery should handle it.
9525
9526         This avoids a crash when the field's flags is zero and it's type is
9527         a primitive.
9528         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9529         is zero and will return one of the cached built-in primitive types. Since
9530         those types live in read-only memory, the code that copies it crashes.  
9531
9532 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9533
9534         * object.c: Don't put function descriptors into generalized IMT
9535         thunks.
9536
9537 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9538
9539         * class.c: Enable generic code sharing on PPC64.
9540
9541 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9542
9543         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9544         from mini/mini.c.
9545
9546         * generic-sharing.c: Allocate the method template slists from the
9547         image mempool so it doesn't leak.
9548
9549 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9550
9551         * class.c (generic_array_methods): Release the linked list.
9552
9553 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9554
9555         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9556         invocation to g_utf16_to_utf8().
9557
9558 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9559
9560         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9561         arguments on big endian archs.
9562
9563 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9564
9565         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9566         the type name (test added in corlib).
9567
9568 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9569
9570         * pedump.c: initialize perf. counters. Fixes a segv.
9571
9572 2008-11-25  Martin Baulig  <martin@ximian.com>
9573
9574         * mono-debug-debugger.c
9575         (mono_debugger_runtime_invoke): Return the exception object if an
9576         exception was thrown.  Visual Studio displays the exception object
9577         in the locals window.
9578
9579 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9580
9581         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9582         ftnptr.
9583
9584 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9585
9586         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9587         MONO_TYPE_U are sizeof (gpointer), too.
9588
9589 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9590
9591         * marshal.c (mono_type_native_stack_size): Fixed size and
9592         alignment for reference types.
9593
9594 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9595
9596         * class.c (mono_class_generic_sharing_enabled): Disable generic
9597         code sharing for PPC64.
9598
9599 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9600
9601         * icall.c (mono_method_get_equivalent_method): Make sure
9602         method->klass->methods is inited before looping over it.
9603
9604 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9605
9606         * object.c: when calling ExecuteAssembly in a newly created domain,
9607         the configuration file and application base are already set up.
9608         Bug #446353 take 2 fixed.
9609
9610 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9613         Fixes #444715. Fix a warning.
9614
9615 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9616
9617         * appdomain.c: write the full path of the assembly to the .ini file
9618         created when "shadow-copying"
9619         Bug #446353 fixed.
9620
9621 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9624         if signature==FALSE.
9625
9626 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9627
9628         * marshal.h : Fix the cygwin build.
9629            marshal.c:12442: undefined reference to `_IID_IMarshal'
9630           
9631         Code is contributed under MIT/X11 license.
9632
9633 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9634
9635         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9636           free threaded marshaler when QueryInterface is called on a COM callable
9637           wrapper requesting the IMarshal interface.
9638           
9639         Code is contributed under MIT/X11 license.
9640
9641 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9642
9643         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9644
9645         * reflection.c (mono_type_get_object): Special case the very common
9646         void type.
9647
9648         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9649         hold typeof(void).
9650
9651 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9652
9653         * process.h : Adding method declaration for
9654           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9655           
9656         * process.c : Adding implementation for
9657           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9658           
9659         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9660           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9661
9662         Code is contributed under MIT/X11 license.
9663
9664 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9665
9666         * appdomain.c (unload_thread_main): Clean up threadpool by
9667         calling mono_thread_pool_remove_domain_jobs.
9668
9669         * domain-internals.h (struct _MonoDomain): Add new fields to
9670         help coordinate the cleanup of the threadpool.
9671
9672         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9673         that cleans up the threadpool of all jobs associated with an appdomain.
9674         It does that by cleaning up the queues and making sure all active
9675         threads are accounted.
9676
9677         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9678         unloaded or in the process of. Take this is such way that there is
9679         no race condition between another thread starting the unload and the
9680         current thread acknowledging it.
9681
9682         * threadpool.c (async_invoke_thread): Same.
9683
9684         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9685         firing the new thread.
9686
9687         * threadpool.c (start_tpthread): Same.
9688
9689         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9690
9691         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9692
9693 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9694
9695         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9696         Add support for DuplicateHandle.
9697         
9698         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9699         Add support for DuplicateHandle.
9700         
9701         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9702         Add support for DuplicateHandle.
9703
9704         Code is contributed under MIT/X11 license.
9705
9706 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9707
9708         * class-internals.h: Make min_align into a whole byte.
9709
9710         * class.c: Set min_align for SIMD types to 16.
9711
9712 2008-11-05  Geoff Norton  <gnorton@novell.com>
9713
9714         * attach.c: Default the attacher to enabled for all cases including
9715         embedded.
9716
9717 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9718
9719         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9720         change r117650.
9721
9722 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9723
9724         * monitor.c, monitor.h: New function for querying offsets of
9725         members of MonoThreadsSync.
9726
9727 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9728
9729         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9730         to speed up this function and to avoid the boundless memory growth caused by
9731         the signature_dup () calls.
9732
9733 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9734
9735         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9736         wrapper.
9737
9738         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9739         by 1 bit.
9740
9741         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9742
9743 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9744
9745         * appdomain.c:
9746         * domain-internals.h: made mono_set_private_bin_path_from_config()
9747         "internal".
9748         * object.c: call the above function after setting the configuration
9749         file path for the root domain.
9750         Fixes bug #314478.
9751
9752 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9753
9754         * assembly.c: when the assembly is loaded from an absolute path, end
9755         basedir with a directory separator.
9756         Bug #440781 fixed.
9757
9758 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9759
9760         * monitor.c (mono_monitor_get_fast_enter_method): If
9761         CompareExchange is not available, don't create the fastpath
9762         instead of asserting.  (The method is missing in the 1.1 profile.)
9763
9764 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9765
9766         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9767
9768         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9769         Monitor.Exit IL fastpaths.
9770
9771 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9772
9773         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9774
9775 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9776
9777         * class.c (mono_class_create_from_typedef): Added Vector2l.
9778
9779 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9780
9781         * class.c (mono_class_create_from_typedef): Added Vector2d.
9782
9783 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9784
9785         * appdomain.c: translate \ into / for cache_path.
9786         * domain-internals.h: new mono_is_shadow_copy_enabled().
9787         * icall.c: (fill_reflection_assembly_name) do the same path
9788         manipulations that get_code_base does.
9789         (get_code_base) use mono_is_shadow_copy_enabled.
9790
9791 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9792
9793         * appdomain.c: shadow-copied assemblies go to CachePath +
9794         ApplicationName when both are set. DynamicBase has nothing to do with
9795         shadow copies.
9796         Bug #406877 fixed.
9797
9798 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9801         STANDALONESIG table.
9802
9803         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9804         standalone signatures.
9805
9806         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9807         comparison code: instead of comparing the signatures using a custom
9808         equals function, transform them to a common signature and compare that. This
9809         works better with AOT.
9810
9811 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9814
9815         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9816         call for generic instances.
9817         (mono_class_setup_properties): Call setup_properties () before accessing
9818         gklass->properties.
9819
9820         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9821         over the virtual methods of a class using metadata if possible, avoiding the
9822         creation of MonoMethod's for non-virtual methods.
9823         
9824         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9825         get_virtual_methods () to iterate over the virtual methods of classes.
9826
9827 2008-10-25  Martin Baulig  <martin@ximian.com>
9828
9829         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9830
9831 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9832
9833         * class.c (mono_class_create_from_typedef): Added Vector4i.
9834
9835 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9836
9837         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9838         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9839         special-casing applies to eliminate the call completely.
9840
9841 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9842
9843         * class.c (mono_class_create_from_typedef): Added Vector8s.
9844
9845 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9846
9847         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9848
9849 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9850
9851         * icall.c: get rid of annoying warning.
9852
9853 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9854
9855         * threadpool.c: in 1.x, if you change the background status of the
9856         threadpool thread, it's not reset.
9857         Remove unnecessary calls to SetState.
9858
9859 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9860
9861         * threadpool.c: asynchronously create a set of idle threads upon first
9862         use of the threadpool. SetMinThreads will now start the appropriate
9863         number of idle threads if they are not already running. The default is
9864         1 threadpool thread per CPU. Increased the maximum number of threads
9865         per CPU to 10.
9866
9867 2008-10-22  Martin Baulig  <martin@ximian.com>
9868
9869         Revert r116521 from Zoltan, it breaks the debugger:
9870
9871         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9872         over the virtual methods of a class using metadata if possible, avoiding the
9873         creation of MonoMethod's for non-virtual methods.
9874         
9875         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9876         get_virtual_methods () to iterate over the virtual methods of classes.
9877
9878 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9879
9880         * threads.c: when creating a threadpool thread, set its state to
9881         'background'.
9882         * threadpool.c: reset the background state of a threadpool thread
9883         after finishing each work item
9884         Bug #437888 fixed.
9885
9886 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9887
9888         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9889         
9890         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9891         generic instances which works by inflating the methods in the container
9892         class's vtable.
9893
9894         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9895         variant which doesn't make a copy if no inflation was done.
9896         (mono_class_setup_fields): Use it.
9897
9898         * metadata.c (mono_metadata_get_shared_type): New helper function to
9899         return a shared instance of a given MonoType.
9900
9901         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9902         a copy of most non-generic types.
9903
9904 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9905
9906         * threadpool.c: remove one more GetSystemInfo () call.
9907
9908 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9909
9910         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9911         use the code in mono-proclib.h to get processor information.
9912
9913 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9914
9915         * appdomain.c: fixed the logic that determines whether assemblies in a
9916         directory are "shadow-copied" or not. Bug #433483 fixed.
9917
9918 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9921         warning.
9922
9923 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9926         returning a vtype.
9927
9928         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9929         reflection.c: Use mono_field_get_name () for accessing a field's name.
9930
9931         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9932         class.c
9933
9934         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9935         field.
9936
9937         * loader.c (find_method_in_class): Reenable the metadata optimization by
9938         not using it for generic instances.
9939
9940         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
9941         data/def_type fields from MonoClassField into a separate structure.
9942         (struct MonoClassField): Remove data/def_type fields.
9943         (struct _MonoClass): Add a 'field_def_values' array to store the default
9944         values/RVA for fields.
9945
9946         * class.c reflection.c: Update after the changes.
9947         
9948         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
9949         for accessing field->data.
9950
9951         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
9952
9953         * loader.c (find_method_in_class): Revert the last change for now as
9954         it breaks Mono.C5 unit tests.
9955
9956         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
9957         'field_generic_types' and 'field_objects' which contain the information
9958         previously stored in MonoInflatedField.
9959         (MonoInflatedField): Delete.
9960         (struct _MonoClassField): Delete 'generic_info' field.
9961
9962         * reflection.c: Store the information which was previously in 
9963         field->generic_info in MonoDynamicGenericClass instead.
9964
9965         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
9966         MonoClassField changes.
9967
9968 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
9969
9970         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
9971         store the value inside the data array of the MonoMethodWrapper.
9972         This saves memory, is faster and fixes the lifetime issues (methods
9973         were never removed from the hash previously). May also fix bug#436996.
9974
9975 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9976
9977         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
9978         generic instances, compute the type from the generic definition instead of
9979         looking in field->generic_info.
9980
9981         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
9982         for inflated fields, the only user was get_fieldref_token () which no
9983         longer needs it.
9984
9985         * class.c (mono_class_init): Revert the last change as it seems to cause
9986         crashes.
9987
9988         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
9989         bytes on 64 bit platforms.
9990
9991         * object.c (mono_class_create_runtime_vtable): Fix a warning.
9992         
9993         * object.c (mono_class_create_runtime_vtable): Don't initalize
9994         field->data/field->def_type here, it is done lazily by 
9995         mono_class_get_field_default_value ().
9996
9997         * icall.c (ves_icall_get_enum_info): Call 
9998         mono_class_get_field_default_value () instead of directly accessing
9999         field->data and field->def_type.
10000
10001         * object.c (get_default_field_value): Ditto.
10002
10003         * class.c (mono_field_get_data): Ditto.
10004         
10005         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
10006         call for generic instances.
10007
10008         * loader.c (find_method_in_class): If klass != from_class, then inflate
10009         the method with the context of from_class, since the caller assumes this.
10010
10011 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
10014         for accessing method->slot.
10015
10016 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
10017
10018         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
10019
10020 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * class.c (mono_method_get_vtable_index): Use
10023         mono_method_get_vtable_slot () for accessing method->slot.
10024
10025         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
10026         accessing klass->methods.
10027
10028         * class.c (mono_method_get_vtable_slot): New helper function.
10029         (mono_class_get_vtable_entry): Ditto.
10030         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
10031         accessing method->slot.
10032
10033         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
10034         method to get_inflated_method ().
10035
10036         * class.c (mono_class_get_inflated_method): New helper method to obtain
10037         a method of an inflated class without calling setup_methods ().
10038         (mono_class_get_cctor): Use get_inflated_method.
10039
10040         * generic-sharing.c (mono_class_get_method_generic): Ditto.
10041         
10042         * marshal.c image.c: Lazily create all the marshal caches.
10043
10044         * image.c (mono_image_init): Move initialization of runtime_invoke
10045         caches to marshal.c.
10046
10047         * marshal.c (get_cache): New helper function to lazily initialize a 
10048         wrapper cache.
10049         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
10050
10051         * debug-helpers.c (mono_method_full_name): Include generic arguments.
10052
10053 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
10054
10055         * loader.c: fixed check for interface type.
10056
10057 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10058
10059         * appdomain.c: check for NULL setup before it's referenced.
10060
10061 p
10062 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10063
10064         * class.c: remove the unused old vtable setup code.
10065
10066 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10067
10068         * class.c: don't depend on interface order in
10069         setup_interface_offsets (bug #435777).
10070         * reflection.c: sort the InterfaceImpl table (patch from
10071         Jb Evain  <jbevain@novell.com>).
10072
10073 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
10076         the low level assemblies lock.
10077
10078 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
10079
10080         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
10081         object.c, reflection.c, socket-io.c, threads.c: introduced
10082         mono_framework_version () to return the major framewrok version,
10083         changed the code that was using more complex patterns to use it.
10084         Return the correct value for PlatformID for OSX.
10085
10086 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
10087
10088         * icall-def.h, process.h, process.c: added an icall to get info about
10089         processes using mono-proclib.
10090
10091 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
10092
10093         * mono-perfcounters.c: use the mono-proclib functions to
10094         access process information.
10095
10096 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10097
10098         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
10099         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
10100         reflection.c: remove rawbuffer usage: mmap support is more sanely
10101         provided by utils/mono-mmap.
10102
10103 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
10104
10105         * gc.c: use posix semaphores when possible so that
10106         mono_gc_finalize_notify() is signal safe.
10107
10108 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
10111         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
10112         be #ifdef-ed out, the linker will remove the rest.
10113
10114         * marshal.c: Implement DISABLE_COM.
10115
10116         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
10117
10118 2008-10-11  Miguel de Icaza  <miguel@novell.com>
10119
10120         * locales.c (string_invariant_compare_char): Optimization: do not
10121         call g_unichar_type unless we actually need the information.
10122
10123 2008-10-10  Mark Probst  <mark.probst@gmail.com>
10124
10125         * object.c, class-internals.h: Also create remoting trampolines
10126         for generic methods.  Pass the domain to the remoting trampoline
10127         creation function, too.
10128
10129 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
10132
10133 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10134
10135         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
10136         Vector4ui.
10137
10138 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
10139
10140         * assembly.c:
10141         * locales.c: remove the use of g_strdown. Fixes bug #322313.
10142
10143 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10144
10145         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
10146         for the least possible amount of time (extending the fix in r113458).
10147
10148 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10149
10150         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
10151
10152 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10153
10154         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
10155         as possible simd intrinsic types.
10156         Optimized the test to check for the common prefix first.
10157
10158 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10159
10160         * class.c: back out part of a broken optimization committed on
10161         May 23th (bug #433908).
10162
10163 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10164
10165         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10166         Win32.  Should fix #432388 for most cases until we have the new
10167         profiler on Win32.
10168
10169 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10170
10171         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10172         instead of using inst->id so the hash is stable for AOT.
10173
10174 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10175
10176         * appdomain.c:
10177         * icall.c: create a .ini file for shadow-copied assemblies that
10178         contains the location of the original assembly. Use this to return the
10179         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10180         Also fix the number of '/' for windows when returning the CodeBase.
10181         Fixes bug #430920.
10182
10183 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10184
10185         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10186
10187         Code is contributed under MIT/X11 license.
10188
10189 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10190
10191         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10192           if if the class vtable needs initialized.
10193
10194         Code is contributed under MIT/X11 license.
10195
10196 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10197
10198         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10199           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10200           STRING->BSTR, and CLASS->INTERFACE.
10201
10202         Code is contributed under MIT/X11 license.
10203
10204 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10205
10206         * sysmath.h: changed the declaration of the
10207         ves_icall_System_Math_Round2 icall by adding an extra
10208         away_from_zero parameter.
10209
10210         * sysmath.c (ves_icall_System_Math_Round2): added support for
10211         away from zero rounding. The icall now takes an extra boolean
10212         parameter to signal that away from zero operation is requested.
10213
10214 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10217         the delegate klass so it can work with full-aot.
10218         (mono_marshal_get_delegate_end_invoke): Ditto.
10219         (mono_marshal_get_delegate_invoke): Ditto.
10220
10221 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10222
10223         * gc.c, attach.h, attach.c: remove a bad pattern:
10224         add_finalizer_callback () is not implemented correctly, it can't
10225         without adding more overhead to the finalizer loop and it's not
10226         even needed, since we know exactly what we need to call, so there is
10227         no need to do so through an expensive function pointer.
10228
10229 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10230
10231         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10232         for the no-gc case.
10233         * attach.c (mono_attach_init): Remove the #ifdef.
10234
10235 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10236
10237         * attach.c (mono_attach_init): Don't use
10238         mono_gc_add_finalizer_thread_callback when compiling without GC.
10239         Fixes #432306.
10240         
10241         Code is contributed under MIT/X11 license.
10242
10243 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10244
10245         * class.c (mono_class_create_from_typedef): Remove the 
10246         #ifndef DISABLE_SIMD stuff.
10247
10248 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10249
10250         * class-internals.h (MonoClass): Added simd_type bit field.
10251
10252         * class.c (mono_class_create_from_typedef): Check if type is a simd
10253         intrinsic.
10254
10255 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10256
10257         * object.c (mono_method_add_generic_virtual_invocation): Only add
10258         instantiations to the thunk whose count is at least as large as
10259         the threshold.
10260
10261 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10262
10263         * icall.c: changed the Type of the exception thrown when trying to
10264         invoke a constructor on an abstract class. Part of the fix for bug
10265         #324185.
10266
10267 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10268
10269         * class.c, class-internals.h (mono_method_get_vtable_index): New
10270         function which returns the index into the vtable and properly
10271         handles inflated virtual generic methods.
10272
10273 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10274
10275         * object.c, domain.c, object-internals.h, domain-internals.h:
10276         Generalize IMT thunk machinery to also handle thunks for virtual
10277         generic method invokes.  When a virtual generic method is invoked
10278         more than a number of times we insert it into the thunk so that it
10279         can be called without lookup in unmanaged code.
10280
10281         * generic-sharing.c, class-internals.h: Fetching a
10282         MonoGenericInst* for a method from an (M)RGCTX.
10283
10284 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10285
10286         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10287         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10288         marshalling. Fixes #431304.
10289
10290 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10291
10292         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10293           handle when ref is specified without In or Out.
10294
10295         Code is contributed under MIT/X11 license.
10296
10297 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10298
10299         * loader.c (mono_get_method_constrained): Don't expand method with
10300         the class's context, because it's already a method of that class.
10301
10302 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10303
10304         * attach.c : should be correct build fix.
10305
10306 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10307
10308         * attach.c: Fix the previous change.
10309
10310 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10311
10312         * attach.c : quick w32 build fix.
10313
10314 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10315
10316         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10317         crashes MonoDevelop: #430455.
10318
10319 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10322         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10323
10324         * domain.c: Remove initialization/cleanup of the removed fields.
10325
10326 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10327
10328         * class.c (mono_class_generic_sharing_enabled): Enable generic
10329         code sharing for PPC.
10330
10331 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10332
10333         * attach.c : Fixing the Windows builds.
10334
10335         Code is contributed under MIT/X11 license.
10336
10337 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10338
10339         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10340         the default generic sharing mode to 'all'.
10341
10342 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10343
10344         * generic-sharing.c, class-internals.h: New function for checking
10345         whether a method needs a static RGCTX invoke wrapper.  A few
10346         funtions moved from mini/generic-sharing.c.
10347
10348         * icall.c: New function used.
10349
10350 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10351
10352         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10353         Static RGCTX invoke wrapping applies to value type methods, too.
10354
10355         * class.c (mono_class_setup_vtable_general): In generic-shared
10356         value types, wrap methods with a static RGCTX invoke wrapper.
10357
10358 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10361         osx build.
10362
10363 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10366         register a callback which is called when the finalizer thread is woken
10367         up.
10368         (finalizer_thread): Call the callback if it exists.
10369
10370         * attach.h attach.c: New files, implementing the attach mechanism.
10371
10372         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10373         
10374         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10375         by the previous change.
10376
10377 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10378
10379         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10380         loader.c, marshal.c, metadata-internals.h, metadata.c,
10381         method-builder.c, object.c, reflection.c: introduced specific functions
10382         to allocate from the domain and image mempools and cleaned up most of
10383         the code to use them (still missing a few in reflection.c).
10384         Keep the loader bytes counter updated.
10385
10386 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10387
10388         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10389         loader-related counters.
10390
10391 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10392
10393         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10394         added more MS-compatible counters.
10395
10396 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10397
10398         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10399         class->blittable. Fixes #428217.
10400
10401 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * reflection.c (mono_image_get_field_on_inst_token): Call 
10404         field_encode_signature () since that handles custom modifiers too.
10405         Fixes #424663.
10406
10407 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10408
10409         * reflection.c (add_custom_modifiers): New helper function to merge custom
10410         modifiers stored in objects to a MonoType.
10411         (fieldref_encode_signature): Encode custom modifiers.
10412         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10413         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10414
10415 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10416
10417         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10418         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10419         64-bit IL only images because imports are not resolved for IL only images.
10420         Special thanks to Bill Holmes for finding this bug and testing the patch.
10421         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10422
10423         Contributed under MIT/X11 license.
10424
10425 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10426
10427         * mono-config.c (dllmap_start): Add support for the bits keyword
10428         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10429
10430 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10431
10432         * reflection.c (inflate_mono_method): When the class the method is
10433         to be inflated for is itself not inflated, just return the method.
10434
10435 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10436
10437         * mono-perfcounters.c: use more user friendly process instance names.
10438
10439 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10440
10441         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10442           handle "[in] ref" and "[in][out] ref" cases.
10443
10444         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10445           to mono_mb_create_method.  This was causing problems calling native to
10446           managed passing Variants by value.
10447
10448         Code is contributed under MIT/X11 license.
10449
10450 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10451
10452         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10453         before accessing the friend_assembly_names field.
10454
10455         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10456         times.
10457         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10458         called lazily when it is needed.
10459
10460         * metadata-internals.h (struct _MonoAssembly): Add 
10461         'friend_assembly_names_inited' flag.
10462
10463 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10464
10465         * mono-perfcounters-def.h: fix the types of a few counters.
10466         * mono-perfcounters.c: implemented the instance names getter
10467         and a few bugfixes.
10468
10469 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10470
10471         * culture-info-table.h : regenerated.
10472
10473 2008-09-17  Robert Jordan  <robertj@gmx.net>
10474
10475         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10476         context bound objects. Fixes #415577.
10477
10478         Code is contributed under MIT/X11 license.
10479
10480 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10481
10482         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10483         implementation (bug #423582).
10484
10485 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10488         is not set. Fixes #426309.
10489
10490 2008-09-16  Jb Evain  <jbevain@novell.com>
10491
10492         * class.c (mono_class_from_name): fix the exported type look up
10493         when the type is defined in a referenced assembly.
10494
10495 2008-09-16  Jb Evain  <jbevain@novell.com>
10496
10497         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10498         increment the next index counter on each iteration to make that work
10499         for more than one type forwarder. Unmanaged part to fix #422929.
10500
10501 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10502
10503         * object-internals.h: enum ComInterfaceType in
10504         MonoInterfaceTypeAttribute is guint32, not guint16.
10505
10506 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10507
10508         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10509         writing code.
10510
10511 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10512
10513         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10514         not gboolean.
10515
10516 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10517
10518         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10519         Endianness fixes for MonoSymbolFileOffsetTable.
10520
10521 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10522
10523         * process.c (complete_path) : Removing quotes from the 
10524           input path.  The glib file routines do not handle file paths
10525           that have quotes around them.
10526
10527         Code is contributed under MIT/X11 license.
10528
10529 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10530
10531         * socket-io.h : Adding a comment to provide locations where 
10532           changes to MonoSocketAsyncResult need to be synced.
10533
10534         Code is contributed under MIT/X11 license.
10535
10536 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10537
10538         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10539         parameters as well. Fixes #425001.
10540
10541 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10542
10543         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10544         windows build.
10545
10546 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10547
10548         * console-io.c: Add support for tracking the window size if it
10549         changes.
10550
10551         The setup is very simple: the TtySetup function will now return a
10552         pointer to a location in memory that tracks the current console
10553         size.  The managed code checks its current value every time its
10554         queried against the last value set, and updates accordingly.
10555
10556         With this setup we can work with multiple consoles, and we do not
10557         require to poke into managed code from a signal handler.
10558
10559         Additionally, the environment for COLUMNS and LINES is now handled
10560         in unmanaged code.
10561
10562         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10563
10564 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10565
10566         * marshal.c (mono_type_native_stack_size): Treat
10567         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10568
10569 2008-09-04  Jb Evain  <jbevain@novell.com>
10570
10571         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10572         to nullables.
10573
10574 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10575
10576         * verify.c (verify_type_compatibility_full): Revert change
10577         to allow converting a native int to unmanaged pointer be verifiable
10578         under non-strict mode.
10579         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10580
10581         * verify.c: Added some TODOs.
10582
10583 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10584
10585         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10586           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10587           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10588
10589         Code is contributed under MIT/X11 license.
10590
10591 2008-09-02  Jb Evain  <jbevain@novell.com>
10592
10593         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10594
10595 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10596
10597         reflection.c (typebuilder_setup_fields): Handle classes with
10598         explicit size.
10599
10600 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10601
10602         class.c (mono_class_setup_events): Add memory barrier due to
10603         double checked locking.
10604         
10605         class.c (mono_class_setup_properties): Same.
10606
10607 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10608
10609         * class.c (mono_class_is_assignable_from): Fix the build.
10610         
10611         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10612         before accessing klass->interface_bitmap. Fixes #421744.
10613
10614 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10615
10616         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10617         the runtime into no-exec mode, useful when running the AOT compiler.
10618
10619         * appdomain.c gc.c object.c: Avoid executing managed code when running
10620         in no-exec mode.
10621         
10622         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10623
10624         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10625         special case when the mono_assembly_loaded () returns NULL because the 
10626         search hook is not installed.
10627
10628 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10629
10630         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10631         crashes in bstr marshalling on linux.
10632
10633 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10634
10635         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10636         with more than one parameter.
10637
10638 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10639
10640         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10641         start/stop flow control as well when turning off ICANON (allows
10642         C-s and C-q to be read by Console.ReadKey).
10643
10644 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * class.c (mono_class_init): Move the initialization of nested classes
10647         into mono_class_get_nested_types (). Fixes #418433.
10648
10649         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10650         flag.
10651
10652         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10653         iterating tough the nested classes of a class.
10654
10655 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10658         on arm.
10659
10660 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10661
10662         * console-io.c (sigcont_handler): Support signal chaining for
10663         SIGCONT.
10664
10665         (console_set_signal_handlers): Use best practices with sigaction,
10666         clear the structure before using it. 
10667
10668 2008-08-22  Robert Jordan  <robertj@gmx.net>
10669
10670         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10671         Fix the Windows build.
10672
10673 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10674
10675         * class.c (mono_class_generic_sharing_enabled): Make the default
10676         sharing mode 'corlib'.
10677
10678 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * console-io.c (console_set_signal_handlers): Fix a warning.
10681
10682         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10683         method normally, the JIT will take care of avoiding recursion.
10684
10685 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10686
10687         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10688
10689         Code is contributed under MIT/X11 license.
10690
10691 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10692
10693         * console-io.c (sigcont_handler): We need to restore the entire
10694         termios state, not only the original settings, as things like echo
10695         can be controlled after this (Booish exposes this issue with its
10696         own ReadLine implementation).
10697
10698         Additionally, we need to set the terminal back into keypad_xmit
10699         mode.
10700         
10701         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10702         string as a paramter as well.   Otherwise we get different
10703         keyboard sequences.
10704
10705 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10706
10707         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10708         delegates with byref out parameter passing. Fixes #351520.
10709
10710         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10711         a generic context.
10712         (mono_type_get_desc): Add the type arguments for GENERICINST.
10713         (mono_method_full_name): Stringify the class name using mono_type_full_name
10714         so it picks up generic arguments.
10715
10716 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10717
10718         * console-io.c: Removed debug output.
10719
10720 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10721
10722         reflection.c (mono_reflection_create_runtime_class): Alloc
10723         the nested classes linked list using the dynamic image mempool.
10724         Fixes leak in corlib compilation.
10725
10726 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10727
10728         * console-io.c: Fix incredibly annoying behavior on the console
10729         after resuming execution after control-z.   This affected every
10730         console application.
10731
10732 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10733
10734         * mempool-internals.h: Header for mono private mempool functions. The first
10735         two function are for allocating glib linked lists using pools.
10736
10737         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10738
10739         * Makefile.am: Added mempool-internals.h.
10740
10741 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10742
10743         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10744         (mono_domain_free): Ditto.
10745
10746         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10747         be used by the JIT to store its domain-specific information, instead of putting
10748         it directly into MonoDomain.
10749
10750         * domain.c (mono_install_create_domain_hook): New helper function to install
10751         a hook which initializes domain->runtime_info.
10752
10753         * domain.c (mono_install_free_domain_hook): Ditto.
10754         
10755 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10756
10757         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10758         asserting if the ares parameter is null.
10759
10760         * mono-perfcounters.c: Fix warnings.
10761
10762         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10763         is not needed, don't check for interruptions either.
10764         (mono_marshal_get_delegate_end_invoke): Ditto.
10765
10766 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10767
10768         * mono-perfcounters.c (predef_readonly_counter): added support for
10769         reading the ASP.NET Requests Queued counter from another process.
10770
10771 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10772
10773         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10774         MonoImage to simplify the AOT code.
10775
10776 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10777
10778         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10779         marshalling. Fixes #416078.
10780
10781 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10782         
10783         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10784         it is set, looking up the icall address is deferred to the JIT, since 
10785         in embedded scenarios, the icall might not be registered in the runtime
10786         doing the AOT compilation. Backported from the 2.0 branch.
10787
10788 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10789
10790         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10791         Fixes #415621.
10792
10793 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10794
10795         * Makefile.am: added support for cross-compilation.
10796
10797 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10800
10801 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10802
10803         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10804
10805 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10806
10807         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10808         mono-perfcounters.c: performance counters implementation.
10809
10810 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10811
10812         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10813         to gpointer, letting the AOT code decide what to store in it.
10814
10815 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10816
10817         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10818           mono_class_setup_methods if the methods are not initialized.
10819
10820         Code is contributed under MIT/X11 license.
10821
10822 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10823
10824         * verify.c: Remove some debug code I commited by accident.
10825
10826         * verify.c (mono_method_is_valid_in_context): Change the return value
10827         to make possible to distinguish between invalid and unverifiable.
10828
10829         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10830         methods.
10831
10832 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10833
10834         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10835         constraints. Fixes regression in gtest-253.
10836
10837 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10838
10839         * verify.c (mono_verifier_verify_class): Don't allow generic types
10840         with explicit layout.
10841
10842         * verify.c (mono_method_verify): Check locals and argument types.
10843
10844 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10847         wait if the thread is in StopRequested state.
10848
10849         * class.c (mono_class_from_name): Refactor the module searching code into
10850         a separate function so it can be reused in the AOT case too.
10851
10852 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10853
10854         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10855         Check both the type and it's generic type definition for loader errors.
10856         
10857         * verify.c (mono_method_is_valid_in_context): Don't generate another
10858         error when a type errors occur, this leads to the wrong exception been
10859         thrown.
10860
10861 2008-07-28  Dick Porter  <dick@ximian.com>
10862
10863         * icall-def.h
10864         * process.c
10865         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10866         New internal calls to duplicate and close a process handle.
10867
10868 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10869
10870         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10871
10872 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10873
10874         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10875
10876 2008-07-27  Robert Jordan  <robertj@gmx.net>
10877
10878         * class.c (mono_class_init): Don't compute class.has_finalize for
10879         valuetypes. Fixes #412477.
10880
10881 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10882
10883         * verify.c: Implement constraint equivalence checking.
10884         This is required when a generic parameter is used as
10885         argument to a constrained one.
10886
10887         Fixes #410637.
10888
10889 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10892
10893         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10894
10895         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10896         synch with managed object layout.
10897
10898 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10899
10900         * verify.c (do_branch_op): Handle valuetypes and generic
10901         arguments properly.
10902
10903         * verify.c (do_cmp_op): Same.
10904
10905         Fixes #410383.
10906
10907 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10908
10909         * generic-sharing.c: Fix memory leaks.
10910
10911         * class.c, class-internals.h: Make
10912         mono_class_inflate_generic_type_with_mempool() non-static.
10913
10914 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10915
10916         * pedump.c (dump_verify_info): Dump full class name.
10917
10918 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10919
10920         * generic-sharing.c: Removed some old code that didn't do anything.
10921
10922 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10923         * profiler.c: Added runtime_initialized_event,
10924         mono_profiler_install_runtime_initialized and
10925         mono_profiler_runtime_initialized. This new hook tells the profiler
10926         when the runtime is sufficiently initialized to be able to call
10927         mono_thread_attach on the root appdomain.
10928         * profiler.h, profiler-private.h: Likewise.
10929
10930 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10931
10932         * verify.c (do_cast): Do boxing for generic arguments as well.
10933
10934         * class.c (is_nesting_type): Drop generic instantiations before
10935         checking for nesting.
10936
10937         * class.c (can_access_instantiation): Allow access to generic
10938         arguments.
10939
10940 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10941
10942         * verify.c (verify_class_for_overlapping_reference_fields):
10943         On some cases, the field size might be zero, guard against that.
10944         Fix the explicit layout check to work as expected.
10945
10946 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
10949         mono_thread_resume () during shutdown, since the thread we want to abort
10950         might be suspended.
10951
10952 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10953
10954         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
10955         warning.
10956
10957         * debug-mono-symfile.c: Fix a warning.
10958
10959         * mono-perfcounters.c (get_cpu_times): Fix a warning.
10960
10961         * object.c (mono_class_vtable): Check if exception_type is set, and return
10962         NULL as defined by the function comments.
10963
10964 2008-07-22  Mark Probst  <mark.probst@gmail.com>
10965
10966         * mempool.c: Use malloc for every single mempool allocation if the
10967         configure option is set.  This makes it easier to track mempool
10968         allocations with tools like Valgrind.
10969
10970 2008-07-22  Jb Evain  <jbevain@novell.com>
10971
10972         * reflection.c (create_dynamic_mono_image): emit the same
10973         metadata version that SL2 does when creating a SL2 image.
10974
10975 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
10976
10977         * icall-def.h:
10978         * icall.c: New icall System.Enum:get_hashcode. This function
10979         avoids the overhead of boxing the enum to the underlying type.
10980
10981 2008-07-21  Mark Probst  <mark.probst@gmail.com>
10982
10983         * reflection.c (mono_method_get_object): Don't let static RGCTX
10984         invoke wrappers get into MonoReflectionMethods.
10985
10986 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
10987
10988         * object-internals.h:
10989         * object.c: New mono_runtime_class_init_full function
10990         that makes throwing the exception optinal.
10991
10992         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
10993         for the case where the exception object is supplied.
10994
10995 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
10996
10997         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
10998         old ld versions.
10999
11000         Contributed under MIT/X11 license.
11001
11002 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11003
11004         * string-icalls.c (ves_icall_System_String_InternalSplit):
11005         Optimize array allocation by caching the MonoClass of the
11006         array type.
11007
11008         * icall.c (ves_icall_Type_GetMethodsByName): Same.
11009
11010         * reflection.c (mono_param_get_objects): Same.
11011
11012 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11013
11014         * icall-def.h:
11015         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
11016         It inflates the given type using the class context.
11017
11018 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
11019
11020         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
11021         the vtable if it already exists.
11022
11023         * object-internals.h: Add mono_class_try_get_vtable as part of the
11024         internal API.
11025
11026         * reflection.c (mono_type_get_object): Use the MonoObject from the
11027         vtable when possible. Reduces locking contention on reflection heavy
11028         code.
11029
11030 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
11033         g_bit_nth_msf () since that macro is not implemented in eglib.
11034
11035 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11036
11037         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
11038         on platforms which do not support it.
11039
11040 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
11043
11044 2008-07-11  Martin Baulig  <martin@ximian.com>
11045
11046         * mono-debug-debugger.h
11047         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
11048
11049         * mono-debug-debugger.c
11050         (_mono_debugger_interruption_request): New global volatile variable.
11051         (mono_debugger_check_interruption): New public function.
11052
11053         * threads.c
11054         (mono_thread_current_check_pending_interrupt): Call
11055         mono_debugger_check_interruption().
11056         (mono_thread_interruption_checkpoint_request): Likewise.
11057
11058 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11059
11060         * verify.c: Add more type checks for loaded types. Verify the result
11061         handle from ldtoken.
11062
11063 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11064
11065         * loader.c (field_from_memberref): Don't crash if the field
11066         wasn't found.
11067
11068 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11069
11070         * verify.c: Verify if type and method instantiations
11071         don't have invalid VAR or MVAR arguments.
11072
11073 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11074
11075         * verify.c: Fix double free of function pointer list.
11076
11077 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11078
11079         * object.c (mono_string_to_utf8): Comment the new code as it
11080         breaks under eglib.
11081
11082 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
11083
11084         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
11085
11086 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11087
11088         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
11089           is not throw too many times.
11090
11091         Code is contributed under MIT/X11 license.
11092
11093 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
11096         debugging is turned off.
11097
11098 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
11101
11102 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11103
11104         * class-internals.h, class.c: Added new generic sharing option:
11105         Share only stuff in System.Collections.Generic, which is now the
11106         default.
11107
11108 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11109
11110         * generic-sharing.c, class-internals.h: New function for getting a
11111         generic method in a generic class given the corresponding method
11112         for a different instantiation of the class.  Partly refactored
11113         from mini-trampolines.c.
11114
11115         * class.c: Make sure generic methods have a class_inst if they are
11116         part of a generic class.
11117
11118         * metadata.c (mono_type_stack_size_internal): Handle type
11119         variables.
11120
11121 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11122
11123         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
11124         Signifies whether information on the this/vtable/mrgctx variable
11125         is available.
11126
11127 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11128
11129         * object.c, object-internals.h, icall.c: New function
11130         mono_delegate_ctor_with_method(), which does the same as
11131         mono_delegate_ctor(), but takes an explicit method argument
11132         instead of taking the method from the jit info.
11133
11134         * marshal.c: When creating a delegate with an inflated method take
11135         the "this" argument as the target class for the castclass.
11136
11137 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11138
11139         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
11140         mono_jit_info_table_find() to perform very badly in some cases.
11141
11142 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * icall.c (type_from_typename): Handle 'string'.
11145
11146         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
11147         wrappers into the wrapper_hash, since the key is not a MonoMethod.
11148
11149 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11150
11151         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
11152
11153         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
11154         number of available managed allocator types.
11155
11156         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11157         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11158
11159 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11162         which is a low level lock protecting just the 'jit_code_hash' hash table.
11163
11164         * domain.c: Initialize+cleanup jit_code_hash_lock.
11165         
11166 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11167
11168         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11169         after initialization.
11170
11171         * coree.h: Make MonoFixupExe internal.
11172
11173         Contributed under MIT/X11 license.
11174
11175 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11176
11177         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11178         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11179         as well.
11180         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11181         image being loaded is a CLI image and _CorValidateImage gets called.
11182
11183         * coree.h: Add MonoLoadImage.
11184
11185         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11186         instead of LoadLibrary.
11187
11188         Contributed under MIT/X11 license.
11189
11190 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11191
11192         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11193         for any primitive type.
11194
11195 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11196
11197         * object.c (mono_array_new_specific): Optimize this and the other allocation
11198         functions a bit.
11199         
11200         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11201         domains too if mono_dont_free_domains is set.
11202
11203         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11204         whenever to free appdomain data after it has been unloaded.
11205
11206         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11207         
11208 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11209
11210         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11211         (mono_method_get_equivalent_method): Fix a warning.
11212
11213         * object.c (mono_message_init): Avoid looking up array types for each call.
11214
11215 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11216
11217         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11218         call.
11219
11220         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11221         even more.
11222
11223         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11224         each iteration.
11225
11226         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11227         fields of an enum.
11228
11229 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11230
11231         * object.c (mono_value_box): Fix boxing of nullables.
11232
11233 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11234
11235         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11236         mono_module_handle that is defined by the linker; no initialization required.
11237         * coree.h: Remove mono_module_handle, add __ImageBase, update
11238         mono_image_open_from_module_handle.
11239         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11240         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11241         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11242         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11243         to 4 GB away from image base address. IA64 version is not tested but was very
11244         easy to implement and should work if we ever need it.
11245         * domain.c (mono_init_internal): Avoid system error message boxes.
11246         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11247         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11248         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11249         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11250         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11251
11252         Contributed under MIT/X11 license.
11253
11254 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11255
11256         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11257         as part of the private mono API.
11258         
11259         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11260         Do proper argument checking for methods that belong to generic classes.
11261         Do proper type resolution for GMFH/2.
11262         Fixes #377324.
11263         
11264 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11265
11266         * verify.c (do_switch): Fix a memory corruption bug with
11267         the jump index is out of bound.
11268
11269 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11270
11271         * verify.c: Disable debug code.
11272
11273 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11274
11275         * reflection.c (mono_image_get_methodbuilder_token): Use
11276         mono_image_get_methodspec_token_for_generic_method_definition
11277         instead of mono_image_get_memberref_token. We cache more memberef
11278         entries now.
11279
11280 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11281
11282         * verify.c: Inflate exception clause types.
11283         Fixes #402606.
11284         
11285 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11286
11287         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11288         name.
11289
11290         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11291
11292         * reflection.c (mono_image_create_method_token): Same.
11293
11294 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11295
11296         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11297         It does the same as mono_image_get_methodref_token but works on
11298         MethodBuilder.
11299
11300         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11301         and always generate a methodspec. This follows the old behavior and fixes
11302         the regressions in System.Core. 
11303
11304 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11305
11306         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11307         don't event mono_class_get () succeeds. Fixes #402182.
11308
11309 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11310
11311         * metadata-internals.h: Added MonoDynamicImage::methodspec
11312         hashtable to store methodspec tokens created for MethodBuilders.
11313
11314         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11315         MethodBuilders as open instantiations if a methodspec was requested.
11316
11317         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11318
11319         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11320
11321         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11322
11323         Fixes bug #349190.
11324
11325 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11326
11327         * loader.c (method_from_methodspec): Avoid crashing if the
11328         method lookup fails.
11329
11330 2008-06-20  Dick Porter  <dick@ximian.com>
11331
11332         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11333         classes being in a different assembly.  Fixes bug 399184.
11334
11335 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11336
11337         * loader.c (mono_loader_init): Make this callable multiple times.
11338         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11339         the runtime is initialized. Fixes #401755.
11340
11341 2008-06-19  Dick Porter  <dick@ximian.com>
11342
11343         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11344         Fixes bug 349688.
11345
11346 2008-06-19  Dick Porter  <dick@ximian.com>
11347
11348         * socket-io.c:
11349         * icall-def.h: Implement Socket generic Send() and Receive()
11350         methods.  Fixes bug 395168.
11351
11352 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11353
11354         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11355
11356         Contributed under MIT/X11 license.
11357
11358 2008-06-18  Martin Baulig  <martin@ximian.com>
11359
11360         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11361         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11362         set to 80.0.  The debugger <-> runtime interface is now frozen as
11363         well.   
11364
11365         * mono-debug.c
11366         (mono_debug_debugger_version): Bump to 4.
11367
11368 2008-06-18  Martin Baulig  <martin@ximian.com>
11369
11370         * debug-mono-symfile.c
11371         (load_symfile): Don't check the minor version.
11372
11373         * debug-mono-symfile.h: Bump the version number to 50.0.
11374
11375 2008-06-18  Martin Baulig  <martin@ximian.com>
11376
11377         * debug-mono-symfile.c
11378         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11379         minimum required version.
11380
11381 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11382
11383         * reflection.c (mono_custom_attrs_from_property): Fix support for
11384         retriveving cattrs of dynamic inflated generic types.
11385
11386         * reflection.c (mono_custom_attrs_from_event): Same.
11387
11388         * reflection.c (mono_custom_attrs_from_field): Same;
11389
11390         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11391
11392         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11393         Moved to metadata.c.
11394
11395         * metadata.c: New functions to retrive the equivalent field, event
11396         of property from the generic type definition.
11397
11398         * metadata-internals.h: Added new functions from metadata.c.
11399
11400 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11401
11402         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11403         to cached in a mempool is used.
11404
11405         * metadata.c (free_generic_class): In some situations field generic_info type
11406         is not properly dup'ed and leads to double free'ing.
11407
11408         Fixes #400643.
11409
11410 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11411
11412         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11413         this arguments (will be needed later for generic methods).
11414         Collect stats.
11415
11416 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11417
11418         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11419         Create a static RGCTX invoke wrapper for methods which require it.
11420
11421 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11422
11423         * object.c, class-internals.h: New function for checking whether
11424         an individual field is special static.
11425
11426 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11427
11428         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11429         linear search since the table is sorted.
11430
11431         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11432         Fixes #324180.
11433
11434 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11437         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11438
11439         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11440
11441         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11442         
11443         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11444         InterlockedCompareExchange to query and modify 
11445         thread->interruption_requested.
11446
11447         * object-internals.h (struct _MonoThread): Change interruption_requested
11448         to a gint32 so it can be modified by atomic operations. Add 
11449         'critical_region_level' from the managed side, change small_id to a guint32,
11450         add new set of 'unused' fields.
11451
11452         * appdomain.c: Bump corlib version.
11453
11454 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11455
11456         * class.c (mono_class_from_name): Search modules as well. Fixes
11457         #322332.
11458
11459 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11460
11461         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11462         templates.  Templates are generalized with an additional type_argc
11463         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11464         have type_argc>0.
11465
11466         * domain-internals.h, domain.c: New hash table for looking up
11467         MRGCTXs.
11468
11469         * metadata.c, metadata-internals.h: Rename hash and equal
11470         functions for MonoGenericInst's and make them public.
11471
11472         * class-internals.h: New data structures for the MRGCTX.  Macros
11473         for distinguishing slots in the RGCTX and the MRGCTX.
11474
11475 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11476
11477         * object.c (mono_method_get_imt_slot): Put the same methods of
11478         different instantiations of the same generic interface in the same
11479         IMT slots, to make generic sharing simpler.
11480
11481 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11482
11483         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11484
11485         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11486         This function works just like mono_metadata_field_info, but
11487         accept a mempool as argument to be used allocating memory.
11488
11489         * marshal.c (mono_marshal_load_type_info): Use new function
11490         to load marshal data into image mempool.
11491
11492 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11493
11494         * class.c (mono_class_inflate_generic_type_with_mempool):
11495         This function allows to inflate a generic type using
11496         a mempool.
11497
11498         * class.c (inflate_generic_type): Take a mempool as argument
11499         and use it to do type dup'ing.
11500
11501         * class.c (mono_class_setup_fields): Field type for generic
11502         generic classes are allocated from the image mempool.
11503
11504         * metadata.c (free_generic_class): Inflated field type is
11505         now allocated in the image mempool.
11506
11507 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11508
11509         * threads.c (thread_cleanup): Free MonoThread::name.
11510
11511 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11512
11513         * appdomain.c (ensure_directory_exists): avoid unnecessary
11514         mkdir(2) calls when the shadow directory already exists.
11515         (mono_make_shadow_copy): copy also satellite assemblies from the
11516         private bin directories.
11517
11518 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11521         
11522         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11523         a page boundary. Fixes #396219.
11524
11525 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11526
11527         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11528         due to double-checked locking.
11529
11530 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11531
11532         * assembly.c (build_assembly_name): Release memory on failure.
11533
11534         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11535
11536 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11537
11538         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11539         memory on failure.
11540
11541 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11542
11543         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11544         memory on failure.
11545
11546 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11547
11548         * loader.c (field_from_memberref): Check if field signature type is equal
11549         to the non-inflated type of the field. Fixes #398980.
11550
11551 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11552
11553         * assembly.c (mono_assembly_load_from_full): Call 
11554         mono_assembly_load_friends () outside the assemblies lock, since it can
11555         acquire the loader lock. Fixes #323696.
11556
11557         * reflection.c (resolve_object): Inflate the inst with the context for
11558         FieldOnTypeBuilderInst. Fixes #399010.
11559
11560 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11561
11562         * reflection.c (mono_image_get_field_on_inst_token): Don't
11563         inflate the field to encode it's signature. If it's a
11564         VAR or MVAR it should stay that way in the signature.
11565         Fixes #399047.
11566
11567 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11568
11569         * reflection.c (resolve_object): Release memory of inflated types.
11570
11571 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11572
11573         * loader.c (mono_method_get_signature_full): Remove assert about
11574         loading a methodspec to a generic method. We have such methods, such as
11575         System.Threading.Interlocked::CompareExchange<T>.
11576         This assert was removed since it crashes the verifier when it checks
11577         methods calling CompareExchange<T>.
11578
11579 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11580
11581         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11582         of Type array and not MonoType.
11583
11584 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11585
11586         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11587         <lupus@ximian.com>
11588
11589 2008-06-10  Martin Baulig  <martin@ximian.com>
11590
11591         * debug-mono-symfile.h
11592         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11593         changes to the file format, but we were generating incorrect
11594         source file indices in the line number table due to a bug, which
11595         made backtraces report an incorrect source file.
11596
11597 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11598
11599         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11600         mini/debug-mini.c to here.
11601
11602         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11603
11604         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11605         use it to release structs returned by mono_debug_find_method.
11606
11607 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11608
11609         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11610         since it needs to set method->slot for all interface methods.
11611
11612 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11613
11614         * class-internals.h: Forgot to add.
11615
11616 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11617
11618         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11619
11620         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11621         Lookup the custom attributes from property_hash.
11622
11623         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11624         in property_hash. Allocate all data using the image mempool.
11625
11626         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11627         for dynamic_custom_attrs to checks if the image is dynamic.
11628
11629 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11632         assemblies array.
11633         
11634         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11635         runtime functions while holding the domain assemblies lock.
11636
11637 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11638
11639         * verify.c: Reapplied the last bit of the reverted changes.
11640
11641 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11642
11643         * verify.c: Reapplied more of the reverted changes.
11644
11645 2008-06-09  Martin Baulig  <martin@ximian.com>
11646
11647         * debug-mono-symfile.c (load_symfile): Check the major version
11648         first; if it's wrong, don't print the minor version in the error message.
11649
11650 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11653         lock instead of the domain lock to avoid deadlocks, since the thread might
11654         already hold the loader lock.
11655
11656         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11657         (mono_thread_attach): Ditto.
11658
11659         * monitor.c: Use a TLS variable for holding the current thread id instead
11660         of calling pthread_self ().
11661         (mono_monitor_init_tls): New internal function to initialize the TLS
11662         variable.
11663         (mono_monitor_try_enter_internal): Put the owner == id check after the
11664         owner == 0 check.
11665
11666         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11667         missed optimizations when using gcc-4.3.
11668
11669 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11670
11671         * reflection.c (mono_dynamic_image_free): Free the memory
11672         used by MonoGenericParam in MonoDynamicImage::gen_param.
11673
11674         * reflection.c (mono_reflection_setup_generic_class): Allocate
11675         container from mempool.
11676
11677         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11678         container from mempool.
11679
11680 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11681
11682         * threads.c (mono_set_pending_exception): New internal function to set the
11683         pending exception of the current thread.
11684         (mono_thread_get_and_clear_pending_exception): Check for 
11685         thread->pending_exception as well.
11686
11687         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11688
11689         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11690         it can trigger a collection.
11691
11692 2008-06-06  Martin Baulig  <martin@ximian.com>
11693
11694         Merged the `debugger-kahalo' branch.
11695
11696         * mono-debug.h
11697         (MONO_DEBUGGER_VERSION): Bumped to 72.
11698
11699         * debug-mono-symfile.h
11700         (MonoSymbolFileMethodIndexEntry): Removed.
11701         (MonoSymbolFileMethodEntry): New public typedef.
11702         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11703         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11704         `data_offset'.
11705         (MonoSymbolFileMethodEntry): Removed.
11706         (MonoSymbolFileLexicalBlockEntry): Removed.
11707         (MonoSymbolFileLineNumberEntry): Removed.
11708         (MonoDebugLexicalBlockEntry): Removed.
11709         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11710         removed `num_il_offsets' and `il_offsets'.
11711         (MonoSymbolFile): Replace `version' with `major_version' and
11712         `minor_version'.
11713         (MONO_SYMBOL_FILE_VERSION): Replace with
11714         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11715         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11716
11717         * debug-mono-symfile.c
11718         (mono_debug_symfile_lookup_location): Add support for the new line
11719         number table format.
11720
11721 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11722
11723         * metadata.c (free_generic_class): Release the inflated
11724         MonoClass of dynamic generic classes if it's not a generic
11725         type definition.
11726
11727 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11728
11729         * verify.c: Reapplied more of the reverted changes.
11730
11731 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11732
11733         * reflection.c (lookup_custom_attr): Clean the cached flag or
11734         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11735         for SRE types.
11736
11737 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11738
11739         * verify.c: Reapplied a small part of the reverted changes.
11740
11741 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11742
11743         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11744
11745         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11746         previously in managed code.
11747         (mono_monitor_exit): Ditto.
11748         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11749
11750         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11751         the managed definition.
11752
11753 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11754
11755         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11756
11757 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11758
11759         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11760         
11761         * monitor.c: Add some micro optimizations.
11762
11763         * icall.c (type_from_typename): Handle 'bool'.
11764
11765 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11766
11767         * verify.c: Implement constructor verification per P III 1.8.1.4.
11768         Fixes #396716.
11769
11770 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11771
11772         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11773         holding the assemblies lock here too.
11774
11775 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11776
11777         * verify.c: Kill stack_top function.
11778
11779 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11780
11781         * verify.c: Kill stack_get function.
11782
11783 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11784
11785         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11786
11787 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11788
11789         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11790         more reliable.
11791
11792         * verify.c (mono_method_verify): Inflate params and locals to avoid
11793         mismatch when checking for compatibility.
11794
11795 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11796
11797         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11798         Length prefix should be size in bytes. Fix bug #339530.
11799         
11800         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11801         Length prefix should be size in bytes. Fix bug #339530.
11802
11803         Code is contributed under MIT/X11 license.
11804
11805 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11806
11807         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11808
11809         Contributed under MIT/X11 license.
11810
11811 2008-06-05  Martin Baulig  <martin@ximian.com>
11812
11813         * mono-debug-debugger.c
11814         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11815
11816 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11817
11818         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11819         while holding the assemblies lock to prevent deadlocks. Handle the case
11820         where the search hook returns NULL but the assembly was still loaded.
11821         Fixes #323696.
11822
11823         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11824         modify domain state.
11825
11826 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11827
11828         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11829         * Makefile.am (pedump_LDADD): Post-process object files and
11830         add dtrace-generated object file, if necessary.
11831
11832         Code is contributed under MIT/X11 license.
11833
11834 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11835
11836         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11837
11838 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11839
11840         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11841
11842 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11843
11844         * threads.c: Try to free everything from the delayed free table
11845         when shutting down threads, and set the variable to NULL after the
11846         table is freed so that calling
11847         mono_thread_hazardous_try_free_all() when shutting down the root
11848         domain doesn't crash.
11849
11850 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11851
11852         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11853         the caller if resulting type was inflated.
11854
11855         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11856         was inflated.
11857
11858         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11859
11860
11861 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11862
11863         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11864         class library tests.
11865
11866         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11867         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11868         #396989.
11869
11870 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11871
11872         * domain.c, domain-internals.h: The JIT infos are now freed by the
11873         JIT info table code.  They are freed immediately if there only a
11874         single JIT info table in circulation.  If there is more, the free
11875         is delayed via a queue.
11876
11877         * threads.c, threads-types.h: New hazard pointer function for
11878         freeing all freeable delayed items in one sitting.
11879
11880 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11881
11882         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11883
11884         * reflection.c (typebuilder_setup_properties): Same.
11885
11886         * reflection.c (typebuilder_setup_events): Same.
11887
11888 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11889
11890         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11891         and use it for allocating memory.
11892
11893         * reflection.c (mono_marshal_spec_from_builder): Same.
11894
11895         * reflection.c: Change code to use new signatures.
11896
11897         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11898
11899 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11900
11901         * decimal.c (rescale128): Put back one line which was accidently commented
11902         out.
11903         
11904         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11905         to cause crashes.
11906
11907 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11908
11909         * reflection.c (mono_reflection_generic_class_initialize): Name must
11910         be always malloc'ed so we can free it later on. Do this for field, property
11911         and event.
11912
11913         * metadata.c (free_generic_class): Free field, property and event names.
11914
11915 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11916
11917         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11918         instead of g_memdup.
11919
11920         * reflection.c (typebuilder_setup_fields): Same.
11921
11922 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * decimal.c (rescale128): Optimize this function a bit more.
11925
11926 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11927
11928         * metadata.c (free_generic_class): Release some memory from
11929         SRE generic classes.
11930
11931 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11932
11933         * reflection.c (mono_image_get_generic_field_token): No reference
11934         to name is kept, free it.
11935
11936         * reflection.c (mono_reflection_generic_class_initialize): Free
11937         more memory of the inflated field.
11938
11939 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11940
11941         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
11942         code.
11943
11944 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11945
11946         * reflection.c (mono_dynamic_image_free): Release memory used by
11947         MonoDynamicImage::array_methods elements.
11948
11949         * reflection.c (assembly_add_win32_resources): Release memory after
11950         encoding.
11951
11952 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11953
11954         * decimal.c (log2_32): Use an optimized version for this function too.
11955         
11956         * decimal.c (log2_64): Fix this on 32 bit machines.
11957
11958 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
11959
11960         * class.c (mono_dup_array_type): Implement allocation using a mempool.
11961
11962         * class.c (mono_metadata_signature_deep_dup): Same.
11963
11964         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
11965         a mempool.
11966
11967         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
11968
11969         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
11970
11971         * metadata-internals.h: Added mono_metadata_signature_dup_full.
11972
11973         * class-internals.h: Update signatures to take a MonoMemPool.
11974
11975 2008-06-02  Dick Porter  <dick@ximian.com>
11976
11977         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
11978         * icall-def.h: Add
11979         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
11980         FormatMessage API to get the error text.  Fixes bug 321827.
11981
11982 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
11983
11984         * decimal.c: Add some micro optimizations to make decimal operations faster.
11985
11986 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
11987
11988         * reflection.c (method_encode_clauses): Take a mempool
11989         as parameter and use it to allocate the clause array.
11990
11991         * reflection.c (mono_image_get_field_on_inst_token): Free
11992         the inflated type after encoding it.
11993
11994         * reflection.c (mono_dynamic_image_free): Free each element
11995         of MonoDynamicImage::gen_params.
11996
11997         * reflection.c (reflection_methodbuilder_to_mono_method):
11998         Allocate the generic param array from the mempool.
11999         Allocate signature params from the mempool.
12000
12001         * reflection.c (mono_reflection_generic_class_initialize):
12002         Free inflated fields after been used.
12003
12004 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12005
12006         * icall.c: Reapply the memory leak fixes as they no
12007         longer make mono crash.
12008
12009 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12010
12011         * reflection.c (mono_type_get_object): Don't store the suplied
12012         MonoType with type_hash. A caller which pass a type that
12013         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
12014         might end with a pointer to freed memory.
12015         The solution is to use byval_arg or this_arg from the associated
12016         MonoClass of the supplied type.
12017
12018 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * icall.c: Revert the rest of the last change as it breaks the build too.
12021
12022 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12023
12024         * icall.c: Revert a leak fix as it's breaking the build.
12025
12026 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12027
12028         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
12029
12030 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12031
12032         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
12033
12034 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12035
12036         * icall.c: Fix some memory leaks.
12037
12038 2008-05-29  Dick Porter  <dick@ximian.com>
12039
12040         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
12041         async socket operations from the pending list when a socket
12042         closes.  Leaving it until the threadpool services the event
12043         exposes a race condition when a socket descriptor is reused.
12044         Fixes bug 377589.
12045
12046 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12047
12048         * object.c: Fix negative index check for array alocation.
12049
12050 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12051
12052         * icall.c, marshal.c: Delegate wrappers should skip visibility.
12053         This check is performed by the verifier for IL created delegates
12054         and by Delegate::CreateDelegate for programatically created ones.
12055         Fixes #372406.
12056
12057 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12058
12059         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
12060         Fix code to use mono_array_size_t instead of int.
12061
12062         Based on patch by Luis F. Ortiz.
12063         Contributed under X11 license.
12064         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12065
12066 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12067
12068         * icall.c: Added ves_icall_System_Array_GetLongLength and
12069         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
12070         arrays.
12071
12072         * icall.h: Export both new functions.
12073
12074         Based on patch by Luis F. Ortiz.
12075         Contributed under X11 license.
12076         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12077
12078 2008-05-28  Martin Baulig  <martin@ximian.com>
12079
12080         The debugger now requires exactly r103463.
12081
12082         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
12083         This version is not supported by the debugger, wait for 72.
12084
12085 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12086
12087         * object.h: Changed array related functions to use
12088         mono_array_size_t instead of guint32. Forgot to commit this file.
12089
12090         Patch by Luis F. Ortiz.
12091         Contributed under X11 license.
12092         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12093
12094
12095 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12096
12097         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
12098         don't define it. Use the number literal instead.
12099
12100 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12101
12102         * icall.c: Changed array related functions to use
12103         mono_array_size_t instead of guint32.
12104
12105         * icall.c (ves_icall_System_Array_GetLength): Check for length
12106         overflow under MONO_BIG_ARRAYS.
12107
12108         Based on patch by Luis F. Ortiz.
12109         Contributed under X11 license.
12110         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12111
12112 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12113
12114         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
12115
12116         Based on patch by Luis F. Ortiz.
12117         Contributed under X11 license.
12118         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12119
12120 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12121
12122         * object.c, object.h: Changed array related functions to use
12123         mono_array_size_t instead of guint32.
12124
12125         Patch by Luis F. Ortiz.
12126         Contributed under X11 license.
12127         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12128
12129 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12130
12131         * object.h: Introduced mono_array_size_t typedef. This must be used
12132         in all places an array length is expected. This is 64bits wide if
12133         MONO_BIG_ARRAYS is enabled.
12134
12135         Patch by Luis F. Ortiz.
12136         Contributed under X11 license.
12137         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12138
12139 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12140
12141         * security-manager.c class.c: Set the class exception info by calling
12142         mono_class_set_failure ().
12143
12144         * class.c (mono_class_get_exception_data): New accessor function.
12145         (mono_class_set_failure): Store exception_data in the property hash.
12146
12147         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
12148         the struct as a property.
12149
12150         * loader.c (mono_get_method_full): Store the lookup result for method
12151         tokens in method_cache, the others in methodref_cache to decrease the memory
12152         usage of hash tables.
12153
12154         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
12155         (mono_image_init): method_cache is lazy inited now.
12156
12157         * metadata-internals.h (struct _MonoImage): Change method_cache to
12158         a MonoValueHashTable, add a separate methodref_cache.
12159
12160 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12161
12162         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12163           Double.ToString as exposed by Bug #383531.
12164
12165 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12166
12167         * number-formatter.h: Make some tables static.
12168
12169         * class.c (mono_method_set_generic_container): New accessor function.
12170         (mono_method_get_generic_container): Ditto.
12171
12172         * class-internals.h (struct _MonoMethod): Remove rarely used 
12173         'generic_container' field, store it in the property hash instead. Add 
12174         'is_generic' boolean field instead.
12175
12176         * image.c (mono_image_init): Initialize property_hash.
12177         (mono_image_close): Destroy property_hash.
12178
12179         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12180         hold rarely used fields of runtime structures belonging to this image.
12181
12182         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12183         to get/set method->generic_container.
12184
12185         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12186         generic methods.
12187
12188 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12189
12190         * class.c (mono_class_inflate_generic_method_full): Don't increase
12191         mono_stats.inflated_method_count for methods found in the cache.
12192
12193         * threads.c (mono_thread_request_interruption): Add a comment about 
12194         QueueUserAPC ().
12195
12196 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12197
12198         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12199         interface_offsets_packed table.
12200         
12201         * class.c (mono_class_init): Remove some dead code.
12202
12203         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12204         mono_class_setup_vtable () when CAS is active to detect security problems.
12205
12206 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12207
12208         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12209
12210         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12211         parameters as it's irrelevant for delegate checking.
12212
12213 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12214
12215         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12216
12217         * class.c (mono_class_init): Control the creation of a generic vtable using
12218         a global which is true by default, but set to false by the runtime startup code.
12219         
12220         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12221         Disabled for now since it breaks the embedding API.
12222         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12223         (mono_class_setup_methods): Add a memory barrier.
12224
12225         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12226         when mono_class_init () doesn't compute the generic vtable.
12227         
12228 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12229         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12230         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12231         to support call chains (backtrace) in the stat profiler.
12232         * profiler.c, profiler-private.h: Likewise.
12233
12234 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12235
12236         * generic-sharing.c: Init generic class when a method of it is
12237         requested via a runtime generic context.
12238
12239 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12242
12243         * reflection.c (mono_type_get_object): Add a FIXME.
12244
12245         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12246
12247         * class.c (mono_class_get_method_by_index): New helper function, returning an
12248         entry in the class->methods array.
12249
12250 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12251
12252         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12253         Avoid creating a generic vtable for generic instances as well.
12254         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12255         generic instances.
12256
12257 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12258
12259         * loader.c (mono_get_method_constrained): Inflate the signature
12260         with class context. Fix #325283.
12261
12262 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12263
12264         * object.c (mono_class_create_runtime_vtable): Add a comment.
12265
12266         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12267         where needed.
12268         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12269         (mono_class_setup_vtable_general): Add an assert.
12270         (mono_class_init): Avoid creating a generic vtable for arrays.
12271
12272         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12273         here, let mono_class_init () do that.
12274
12275         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12276         interfaces in mscorlib.
12277
12278         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12279         interfaces. Add some comments.
12280         (mono_class_init): Call mono_class_setup_methods () here since it is no
12281         longer called by mono_class_setup_vtable ().
12282
12283         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12284         not set in class->vtable.
12285         (mono_class_create_runtime_vtable): Reenable the disabled code.
12286
12287         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12288         now as it causes some test failures.
12289
12290         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12291         if using the vtable trampoline. Also remove some strange code which put the
12292         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12293         stuff as it is no longer needed.
12294
12295 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12296
12297         * pedump.c: Give make --verify all option check code as well.
12298         Using --verify code won't check for metadata now.
12299
12300 2008-05-19  Martin Baulig  <martin@ximian.com>
12301
12302         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12303
12304         * mono-debug.c
12305         (_mono_debug_using_mono_debugger): New global variable; it's set
12306         directly by the debugger, so mono_debug_using_mono_debugger() also
12307         works after attaching.
12308
12309 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12310
12311         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12312         as we do double checked locking on MonoClass::runtime_info and
12313         MonoClassRuntimeInfo::domain_vtables.
12314
12315 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * debug-helpers.c (print_field_value): Fix a warning.
12318
12319 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12322         set in the AOT case.
12323
12324 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12325
12326         * class.c (mono_class_setup_vtable_general): Use memory barriers
12327         as we do double checked locking on MonoClass::vtable.
12328
12329 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12330
12331         * reflection.c (resolve_object): Inflate only if the generic context
12332         is not null. Fixes #389886.
12333
12334 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12335
12336         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12337         instead of g_free.
12338
12339         Code is contributed under MIT/X11 license.
12340
12341 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12342
12343         * class.c: Revert unrelated change.
12344
12345 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12346
12347         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12348         a generic instantiation, use mono_class_from_mono_type instead of playing
12349         with MonoType directly.
12350
12351 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12352
12353         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12354         checks must ignore generic instantiations, so mono_class_has_parent is not
12355         suitable. Fixes #390128.
12356
12357 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12360         it to avoid registering tokens during metadata generation. Fixes #390023.
12361
12362 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12363
12364         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12365         consistent.
12366
12367         Contributed under MIT/X11 license.
12368
12369 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12370
12371         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12372         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12373         to fixup the EXE image.
12374         (mono_cleanup): Use mono_close_exe_image.
12375         (mono_close_exe_image): New function.
12376         * image.c: Include "marshal.h".
12377         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12378         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12379         counting when the image is loaded outside of mono_image_open_full. Set status
12380         based on GetLastError.
12381         * coree.c: Include required headers. Add init_from_coree.
12382         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12383         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12384         (_CorExeMain): Set init_from_coree.
12385         (CorExitProcess): Only call ExitProcess for now.
12386         (CorBindToRuntimeEx): New stub implementation.
12387         (CorBindToRuntime): New function.
12388         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12389         (MonoFixupExe): ILONLY executables require no fixups.
12390         (mono_set_act_ctx): New function to set activation context.
12391         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12392         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12393         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12394         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12395         as MONO_INTERNAL.
12396         * domain-internals.h: Add mono_close_exe_image.
12397
12398         Contributed under MIT/X11 license.
12399
12400 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12401
12402         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12403         size for generic param and event tables. Fixes #388977.
12404
12405 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12406
12407         * loader.c (mono_method_signature): Use memory barriers because of the double
12408         checked locking pattern.
12409
12410         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12411         aborting or aborted as well. Fixes #376391.
12412         
12413         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12414         existing runtime state in the Suspend handler during shutdown.
12415
12416 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12417
12418         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12419
12420         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12421         which are starting up or shutting down.
12422
12423         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12424         this function never returns if the runtime is already shutting down.
12425
12426         * icall.c (ves_icall_System_Environment_Exit): Update after 
12427         mono_threads_set_shutting_down () signature change.
12428         
12429 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12430
12431         * class.c: Added can_access_instantiation to verify if the instantiation
12432         is visible. Fix access check for nested types as they returned TRUE
12433         before doing type and generic instantiation visibility checks.
12434
12435 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12436
12437         * reflection.c (mono_reflection_create_generic_class): The created type
12438         must have a different container from its TypeBuilder. Otherwise they
12439         will end sharing generic arguments, which is wrong.
12440
12441         Due to the sharing, making a generic instance of the created type using
12442         the TypeBuider generic arguments resulted in the generic type definition
12443         been returned, which is wrong as well.
12444
12445         As a bonus the code was leaking the type_params array. This memory should
12446         be allocated from the image mempool.
12447
12448         This fixes bug #354047.
12449
12450 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12451
12452         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12453         to here         as they are now used in assembly.c new code.
12454         Added a skipverification flag to MonoAssembly.
12455         New internal function mono_assembly_has_skip_verification.
12456
12457         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12458         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12459         part of #387274.
12460
12461 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12464         needed. Fixes #387034.
12465
12466         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12467
12468 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12469
12470         * assembly.c (mono_assembly_load_reference): Prevent crash while
12471         disassembling Silverlight 2.0 executables while we still do not
12472         have GACed libraries.
12473
12474 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12475
12476         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12477
12478 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12481         of the dynamic case. Fixes #387404.
12482
12483 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12484
12485         *verify.c (mono_verifier_is_class_full_trust): If under
12486         verify_all and the verifier mode was not set, only
12487         gac and corlib types are fulltrust. This makes --verify-all
12488         usable to detect unverifiable code, which is the expected
12489         use case.
12490
12491 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12492
12493         * verify.h: Ops, commited the header with debug
12494         enabled.
12495
12496 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12497
12498         * verify.c (merge_stack): Use the new value on unverifiable
12499         stack merges.
12500
12501         * verify.c (verify_type_compatibility_full): Comparison
12502         of nullable types can't use mono_class_is_assignable_from.
12503
12504         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12505         that makes all verification errors be reported.
12506
12507         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12508         mono_method_verify.
12509
12510 2008-05-05  Robert Jordan  <robertj@gmx.net>
12511
12512         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12513         support for value types. See #386415.
12514
12515         * object.c: comments.
12516
12517         Code is contributed under MIT/X11 license.
12518
12519 2008-05-05  Martin Baulig  <martin@ximian.com>
12520
12521         * debug-mono-symfile.h
12522         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12523         for old pre-terrania symbol files.
12524
12525 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12526
12527         * mono-config.c: Add ppc64 architecture.
12528
12529         Code is contributed under MIT/X11 license.
12530
12531 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12532
12533         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12534           PPC64 uses function descriptors as well.
12535
12536         Code is contributed under MIT/X11 license.
12537
12538 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * object.c (compute_class_bitmap): Ignore literal static fields.
12541
12542         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12543         var has an invalid format.
12544         (describe_ptr): Add some sanity checks for the vtable.
12545         (add_nursery_frag): Clear unused nursery fragments.
12546         (major_collection): Clear all remaining nursery fragments.
12547
12548 2008-05-03  Robert Jordan  <robertj@gmx.net>
12549
12550         * image.c, metadata-internals.h: add thunk_invoke_cache.
12551
12552         * marshal.c, marshal.h: implement
12553         mono_marshal_get_thunk_invoke_wrapper ().
12554
12555         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12556
12557         Code is contributed under MIT/X11 license.
12558
12559 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12560
12561         * verify.c (do_leave): Empty the stack.
12562
12563 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12564
12565         * class.c (mono_class_is_assignable_from): Variance
12566         doesn't work between reference and value types. For example,
12567         given type C<T+>, C<int32> is not assignable to C<object>.
12568         Break the argument checking loop on first error. 
12569
12570 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12571
12572         * icall.c : base64_to_byte_array() needs some more strict
12573           check for sequence of '=' characters. Patch by Santa
12574           Marta (http://deee.g.hatena.ne.jp/santamarta).
12575
12576           Contributed under MIT/X11 license.
12577           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12578
12579 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12580
12581         * domain.c: Disable LoadLibrary support to fix Win32 build.
12582
12583         Code is contributed under MIT/X11 license.
12584
12585 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12586
12587         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12588         to help with cache behaviour.
12589
12590 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12591
12592         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12593         method. 
12594
12595 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12598
12599 2008-05-01  Dick Porter  <dick@ximian.com>
12600
12601         * process.c (process_get_fileversion): Only pass 16 bits of
12602         language ID to VerLanguageName.  Fixes bug 381204.
12603
12604 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12605
12606         * verify.c (mono_method_verify): Fix the comparison
12607         operator for code bounds check.
12608
12609 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12610
12611         * verify.c (mono_method_verify): Check the bounds of
12612         all access of the code array.
12613
12614 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12615
12616         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12617
12618 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12619
12620         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12621         not valid.
12622
12623 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12624
12625         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12626         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12627         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12628         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12629         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12630         mono_runtime_load.
12631         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12632         runtime initialization from metadata.
12633         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12634         (mono_set_rootdir): Use mono_get_module_file_name.
12635         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12636         handles.
12637         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12638         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12639         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12640         MonoCLIImageInfo. Add support for module handles.
12641         (load_cli_header): Update mono_cli_rva_image_map signature.
12642         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12643         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12644         (mono_image_rva_map): Add support for module handles.
12645         (mono_image_ensure_section_idx): Add support for module handles.
12646         (mono_image_close): Add support for module handles.
12647         (do_load_header): Add support for module handles.
12648         (mono_image_open_from_module_handle): New function for internal use.
12649         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12650         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12651         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12652         handles.
12653         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12654         * image.h: Add mono_image_fixup_vtable.
12655         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12656         support.
12657         * coree.h: New file.
12658         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12659         unsupported native code.
12660         (mono_marshal_set_callconv_from_modopt): New function splitted from
12661         mono_marshal_get_managed_wrapper.
12662         (mono_marshal_get_managed_wrapper): Use
12663         mono_marshal_set_callconv_from_modopt.
12664         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12665         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12666         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12667         that results in a deadlock when the runtime is loaded in _CorDllMain.
12668         * Makefile.am: Add coree.c and coree.h.
12669
12670         Contributed under MIT/X11 license.
12671
12672 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12673
12674         * generic-sharing.c: Search for type arguments in array element
12675         types as well.
12676
12677 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12678
12679         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12680
12681         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12682
12683         * object.c: Don't setup the RGCTX when the vtable is created,
12684         because we're setting it up lazily now.
12685
12686 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12687
12688         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12689         64 bit support.
12690
12691 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12692
12693         * verify.c (verify_class_for_overlapping_reference_fields): 
12694         If class is under fulltrust allow reference types to overllap
12695         if they have the same RVA.
12696
12697 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12698
12699         * pedump.c: Added new flag valid-only, that makes the verifier
12700         behaves just like --security=validil. It won't fail type load
12701         due to unverifiable restrictions.
12702
12703 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12704
12705         * class-internals.h (struct MonoMethod): Added a verification_success
12706         field to cache verifier executions. Reduced MonoMethod:slot size by
12707         one bit.
12708
12709 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12710
12711         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12712         instead of a 'vt' argument to save an indirection and to allow these to be used
12713         for valuetypes.
12714         (scan_vtype): New helper function to scan an area using a gc descriptor.
12715         (mono_gc_wbarrier_value_copy): Implement this.
12716         (handle_remset): Add support for REMSET_VTYPE.
12717         (find_in_remset_loc): Ditto.
12718         (mono_gc_base_init): Allow some debugging options to be controlled through the
12719         use of the MONO_GC_DEBUG env variable.
12720         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12721         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12722
12723 2008-04-23  Martin Baulig  <martin@ximian.com>
12724
12725         * domain.c (mono_domain_create): Move the call to
12726         mono_debug_domain_create() down, after allocating the domain id.
12727
12728 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12729
12730         verify.c (verify_class_for_overlapping_reference_fields): Skip
12731         static fields while verifying for overlapping fields as they
12732         don't matter at all.
12733
12734 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12735
12736         * domain-internals.h: added a declaration of
12737         mono_make_shadow_copy.
12738
12739         * assembly.c (mono_assembly_open_full): shadow copying of
12740         assemblies moved to here, so that all the assemblies within the
12741         application domain's private binary directories can be
12742         processed. Fixes bug #380546
12743
12744         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12745         mono_make_shadow_copy and made non-static. The decision whether
12746         to shadow-copy an assembly is made based on its location - it's
12747         copied if it's in one of the private application domain binary
12748         directories and its different to the target file in the shadow
12749         directory. Fixes bug #380546
12750
12751 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12752
12753         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12754
12755         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12756         types.
12757
12758         * reflection.c (mono_image_create_token): Handle 
12759         Method/ConstructorOnTypeBuilderInst.
12760         (resolve_object): Ditto.
12761         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12762         so it can be called from resolve_object. Also handle the case when the inflated
12763         class already has its methods setup.
12764
12765 2008-04-21  Martin Baulig  <martin@ximian.com>
12766
12767         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12768
12769 2008-04-20  Geoff Norton  <gnorton@novell.com>
12770
12771         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12772         pointer dereference.
12773
12774 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12775
12776         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12777         portability API to look up the assembly file. Fixes behavior in
12778         situations when the application has a bin/ directory, but the
12779         assembly search patch refers to Bin/ (and thus the requested file
12780         name is Bin/SomeLibrary.dll). Fixes bug #379888
12781
12782 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12783
12784         verify.c (mono_type_is_generic_argument): Extracted this check
12785         from a dozen places to here.
12786
12787         verify.c: Fixed all issues related to boxing generic arguments
12788         and their constraints.
12789
12790 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12791
12792         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12793
12794 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12795
12796         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12797         isn't finished yet. Fixes #363447.
12798
12799 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12800
12801         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12802         Fixes #346419.
12803
12804 2008-04-13  Jb Evain  <jbevain@novell.com>
12805
12806         * domain.c: update the 2.1 profile versions.
12807         Merged from the Moonlight 2 branch.
12808
12809 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12810
12811         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12812         mscorlibs for the non-refonly case as well.
12813
12814         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12815         in mono_assembly_load_from_full (). Fixes #378924.
12816
12817 2008-04-11  Geoff Norton  <gnorton@novell.com>
12818
12819         * icall.c: The global extern environ doesn't exist on Mac.  We
12820         need to call NSGetEnviron instead.
12821
12822 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12823
12824         verify.c: Add generic method constraint verification.
12825
12826 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12827
12828         class.c (mono_class_inflate_generic_method_full): Add a long
12829         explanation to the is_mb_open hack. Remove the FIXME.
12830
12831 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12832
12833         * verify.c (mono_method_verify): Mark all unknown opcodes
12834         as invalid. Mark jmp as unverifiable.
12835
12836 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12837
12838         * verify.c: Add code to do type constraint verification on class instances.
12839
12840         * verify.c (mono_verifier_verify_class): Use the type constraint 
12841         verification code.
12842
12843 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12844
12845         * class.c (mono_class_get_field_default_value): Don't pass cindex
12846         as hint to mono_metadata_get_constant_index. The local is not initialized
12847         and should contain garbage most of the time. This could only work
12848         with a lot of luck.
12849
12850 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12851
12852         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12853
12854 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12855
12856         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12857
12858         * class.c (mono_class_from_generic_parameter): Save the token of the
12859         generic param in MonoClass::sizes.generic_param_token.
12860
12861         * reflection.c (mono_custom_attrs_from_class): If the class type is
12862         VAR or MVAR retrieve the attributes of the generic param.
12863
12864 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12865
12866         * class.c (mono_class_init): Do class verification if the verifier
12867         is enabled.
12868
12869 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12870
12871         * verify-internal.h: Added mono_verifier_verify_class.
12872
12873         * verify.c: Added mono_verifier_verify_class. It checks for
12874         classes with explicit layout that have overlapping reference fields.
12875
12876         * pedump.c: Init the verifier state prior to verification. Fixed
12877         command line arguments.
12878
12879 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12880
12881         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12882
12883 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12884
12885         * verify-internals.h: Fix a warning.
12886
12887 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12888
12889         * verify-internals.h: New header with the verifier configuration
12890         extracted from mini.c.
12891
12892         * verify.c: Implemented the new functions exported by verify-internals.h.
12893
12894 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12895
12896         * verify.c: Add proper verification of ckfinite.
12897
12898 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12899
12900         * verify.c (do_conversion): Improved error message to something
12901         more meanfull.
12902
12903         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12904         with primitive types.
12905
12906 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12907
12908         * verify.c: Added tail prefix checking. Marked icall
12909         as unverifible.
12910
12911 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12912
12913         * verify.c: Fix the detection of branches to the middle
12914         of an instruction.
12915
12916 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12917
12918         * verify.c: Implemented verification of volatile. and
12919         unaligned. prefix. Check if a type is valid after retrieving it.
12920
12921 2008-04-01  Dick Porter  <dick@ximian.com>
12922
12923         * process.c (process_get_fileversion): If there's no string block,
12924         set the file language to en_US.  Fixes the other new part of bug
12925         374600.
12926
12927 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12928
12929         * class.c: New functions mono_method_can_access_field_full and
12930         mono_method_can_access_method_full. They perform type visibility
12931         and type site check.
12932
12933         * class-internal.h: Added exported functions.
12934
12935         * verify.c: Use new functions to implement proper visibility checks.
12936
12937 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12940
12941 2008-03-28  Dick Porter  <dick@ximian.com>
12942
12943         * process.c (process_get_fileversion): Use the first language ID
12944         we see, rather than insisting on an invariant language.  Fixes bug
12945         374600.
12946
12947 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
12948
12949         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
12950         the streams to fix reading of invalid memory later.
12951
12952         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
12953         to ease debugging.
12954
12955 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12956
12957         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
12958         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
12959
12960 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
12961         * threads.h: Added MonoThreadManageCallback type and
12962         mono_thread_set_manage_callback prototype
12963         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
12964         (used to store the mono_thread_manage callback).
12965         * threads.c: Added mono_thread_set_manage_callback, and handle
12966         "MonoThread->manage_callback" in build_wait_tids.
12967
12968 2008-03-26  Dick Porter  <dick@ximian.com>
12969
12970         * process.c (process_get_fileversion): Set FileVersionInfo strings
12971         to Empty when the resource doesn't have the particular info.
12972         Fixes bug 355717.
12973
12974 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
12975
12976         * verify.c (mono_method_verify): Proper prefix validation.
12977
12978 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12979
12980         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
12981         itself in a separate argument instead of throwing them. Fixes #373448.
12982
12983         * appdomain.c: Bump corlib version.
12984
12985 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
12986
12987         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
12988
12989 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
12990
12991         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
12992         version macros.
12993
12994 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12995
12996         * generic-sharing.c, class-internals.h: Code for putting
12997         reflection types into the runtime generic context.
12998
12999 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
13000
13001         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
13002         Fixes #340662. 
13003
13004
13005 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
13006
13007         * verify.c (VerifyContext): Added instruction prefix data to the struct.
13008
13009         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
13010
13011         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
13012
13013         * verify.c (do_cast): Let the result value keep the boxed status.
13014
13015         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
13016
13017 2008-03-17  Jb Evain  <jbevain@novell.com>
13018
13019         * reflection.c: when running on a 2.0 runtime, emit
13020         unconditionally the #~ header version as 2.0, and the
13021         CLI header version as 2.5, for symmetry's sake with csc.
13022
13023 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13024
13025         * class.c: Remove the unused cache_interface_offsets stuff.
13026
13027         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
13028         profiler.c: Fix warnings.
13029
13030 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13031
13032         * generic-sharing.c, class-internals.h: Support for putting
13033         methods into the runtime generic context.
13034
13035 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13036
13037         * class.c (mono_class_setup_fields): Ignore calls made to this function for
13038         classes which are generic instances of not-yet finished typebuilders. Fixes
13039         #351172.
13040
13041         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
13042
13043 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
13046
13047         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
13048         field, replace it with a hash table in MonoDynamicImage.
13049
13050         * reflection.c (inflate_mono_method): Access the generic definition object from
13051         image->generic_def_objects instead of imethod->reflection_info.
13052
13053         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
13054
13055         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
13056         
13057         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
13058         function in reflection.c so it is easier to keep in sync with the dynamic image
13059         creation code.
13060
13061         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
13062         mono_image_close ().
13063
13064 2008-03-15  Mark Probst  <mark.probst@gmail.com>
13065
13066         * class.c (mono_class_generic_sharing_enabled): Disable generic
13067         sharing for all architectures except AMD64 and x86 to fix build.
13068
13069 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13070
13071         * verify.c: Use the generic definition MonoGenericContext when available.
13072         Remove code for checking generics instance compatibility in favor of
13073         mono_class_is_assignable_from.
13074
13075 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13076
13077         * marshal.c, marshal.h, metadata-internals.h, image.c,
13078         wrapper-types.h: New wrapper for invoking a shared static method
13079         without having to pass the runtime generic context argument.
13080
13081 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13082
13083         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
13084
13085 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13086
13087         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
13088         
13089         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
13090         create a token from a FieldOnTypeBuilderInst.
13091         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
13092         (resolve_object): Ditto.
13093
13094         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
13095         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
13096
13097 2008-03-14  Martin Baulig  <martin@ximian.com>
13098
13099         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
13100
13101         * debug-mono-symfile.h
13102         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
13103         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
13104
13105 2008-03-10  Martin Baulig  <martin@ximian.com>
13106
13107         * debug-mono-symfile.h
13108         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
13109         `lexical_block_table_offset'.
13110         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
13111         `lexical_blocks'.
13112         (MonoSymbolFile): Added `version'.
13113
13114         * mono-debug.h
13115         (MonoDebugLexicalBlockEntry): Removed.
13116         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
13117         `lexical_blocks'.
13118
13119         * mono-debug.c (mono_debug_add_method): Don't compute lexical
13120         blocks here; the debugger now does this internally.
13121
13122 2008-02-27  Martin Baulig  <martin@ximian.com>
13123
13124         * object.c (mono_runtime_exec_main): Call
13125         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
13126         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
13127
13128 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13129
13130         * verify.c (verify_type_compatibility_full): Allow native int to be converted
13131         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
13132
13133 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13134
13135         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
13136         ldftn with a virtual method.
13137
13138 2008-03-13  Geoff Norton  <gnorton@novell.com>
13139
13140         * decimal.c:  Only include memory.h if the platform has it.
13141
13142 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
13143
13144         * assembly.c, class.c, metadata-internals.h: make sure public key
13145         tokesns are compared in a case-insensitive way. Also, all
13146         the lookups in the GAC use a lowercase public key token
13147         (gaacutil already does the lowercasing on install). Fixes
13148         bug #369541.
13149
13150 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
13151
13152         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
13153         and return value.
13154
13155 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13156
13157         * image.c: when someone loads a mscorlib from a file, return the
13158         currently loaded mscorlib (fixes bug #369253).
13159
13160 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13161
13162         * class.c: handle types with no parents by forcing them to have
13163         System.Object as a parent and marking them as broken (this currently
13164         allows the first part of bug #369173 to work as well, likely because
13165         we don't check for typeload exceptions everywhere yet).
13166
13167 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13168
13169         * class.c: more complete check that types belong to corlib
13170         (fixes second part of bug #369173).
13171
13172 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13173
13174         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13175           "inline" to "__inline" before including mono-membar.h.
13176           
13177         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13178           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13179           MSVC builds.
13180
13181         Contributed under MIT/X11 license.
13182
13183 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13184
13185         * verify.c (do_invoke_method): Remove return type validation.
13186
13187         * verify.c (do_ret): Do return type validation at return site instead of
13188         call site.
13189
13190 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13191
13192         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13193
13194         * verify.c: Some todos cleaned and improved a few error messages.
13195
13196 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13197
13198         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13199
13200 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13203         system types correctly.
13204
13205         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13206         function.
13207
13208 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13209
13210         * assembly.c (build_assembly_name): Fix a warning.
13211
13212 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13213
13214         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13215         the called function takes an object type argument. Fixes storing or
13216         valuetypes across remoting as well as reducing memory usage.
13217         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13218         stfld_remote wrapper caches.
13219
13220 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13223         is not found.
13224
13225         * reflection.c (mono_image_register_token): New helper function to save
13226         a token->object mapping.        
13227
13228         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13229         managed code.
13230
13231         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13232         one dimension arrays. Fixes #367670.
13233         (mono_reflection_get_type_internal): Ditto.
13234
13235 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13236
13237         * marshal.c: mono_load_remote_field_new() always returns object.
13238         so use the proper signature (fixes bug #366445).
13239
13240 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13241         
13242         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13243         add an 'inline_failure' flag instead.
13244
13245 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13246
13247         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13248         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13249         contains the location of "this", used for exception handling.
13250
13251 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13252
13253         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13254         their size on all platforms for perf reasons.
13255
13256 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13257
13258         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13259         object-internal.h
13260
13261         * object-internal.h: Same.
13262
13263 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13264
13265         * reflection.h: Fix the build I just broke.
13266
13267 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13268
13269         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13270         Test if a token is valid, this remove explicit usage of 
13271         MonoDynamicImage::tokens from the verifier code.
13272
13273         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13274
13275         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13276         instead of direct access to MonoDynamicImage::tokens.
13277
13278 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13279
13280         * verify.c (token_bounds_check): Fix the build I just broke.
13281
13282 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13283
13284         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13285
13286         * verify.c (verifier_load_method): Fixed the errors message.
13287
13288         * verify.c (mono_method_verify): Fixed a debug message.
13289
13290 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13291
13292         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13293         mono-perfcounters.h, class-internals.h: support for predefined
13294         writable counters, query of categories and counters, bugfixes.
13295
13296 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13297
13298         * verify.c (do_refanytype): Verify the refanytype opcode.
13299
13300         * verify.c (mono_method_verify): Use do_refanytype.
13301
13302 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13303
13304         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13305
13306         * verify.c (mono_method_verify): Use do_mkrefany.
13307
13308 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13309
13310         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13311         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13312         implementation.
13313
13314 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13317         the type load exception.
13318
13319 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13320
13321         * verify.c: Added a few FIXME for method signatures
13322
13323         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13324         of mono_method_get_signature and get vararg call working. Removed unused
13325         checks for return value.
13326
13327         * verify.c (do_refanyval): Verify the refanyval opcode.
13328
13329         * verify.c (mono_method_verify): Implemented verification of arglist and
13330         use do_refanyval.
13331
13332 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13333
13334         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13335         vtypes to marshal.c.
13336
13337         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13338         it works for AOT as well.
13339
13340 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13341
13342         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13343         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13344         the system time is adjusted.
13345
13346 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13347
13348         * icall.c, icall-def.h: use the new time functions (fixes the
13349         non-monotonic behaviour of TickCount).
13350
13351 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13352
13353         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13354         it breaks the build.
13355         
13356         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13357         cattr is not finished yet.
13358
13359 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13360
13361         * verify.c: Proper token validation for field, method and type.
13362
13363 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13364
13365         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13366
13367         * loader.c (method_from_memberref): Generate type load error instead of method missing
13368         if the type is not found.
13369
13370 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13371
13372         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13373         some of the conversions caused the generation of a marshal directive exception.
13374
13375 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13376
13377         verify.c: Report which exception should be thrown by the JIT.
13378         Added a lot of FIXME notes.
13379
13380 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13381
13382         * generic-sharing.c: Runtime generic context slots are not
13383         instantiated on init anymore.  Instead, provide function to do the
13384         instantiating on demand.
13385
13386         * class-internals.h: Added vtable to runtime generic context.
13387         Macros for encoding direct and indirect slot offsets in one
13388         guint32.
13389
13390 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13391
13392         * object.c, generic-sharing.c: Moved some generic sharing code
13393         from object.c to generic-sharing.c.
13394
13395         * generic-sharing.c: Added support for extensible runtime generic
13396         context.
13397
13398         * metadata-internals.h: Two new hash tables in MonoImage for
13399         extensible runtime generic context support.
13400
13401         * domain.c: Unregister generic vtables upon domain unloading.
13402
13403         * image.c: Destroy new hash tables upon image unloading.
13404
13405         * metadata.c: Unregister generic subclasses upon image unloading.
13406
13407         * class-internals.h: New data structure for runtime generic
13408         context template.  New fields in the runtime generic context for
13409         extensible part.
13410
13411         * Makefile.am: Added generic-sharing.c.
13412
13413 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13414
13415         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13416         there is a pending loader exception, raise it.
13417
13418         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13419         same.
13420
13421         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13422         same.
13423
13424         Fixes #363450.
13425
13426 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13429
13430         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13431         
13432         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13433         ref-only requests for compatibility with MS.
13434
13435 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13436
13437         * reflection.c (mono_custom_attrs_from_method): Don't silently
13438         return an empty list for generic method instances.
13439         (mono_custom_attrs_from_param): Likewise.
13440
13441 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13442             Raja R Harinath  <harinath@hurrynot.org>
13443
13444         Fix #354757
13445         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13446         * class.c (mono_class_inflate_generic_method_full): Initialize it
13447         when a fully-open method is instantiated.
13448         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13449         to new field.
13450         * reflection.c (inflate_mono_method): Don't create a temporary context.
13451
13452 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13453
13454         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13455         Compute correct value, to prepare for imethod->reflection_info going away.
13456
13457 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13460
13461 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13462
13463         * verify.c: Implement skip visibility flag.
13464
13465 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13466
13467         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13468         which contains an extra field to tell the kind of exception that should be thrown.
13469
13470         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13471
13472 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13473
13474         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13475         'method' is updated.
13476
13477 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13478
13479         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13480         explicit layout as well. Fixes #360375.
13481
13482 2008-02-11  Geoff Norton  <gnorton@novell.com>
13483
13484         * loader.c: Guard and dereference against inflated generic methods
13485
13486 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13487
13488         * class.c: Include Retargetable spec in assembly name.
13489         * assembly.c: Always include PublicKeyToken spec in assembly name
13490         (with value "null" if assembly is not signed), and include
13491         Retargetable spec.
13492         * icall-def.h: Added icall for Assembly.get_fullname.
13493         * icall.c: Added icall returning the fullname of an assembly.
13494
13495 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13496
13497         * class.c (mono_class_setup_vtable_general): Add a missing call to
13498         mono_class_setup_methods () which is needed in the AOT case.
13499
13500 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13501
13502         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13503         stack type of the given MonoType.
13504
13505         * verify.c (verify_type_compatibility_full): Handle the void type.
13506
13507         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13508         way stack merging works.
13509
13510         * verify.c (store_local): Improved verification message.
13511
13512         * verify.c (do_branch_op): If the merging is invalid, the method
13513         is unverifiable and not invalid. Improved error message.
13514
13515         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13516         a reference type diferent than System.Object. Improved error
13517         message.
13518
13519 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13520
13521         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13522
13523         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13524         type of an enum even if the argument is byref.
13525
13526         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13527         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13528
13529         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13530
13531         *verify.c (verify_type_compatibility_full): Make enum types
13532         compatible with their base types.
13533
13534         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13535         types are compatible for the special case of a boxed valuetype and
13536         System.Object.
13537
13538         * verify.c (verify_stack_type_compatibility): The function
13539         is_compatible_boxed_valuetype was extracted from here.
13540
13541         * verify.c (push_arg): Only set ctx->has_this_store if the method
13542         is not static.
13543
13544         * verify.c (do_ldelem): Fixed a typo in an error message and added
13545         strict check for mixing int32 and native int as the array type
13546         and ldelem type.
13547
13548         * verify.c (merge_stacks): Consider boxed valuetypes in the
13549         compatibility checks.
13550
13551 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13552         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13553
13554 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13555         *class.c: use_new_interface_vtable_code: renamed the env var to have
13556         a "MONO_" prefix, and fix the logic to enable it by default.
13557
13558 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13559         *class.c:
13560         mono_class_setup_vtable_general: rewrote the way in which interface
13561         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13562         makes the code more maintainable.
13563         For now the old code is still there, and can be activated setting
13564         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13565
13566 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13567
13568         * verify.c: guarded some debug functions around and #ifdef.
13569
13570         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13571
13572 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13573
13574         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13575         changes for now since they seem to break too many things.
13576
13577 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13578
13579         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13580         mono_marshal_find_nonzero_bit_offset): Added macro and function
13581         for finding the byte- and bit-offset of a bitfield within a
13582         struct.
13583
13584 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13587         (mono_marshal_get_struct_to_ptr): Ditto.
13588
13589         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13590         cctor_signature.
13591
13592 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13595         between methods for non-corlib types.
13596
13597 2008-02-02  Geoff Norton  <gnorton@novell.com>
13598
13599         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13600         generic parameters as well. (Fixes #342536)
13601
13602 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13603
13604         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13605
13606         * verify.c (do_invoke_method): Fix for calling with byref structs.
13607
13608         * verify.c (do_cast): push a boxed value type based on the type token and not
13609         the type of stack.
13610
13611 2008-01-31  William Holmes  <billholmes54@gmail.com>
13612
13613         * process.c (process_module_string_read): Check the size returned form 
13614           VerQueryValue to avoid out of memory exception. 
13615
13616 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13617
13618         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13619         Handle properly modules which are not in the moduleref table. Fixes
13620         #356938.
13621
13622 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13623
13624         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13625         the dynamic case which is now in managed code.
13626         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13627
13628         * marshal.c (mono_string_to_bstr): Fix a warning.
13629         (init_com_provider_ms): Ditto.
13630
13631         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13632
13633         * exception.c (mono_get_exception_out_of_memory): New helper function.
13634
13635 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13636
13637         * marshal.c: Add support for BSTR marshalling
13638         using other COM systems.
13639
13640         Code is contributed under MIT/X11 license.
13641
13642 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13643
13644         * object.c (mono_runtime_invoke_array): reverted previous
13645         commit as it breaks the build.
13646
13647 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13648
13649         * object.c (mono_runtime_invoke_array): Verify arguments for
13650         invalid types. Fixes #348522.
13651
13652 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13653
13654         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13655         non-final virtual calls using call. 
13656
13657         * verify.c (do_invoke): fixed some TODOs.
13658
13659         * verify.c (push_arg): set has_this_store for "ldarga 0".
13660
13661 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13662
13663         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13664         which belong to an inflated class. Fixes #356531.
13665
13666 2008-01-26  Robert Jordan  <robertj@gmx.net>
13667
13668         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13669         which resort to FindFirstFile when a certain error condition
13670         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13671         Code is contributed under MIT/X11 license.
13672
13673 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13674
13675         * marshal.c (emit_marshal_string): Fix out string marshalling
13676         to use specified encoding. Fixes #323900.
13677
13678         Code is contributed under MIT/X11 license.
13679
13680 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13681
13682         * class.c (mono_class_inflate_generic_method_full): Don't modify
13683         iresult->context after cache check.
13684
13685 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * class.c (mono_class_inflate_generic_method_full): Change the
13688         struct assignments to memcpy for better visibility and add some comments.
13689
13690 2008-01-23  Dick Porter  <dick@ximian.com>
13691
13692         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13693         procedure, and make it work on windows.
13694
13695 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13696
13697         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13698         a MonoReflectionTypeBuilder since it is always of that type.
13699
13700         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13701
13702         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13703
13704         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13705         
13706         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13707
13708         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13709
13710         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13711         instantiations from the type cache.
13712
13713 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13714
13715         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13716
13717         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13718
13719 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13720
13721         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13722
13723         * verify.c (mono_method_verify): removed old TODO
13724
13725 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13726
13727         * verify.c (do_newobj): add visibility check.
13728
13729 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13730
13731         * verify.c (do_load_function_ptr): add visibility check.
13732
13733 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13734         *class.c:
13735         mono_generic_class_get_class: hook profiler events.
13736         mono_field_get_offset: added to support heap-shot in the new profiler.
13737         *class.h: exported mono_field_get_offset.
13738         * reflection.c:
13739         mono_reflection_setup_internal_class: hook profiler events.
13740
13741 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13744         argument here too and use it to avoid checking for pending exceptions if 
13745         possible.
13746
13747 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13748
13749         * assembly.c (build_assembly_name): add arg for passing the assembly
13750         flags. Do not consider a PublicKey with value "null" valid.
13751         (mono_assembly_name_parse_full): added boolean argument that will be
13752         set if the assembly name contains a PublicKeyToken spec. Added support
13753         for the Retargetable spec for which only Yes or No are allowed as valid
13754         value. Consider assembly name invalid if Retargetable spec is set, but
13755         either version, culture or public key (token) are not specified.
13756         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13757         with implementation in assembly.c.
13758         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13759         from MonoAssemblyName.
13760         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13761         introduced argument for mono_assembly_name_parse_full to know if the
13762         assembly name has a PublicKeyToken spec, and if it has instruct
13763         fill_reflection_assembly_name to use default value for keyToken (if
13764         PublicKeyToken is null).
13765
13766 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13767
13768         * verify.c (mono_method_verify): fixed ovf ops with
13769         float values. They are unverifiable now.
13770
13771 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13772
13773         * class.c (set_failure_from_loader_error): add BadImageException to the
13774         list of exceptions that can cause a type to fail to load.
13775
13776         * class.c (mono_class_get_exception_for_failure): same.
13777
13778 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13779
13780         * verify.c (in_any_exception_block): added, check if offset
13781         is part of any exception handling clause.
13782
13783         * verify.c (get_stack_type): added VAR and MVAR types.
13784
13785         * verify.c (do_stobj): better error messages.
13786
13787         * verify.c (do_cpobj): added, check cpobj.
13788
13789         * verify.c (do_initobj): added, check initobj.
13790
13791         * verify.c (do_sizeof): added, check sizeof.
13792
13793         * verify.c (do_localloc): added, check localloc.
13794
13795         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13796
13797 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13800         save_lmf/restore_lmf opcodes.
13801
13802         * threads.c (mono_threads_install_notify_pending_exc): New function to
13803         install a callback notifying the JIT there is a pending exception on a thread.
13804         (mono_thread_request_interruption): Call the new callback.
13805         (mono_thread_get_and_clear_pending_exception): New function to return the
13806         exception pending on a thread.
13807
13808         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13809         to turn off checking for pending exceptions.
13810         (mono_marshal_get_native_wrapper): Ditto.
13811
13812 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13813
13814         * threads-types.h: Get rid of the unnecessary extern declarations.
13815
13816 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13817
13818         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13819         return field from parent class if not private.
13820         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13821         returns fields from parent class if they are not private.
13822         (method_nonpublic): added function to determine if a given method
13823         should be considered non-public. Returns false for private methods
13824         on parent class, and internal methods from parent on the 1.0 profile.
13825         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13826         use method_nonpublic function to determine whether method should be
13827         returned.
13828         (property_accessor_public): use newly introduced method_nonpublic
13829         function to determine whether accessor is non-public. 
13830         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13831         event from parent class if not private. Only return static event if
13832         Static flag is set, and only return static event from parent class if
13833         FlattenHierarchy flag is set.
13834         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13835         include non-private events from parent class.
13836
13837 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13840         warning.
13841
13842 2008-01-16  Wade Berrier <wberrier@novell.com>
13843
13844         * security.c: Add assembly.h header to appease some warnings
13845
13846 2008-01-16  Dick Porter  <dick@ximian.com>
13847
13848         * process.c (process_module_string_read): Remove trailing null
13849         when saving string.
13850
13851 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13852
13853         * class-internals.h: A new data structure describing the layout of
13854         a runtime generic context (MonoRuntimeGenericContextTemplate).
13855
13856         * metadata-internals.h: Added a hash table to MonoDomain that maps
13857         from open generic classes to their runtime generic context
13858         templates.
13859
13860         * object.c: Building of the runtime generic context, including
13861         proper handling of generic type arguments of superclasses.
13862         Building of the runtime generic context according to the template.
13863
13864 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13865
13866         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13867         Fixes #350856.
13868
13869         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13870         mono_portability_find_file (). Fixes #325466.
13871         (mono_image_get_public_key): Fix a warning.
13872
13873 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13874
13875         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13876         Fixes #353550.
13877         (mono_class_from_name_case): Ditto.
13878
13879 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13880
13881         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13882           common storage for the tables used in the System/NumberFormatter class.
13883
13884 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13885
13886         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13887
13888 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13889
13890         * verify.c (get_boxable_mono_type): check if the token is valid.
13891
13892         * verify.c (set_stack_value): changed to add an error if an
13893         invalid type is set on stack. Changed all callers due to signature change.
13894
13895         * verify.c (do_stobj): implement stobj validation.
13896
13897 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13898
13899         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13900         set container->is_method, it was set earlier.
13901
13902         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13903         generic methods.
13904
13905         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13906         is_method of the generic container to TRUE for methods.
13907
13908 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13909
13910         * metadata.c (type_in_image): Handle type parameters properly.
13911
13912         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13913         memory ownership of this structure.
13914
13915 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13916
13917         * verify.c (get_boxable_mono_type): make typedref types been just
13918         unverifiable. check for void type.
13919
13920         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13921
13922         * verify.c (do_load_function_ptr): accept method spec tokens.
13923
13924 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13925
13926         * marshal.c (mono_class_native_size): Always set *align even if this is called
13927         recursively.
13928
13929 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13930
13931         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13932         out-of-date.
13933
13934 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13935
13936         * verify.c: removed some old unused tables. A huge bunch of small fixes
13937         to things found while testing the verifier with mono basic.
13938
13939         * verify.c (dump_stack_value): dump null literal flag to.
13940
13941         * verify.c (verify_type_compatibility_full): fix comparison
13942         for types that have a generic super type.
13943
13944         * verify.c (verify_stack_type_compatibility): fix compatibility
13945         between null literals and reference types. fix compatibility between
13946         boxed valuetypes and object. fix corner case test for enums.
13947
13948         * verify.c (do_cmp_op): proper verification of cgt.un in case
13949         of reference types.
13950
13951         * verify.c (do_invoke_method): fix error message.
13952
13953         * verify.c (do_store_indirect
13954
13955         * verify.c (check_is_valid_type_for_field_ops): proper verification
13956         of managed pointers to valuetypes and boxed valuetypes. proper verification
13957         of null literals.
13958
13959         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
13960         allow token to be a reference type.
13961
13962         * verify.c (do_cast): proper handling of boxes valuetypes.
13963
13964         * verify.c (do_stelem): proper handling of storing a boxed valuetype
13965         in object[].
13966
13967         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
13968         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
13969         fixed the decoding of unbox_any
13970
13971 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13972
13973         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
13974
13975 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
13976
13977         * verify.c (do_newobj): do delegate verification.
13978
13979         * verify.c (verify_delegate_compatibility): perform delegate
13980         verification.
13981
13982         * verify.c (verify_ldftn_delegate): perform tests related to
13983         ldftn delegates.
13984
13985         * verify.c (mono_delegate_signature_equal): perform the
13986         slightly diferent signature comparison required by delegates.
13987
13988         * metadata.c (mono_metadata_type_equal_full): added and exported
13989         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
13990         allows signature only comparison.
13991
13992         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
13993         as MONO_INTERNAL.
13994
13995 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
13996
13997         * verify.c: added a bunch of stack_slot_* functions to
13998         make access to stack slot type easier. This is required to
13999         allow optional flags, like null literal, boxed value and
14000         this pointer.
14001         All access paths to IlStackDesc::stype have been changed 
14002         to use these new funcions.
14003         Removed a bunch of unused functions and cleared all warnings.
14004         This patch introduces the usage of the this pointer and 
14005         boxed value flags.
14006
14007 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
14008
14009         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
14010
14011 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
14014         match managed version.
14015
14016         * appdomain.c: Bump corlib version.
14017         
14018         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
14019         argument.
14020
14021 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
14022
14023         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
14024         Set public key token to zero-length byte array if assembly is not
14025         strongnamed.
14026
14027 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14028
14029         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
14030         writing a vtype array elem.
14031
14032 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
14033
14034         * assembly.c (build_assembly_name): return FALSE if length of token is
14035         not 16 (if not "null").
14036         (mono_assembly_name_parse_full): return FALSE if value of version,
14037         culture, token or key is 0.
14038         * icall.c (fill_reflection_assembly_name): add boolean arguments to
14039         specify whether public key and public key token must be set to default
14040         value (zero-length byte array) if not available. Set versioncompat to
14041         SameMachine. If public key is available or the default is set, then
14042         set PublicKey flag.
14043         (ves_icall_System_Reflection_Assembly_FillName): if no public key
14044         is available, use empty byte array as default value. On the 2.0
14045         profile, use default value for public key token if not set.
14046         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
14047         profile, use default value for public key if not set. On the 2.0
14048         profile, use default value for public key token if not set.
14049         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
14050         default values for public key and public key token.
14051
14052 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14053
14054         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
14055         field to keep it in synch with the managed object.
14056
14057         * marshal.c (emit_marshal_object): Add support for byref marshalling of
14058         delegates. Fixes #351520.
14059
14060         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
14061         contains defined memory.
14062         
14063         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
14064
14065         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
14066         
14067         * sgen-gc.c (check_consistency): New helper function to do a consistency check
14068         of the GC data structures.
14069
14070         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
14071
14072         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
14073         
14074         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
14075         barrier.
14076         (mono_array_clone_in_domain): Ditto.
14077         (mono_array_clone_in_domain): Ditto.
14078
14079         * threads.c (start_wrapper): Register the thread start argument as a GC root.
14080         (cache_culture): Use a write barrier.
14081
14082         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
14083         (ves_icall_get_property_info): Ditto.
14084
14085         * object.h (MONO_STRUCT_SETREF): New macro.
14086
14087         * class-internals.h (MonoStats): Add some GC statistics.
14088
14089         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
14090
14091 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
14092
14093         * exception.c (mono_exception_from_name_two_strings):
14094         Break from loop after method is found.
14095
14096 2008-01-04  Dick Porter  <dick@ximian.com>
14097
14098         * process.c (process_module_string_read): Rename variable to
14099         reflect correct usage, after fixing bug 345972.
14100
14101 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
14102
14103         * verify.c (mono_type_create_fnptr_from_mono_method): 
14104         created a MonoType function pointer instance to be used during
14105         verification. The verifier releases this memory at end.
14106
14107         * verify.c (mono_method_is_constructor): extracted repeated
14108         checks for constructor into a single class.
14109
14110         * verify.c (do_push_field): use new extracted method
14111         for constructor check.
14112
14113         * verify.c (do_newobj): same.
14114
14115         * verify.c (do_ldftn): renamed to do_load_function_ptr
14116         and make it verify ldvirtftn too.
14117
14118         * verify.c (mono_method_verify: proper verification
14119         of ldvirtftn. release created MonoMethod instances.
14120
14121 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14122
14123         * verify.c (token_bounds_check): added.
14124
14125         * verify.c (do_ldftn): added.
14126
14127         * verify.c (mono_method_verify): proper verificartion of ldftn.
14128
14129 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14130
14131         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
14132         than the table row count. It's the resposibility of the caller to
14133         make the bounds check and raise the correct error.
14134
14135         * metadata.c (mono_metadata_decode_row_col): Same.
14136
14137         * loader.c (mono_get_method_from_token): perform bounds check
14138         on token for methoddef table.
14139
14140 2007-12-29  Miguel de Icaza  <miguel@novell.com>
14141
14142         * icall.c
14143         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
14144         assert into a negative result, the managed code already coped with
14145         that.
14146
14147         Some folks on Windows reported this error. 
14148
14149 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
14150
14151         * appdomain.c: Bump corlib version.
14152         * icall.c:
14153         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
14154         CultureInfo.CreateCulture to create CultureInfo for name.
14155         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14156         create CultureInfo for name. Fixes bug #347174.
14157
14158 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14159
14160         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14161         flags.
14162
14163         * verify.c (is_valid_branch_instruction): allow branching to the
14164         first instruction of the protected block.
14165
14166         * verify.c (is_valid_cmp_branch_instruction): same.
14167
14168         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14169         avoid double initialization.
14170
14171         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14172         detect which cases the eval stack should just be copied.
14173
14174         * verify.c (mono_method_verify): check if the eval stack
14175         is empty when entering a protected block.
14176
14177 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14178
14179         * verify.c: added is_clause_in_range, is_clause_inside_range,
14180         is_clause_nested and verify_clause_relationship. They perform
14181         the verifications stated in P1 12.4.2.7.
14182
14183         * verify.c (mono_method_verify): remove some unused variables,
14184         add the new exception clause checks, add instruction border
14185         checks for protected block start/end, improved some error 
14186         messages and fixed a bug in the way invalid instruction access
14187         is detected.
14188
14189 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14190
14191         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14192         from GC 7.0 if available.
14193
14194         * object.c: Remove an unused define.
14195         
14196         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14197
14198         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14199
14200         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14201
14202         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14203
14204         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14205         to take the same arguments as the other make_descr functions.
14206
14207         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14208
14209         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14210         directly.
14211
14212         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14213         mini.c.
14214
14215         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14216         call to boehm-gc.c.
14217
14218         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14219
14220         * null-gc.c (mono_gc_register_root): Fix a warning.
14221
14222         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14223
14224         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14225         (mono_gc_base_init): Call GC_init ().
14226
14227         * null-gc.c: Define mono_gc_register_root () as a no-op.
14228
14229         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14230
14231 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14232
14233         * verify.c: add prototype for merge_stacks at top
14234
14235         * verify.c (do_switch): added.
14236
14237         * verify.c (merge_stacks): on some cases the stack merging
14238         was not happening properly. Unequal stack sizes at merge
14239         points should be invalid.
14240
14241         * verify.c (mono_method_verify): added more debug info on stack state.
14242         verify switch properly.
14243
14244 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14247         marshal.h.
14248
14249         * boehm-gc.c marshal.c: Include method-builder.h.
14250
14251         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14252
14253         * marshal.c: Remove some code which is now in method-builder.c.
14254
14255 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14256
14257         * method-builder.c: New file, extraction of the method builder functionality 
14258         from marshal.c.
14259
14260         * marshal.c: Move the mb functions into method-builder.c.
14261
14262         * marshal.h marshal.c: Export some mono_mb_... functions.
14263
14264         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14265
14266         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14267         the caller.
14268
14269         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14270
14271         * loader.c (mono_field_from_token): Ditto.      
14272
14273         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14274         type as well.
14275         
14276         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14277         Fixes #342565.
14278
14279         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14280         a helper function for setting it.
14281
14282         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14283
14284         
14285         * assembly.c: Significally simplify code now that referenced assemblies are 
14286         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14287
14288         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14289         #349952.
14290
14291 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14292
14293         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14294         instructions that were target of branches or are at protected block boundaries.
14295
14296         * verify.c (in_same_block): handle filter clauses.
14297
14298         * verify.c (is_valid_branch_instruction): added. checks the target of
14299         instructions br or brtrue/false.
14300
14301         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14302         binary branch instructions such as beq and bge.
14303
14304         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14305         and made it pin the instruction as been part of the exception block.
14306
14307         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14308         of in_same_block.
14309
14310         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14311         of in_same_block.
14312
14313         * verify.c (do_ret): ret from a protected block is unverifiable and
14314         not invalid.
14315
14316         * verify.c (do_static_branch): verify br and br.s instructions.
14317
14318         * verify.c (merge_stacks): add extra param to support detection
14319         of branches in the middle of instructions.
14320         
14321         * verify.c (mono_method_verify): verify branches and exception blocks
14322         that target the middle of instructions. Proper verification of br and br.s.
14323
14324 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14325
14326         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14327         skip_visibility field.
14328         (reflection_methodbuilder_from_dynamic_method): Ditto.
14329
14330         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14331         registrations. Fixes #348193.
14332
14333         * threads.h: Move the internal mono_thread_get_pending_exception () to
14334         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14335
14336 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14337
14338         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14339         icall registration. Fixes #348193.
14340
14341         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14342         for corlib classes into object. Fixes #349621.
14343
14344 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14345
14346         * icall.c (property_accessor_nonpublic): new function to determine
14347         whether an accessor allows a property to be considered non-public.
14348         Returns false for private accessor(s) from parent class, and internal
14349         accessor(s) from parent on 2.0 profile (and higher).
14350         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14351         to determine whether property should be included if NonPublic flag
14352         is set. Fixes bug #349078.
14353
14354 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14355
14356         * verify.c (init_stack_with_value): added.
14357
14358         * verify.c (mono_method_verify): extracted common
14359         code for exception initialization into init_stack_with_value.
14360
14361         * verify.c (mono_method_verify): initialize the exception
14362         for handler clauses as well.
14363
14364         * verify.c (mono_method_verify): fix the exception clause
14365         ordering rules, it should use handler end offset and not
14366         start offset.
14367
14368 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14369
14370         * rawbuffer.c: remove useless warning.
14371
14372 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14373
14374         * threads.h, threads-types.h: move functions to the correct header
14375         (fixes bug#349952).
14376
14377 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14378
14379         * verify.c (mono_method_verify): proper verification
14380         of exception handling clauses ranges and fallthru in
14381         and out of protected blocks.
14382
14383 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14384
14385         * verify.c (mono_method_verify): fixed compilation issue.
14386
14387 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14388
14389         * verify.c (mono_method_verify): a printf slipped in, changed
14390         to use verifier debug macro.
14391
14392 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14393
14394         * verify.c (is_correct_leave): check for filter clauses.
14395
14396         * verify.c (do_filter): added.
14397
14398         * verify.c (mono_method_verify): property verification of leave.
14399
14400
14401 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14402
14403         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14404         Win32 build, until we figure out how to do the proper thing on
14405         Win32.
14406
14407 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14408
14409         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14410         by the previous patch.
14411         
14412         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14413         the assembly resolve handler for refonly assemblies.
14414
14415 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14416
14417         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14418         Make sure only one thread is allowed to commence shutdown, and
14419         don't allow new threads to be started once shutdown is in
14420         progress.
14421
14422 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14423
14424         * verify.c (is_correct_endfilter): added.
14425
14426         * verify.c (is_unverifiable_endfilter): added.
14427
14428         * verify.c (do_endfilter): added.
14429
14430         * verify.c (mono_method_verify): property verification of endfilter
14431         and fixed a corner case or endfinally.
14432
14433 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14434
14435         * verify.h: new flags to support fail fast of unverifiable code and
14436         do non-strict verification. Non-strict verification is required to
14437         have MS runtime compatibility. There are a huge amount of unverifiable
14438         code that it accepts as verifiable. The strict mode verifies the code
14439         as the specs says.
14440         Non-strict mode will be required in cases where code needs to be
14441         accepted as verifiable but fails under strict mode.
14442
14443         * pedump.c: added support to fail fast and non-strict verification.
14444
14445         * verify.c: added support for both fail fast and non-strict verification.
14446
14447 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14448
14449         * verify.c (is_correct_endfinally): added.
14450
14451         * verify.c (mono_method_verify): property verification of endfinally.
14452
14453 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14454
14455         * verify.c (in_any_block): check for filter clauses.
14456
14457         * verify.c (is_correct_rethrow): added.
14458
14459         * verify.c (mono_method_verify): property verification of rethrow.
14460
14461         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14462
14463 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14464
14465         * verify.c (do_throw): added.
14466
14467         * verify.c (mono_method_verify): property verification of throw
14468
14469 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14470
14471         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14472         assemblies. Fixes #346425.
14473
14474 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14477         FieldBuilders.
14478
14479         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14480
14481         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14482         prevent asserts when this is called with a token which might not be valid.
14483
14484         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14485         lookup_dynamic_token_class with valid_token == FALSE.
14486
14487         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14488
14489         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14490
14491         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14492         
14493 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14494
14495         * gc.c: Don't delay threadpool thread finalization unless Mono is
14496         shutting down.
14497
14498 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14499
14500         * threads.c: turn an assert into a non-fatal warning.
14501
14502 2007-12-09  Robert Jordan  <robertj@gmx.net>
14503
14504         * icall.c (GetVirtualMethod): Add missing argument validation.
14505
14506 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14507
14508         * verify.c (do_cast): added.
14509
14510         * verify.c (mono_method_verify): property verification of castclass and isinst.
14511
14512
14513 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14514
14515         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14516
14517         * verify.c (do_stelem): added.
14518
14519         * verify.c (mono_method_verify): property verification of stelem.X.
14520
14521 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14522
14523         * class.c, class-internals.h: Introduce an environment variable
14524         (MONO_GENERIC_SHARING) through which the extent of generic code
14525         sharing can be controlled (share all classes, share only corlib
14526         classes, or share nothing).
14527
14528         * object.c: Only create runtime generic context for classes for
14529         which sharing is enabled.
14530
14531 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14532
14533         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14534
14535         * verify.c (mono_method_verify): property verification of ldelem.any.
14536
14537 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14538
14539         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14540         added ldelem.X opcodes.
14541
14542         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14543
14544         * verify.c: proper verification of ldelem.X 
14545
14546 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14549
14550 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14551
14552         * verify.c (mono_method_verify): null literal requires special handling,
14553         the value pushed on stack need to be flagged as so.
14554
14555         * verify.c (do_ldelema): Verify ldelema properly.
14556
14557 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14558
14559         * verify.c: Verify ldlen properly.
14560
14561 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14562
14563         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14564         to the target object's type. Fixes #346160.
14565
14566 2007-12-05  Dick Porter  <dick@ximian.com>
14567
14568         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14569         Solaris needs the same workaround as BSD-derived systems.  Fixes
14570         bug 323524, patch by Burkhard Linke
14571         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14572
14573 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14574
14575         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14576         handle to use when error dialog is shown; otherwise, update mask
14577         to show no error dialog when an error occurs.
14578
14579 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14580
14581         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14582
14583         * class.c (mono_class_get_field_default_value): New helper function to initialize
14584         field->def_type and field->data.
14585
14586 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14587
14588         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14589         the general one.
14590
14591         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14592
14593         * marshal.c: Avoid depending on delegate->method_info being set.
14594
14595         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14596         
14597         * object.c (mono_delegate_ctor): Set delegate->method.
14598
14599         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14600
14601         * appdomain.c: Bump corlib version.
14602
14603 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14604
14605         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14606         equality check if we're comparing canonicalized MonoGenericInsts.
14607
14608 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14609
14610         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14611         accessing class->methods.
14612
14613 2007-11-22  Dick Porter  <dick@ximian.com>
14614
14615         * threads.c: Ensure that the synch_cs is set before trying to use
14616         it.
14617
14618 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14619
14620         * profiler.c: r89126 broke the statistial profiler, unbreak.
14621
14622 2007-11-22  Martin Baulig  <martin@ximian.com>
14623
14624         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14625
14626         * mono-debug.c
14627         (mono_debug_debugger_version): Bump to 3.
14628         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14629         -> mono_debugger_class_initialized().
14630
14631         * mono-debug-debugger.c
14632         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14633
14634         * class.c
14635         (mono_debugger_start_class_init_func): Removed.
14636         (mono_debugger_class_loaded_methods_func): Added.
14637         (mono_class_setup_methods): Call it here.
14638
14639 2007-11-22  Martin Baulig  <martin@ximian.com>
14640
14641         * mono-debug.c
14642         (mono_debug_add_delegate_trampoline): New public method.
14643         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14644
14645         * mono-debug.h
14646         (MonoSymbolTable): Added `global_data_table'.
14647         (MonoDebuggerTypeKind): Removed.
14648
14649 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14652         these methods.
14653
14654         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14655         
14656 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14657
14658         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14659
14660 2007-11-20  Martin Baulig  <martin@ximian.com>
14661
14662         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14663
14664         * mono-debug-debugger.c
14665         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14666         (mono_debugger_remove_breakpoint): Likewise.
14667         (mono_debugger_check_breakpoints): Likewise.
14668         (mono_debugger_register_class_init_callback): New public method.
14669         (mono_debugger_remove_class_init_callback): Likewise.
14670         (mono_debugger_add_type): Likewise.
14671
14672         * mono-debug-debugger.h
14673         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14674
14675 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14676
14677         * class.c: more interface implementations needed for the
14678         array enumerator (fixes bug #341112).
14679
14680 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14681
14682         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14683         fix ParamName of ArgumentNullExceptions.
14684
14685 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14686
14687         * reflection.c (mono_reflection_encode_sighelper): Generate the
14688         modopts and modreqs.   I have a useless test that crashes monodis,
14689         but that shows the code working.
14690
14691 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14692
14693         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14694         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14695
14696 2007-11-15  Dick Porter  <dick@ximian.com>
14697
14698         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14699         When joining a thread, it's the thread that's calling Join that
14700         gets WaitSleepJoin state not the target.  Fixes the standalone
14701         test case in bug 334740, and hopefully the whole bug too.
14702
14703 2007-11-15  Dick Porter  <dick@ximian.com>
14704
14705         * process.c: Read file version info from the files pointed at by
14706         process modules, not the current process.  Fixes bug 315969.
14707
14708         Use windows typedef names in some places to fix warnings on the
14709         windows build.
14710
14711 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14712
14713         * image.c, metadata-internals.h: Added a generic_class_cache hash
14714         to MonoImage for looking up generic classes when sharing generics.
14715
14716 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14717
14718         * sgen-gc.c: warning cleanups.
14719
14720 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14721
14722         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14723         inherited properties.
14724
14725 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14726
14727         * object.c, class-internals.h: Added more information to the
14728         runtime generic context.
14729
14730 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14731
14732         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14733         instead of just the target method. Generalize the abstract method handling to
14734         handle any non-static method.
14735
14736         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14737         mono_marshal_get_delegate_invoke () signature change.
14738
14739 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14740
14741         * class.c, class-internals.h: Made
14742         mono_type_get_basic_type_from_generic () public.  Fixed member
14743         access check for shared generics.
14744
14745         * loader.c: Don't insert field into field cache if it's part of a
14746         non-inflated generic class.
14747
14748         * domain.c, domain-internals.h: The generic sharing context is now
14749         part of the jit info data structure.  Added two accessor
14750         functions.
14751
14752 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14753
14754         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14755         the array Get/Set/Address methods, since the JIT inlines them.
14756
14757         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14758
14759         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14760         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14761
14762         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14763         mono_marshal_get_delegate_invoke signature change.
14764
14765         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14766         an additional argument. Add support for invoking abstract methods.
14767
14768         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14769
14770         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14771
14772 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14773
14774         * class.c: Do field layout for open generic classes as well.
14775
14776 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14777
14778         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14779         other objects, because the threadpool is still around.  Put them
14780         in a list instead and after finalizing all other objects in the
14781         root domain shut down the thread pool and then finalize the
14782         threads.  Fixes bug #337383.
14783
14784         * threads.c, thread-types.h: New mono_thread_create_internal()
14785         function for marking a thread with the threadpool flag before it
14786         started.  Set synch_cs to NULL after freeing it.
14787
14788         * threadpool.c: Mark threadpool threads before they start.
14789
14790 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14791
14792         * reflection.h, reflection.c: don't export random functions
14793         and lazy load dbnull and missing objects.
14794
14795 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14796
14797         * class.c: Initialize COM types if COM interfaces
14798         are present (not just COM classes).
14799         
14800         Code is contributed under MIT/X11 license.
14801
14802 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14803         * reflection.c:
14804         create_dynamic_mono_image: hook module profiler events (dynamic case).
14805         mono_image_basic_init: hook assembly profiler events (dynamic case).
14806
14807 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14808         * profiler.c:
14809         simple_appdomain_unload: completely terminate the profiler
14810         instead of only processing the statistical samples.
14811         simple_shutdown: make sure this is really called exactly once,
14812         even in multithreaded applications, and always listen to
14813         appdomain events.
14814         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14815         here, the "[un]load" functions will do it.
14816         Fixes bugs #333791 and #325261.
14817
14818 2007-11-07  Geoff Norton  <gnorton@novell.com>
14819
14820         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14821         rather than depend on __APPLE__.
14822
14823 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14824
14825         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14826
14827 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14828
14829         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14830         UTF16 MonoString. Fix the crash from bug #335488
14831
14832 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14833
14834         * marshal.c: Correct (for non-Win32 OS) length != size in 
14835         mono_string_from_bstr. Fix #339530.
14836
14837 2007-11-06  Geoff Norton  <gnorton@novell.com>
14838
14839         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14840         to succeed
14841
14842 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14843
14844         * process.c: Added run-time GetProcessId API detection for Windows.
14845
14846 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14847
14848         * reflection.c  (mono_param_get_objects): If a parameter has the
14849         attribute [System.Runtime.InteropServices.Optional] we should
14850         set the DefaultValue of the ParameterInfo to be
14851         System.Reflection.Missing instead of DBNull.
14852
14853         See bug #339013.
14854
14855         (mono_get_reflection_missing_object): New method,
14856         returns the System.Reflection.Missing.Value singleton instance.
14857
14858 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14859
14860         * culture-info-table.h : regenerated.
14861
14862 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14863
14864         * icall.c: Use GetEnvironmentStrings on windows
14865         so we are using the same environment block as 
14866         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14867         #333740.
14868         
14869         Code is contributed under MIT/X11 license.
14870
14871 2007-10-31  Martin Baulig  <martin@ximian.com>
14872
14873         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14874
14875         * mono-debug-debugger.h
14876         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14877
14878 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14879
14880         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14881         classes.
14882
14883 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14884
14885         * culture-info-table.h : regenerated.
14886
14887 2007-10-30  Robert Jordan  <robertj@gmx.net>
14888
14889         * icall-def.h, icall.c:
14890         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14891
14892         Code is contributed under MIT/X11 license.
14893
14894 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14895
14896         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14897         inflated class instead of inflating them again.
14898         
14899         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14900         dynamic case.
14901
14902         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14903         Call setup_supertypes () after klass->parent is set.
14904         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14905
14906         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14907         for inflated instances of not yet created dynamic generic classes.
14908         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14909         times from inflated_method.
14910         (methodbuilder_to_mono_method): Ditto.
14911
14912 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14913
14914         * gc.c: code cleanup and removed old untested option of not creating the
14915         finalizer thread.
14916
14917 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14920         creating a jump trampoline for dynamic methods.
14921
14922 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14923
14924         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14925         generic TypeBuilders when called from another method of the same type (bug #335131).
14926
14927
14928 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14929
14930         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14931         doesn't seem to work perfectly.
14932         
14933         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14934         called multiple times.
14935         (methodbuilder_to_mono_method): Ditto.
14936         (resolve_object): Inflate FieldBuilder's.
14937
14938 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14939
14940         * string-icalls.c, string-icalls.h, appdomain.c: patch from
14941         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
14942         RemoveEmptyEntries in the string.Split implementation (bug #322375).
14943
14944 2007-10-26  Dick Porter  <dick@ximian.com>
14945
14946         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
14947         Thread initialisation changes
14948
14949 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
14950
14951         * verify.c: fix compatibility check between arrays and System.Array
14952
14953 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
14954
14955         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
14956         too. Fixes #336999.
14957
14958 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14959
14960         * object.c (mono_value_box): Use typed allocation here.
14961
14962 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14963
14964         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
14965         trampoline instead of compiling the method right away.
14966
14967         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
14968
14969 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
14972         related fields for dynamic classes. Fixes #334493.
14973
14974 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
14975
14976         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
14977         
14978         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
14979
14980         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
14981         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
14982
14983         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
14984
14985         * reflection.c (create_generic_typespec): Initialize klass->generic_container
14986         if needed.
14987         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
14988
14989 2007-10-18  Jonathan Chambers <joncham@gmail.com>
14990
14991         * marshal.c: Use correct key when removing item
14992         from ccw_hash.
14993         
14994         Code is contributed under MIT/X11 license.
14995
14996 2007-10-17  William Holmes  <billholmes54@gmail.com>
14997
14998         *marshal.c: Adding a case to marshal booleans to U1
14999
15000         Code is contributed under MIT/X11 license.
15001
15002 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * class.c (mono_class_from_name): Search the modules compromising dynamic
15005         assemblies. Fixes #331601.
15006
15007 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
15008
15009         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
15010         exception if the type name contains an assembly component. Fixes #334203.
15011
15012         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
15013         modules inside dynamic assemblies. Fixes #334200.
15014         
15015         * reflection.c: Set image->public_key and image->public_key_length;
15016
15017         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
15018         fields.
15019
15020         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
15021         
15022 2007-10-16  Mark Probst  <mark.probst@gmail.com>
15023
15024         * metadata.c: Implemented correct comparing of generic classes.
15025         An inflated generic class can be equal to a non-inflated one if it
15026         is inflated with generic type variables as type arguments.  Fixes
15027         bug #333798.
15028
15029 2007-10-15  Dick Porter  <dick@ximian.com>
15030
15031         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
15032         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
15033         81646.
15034
15035         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
15036         instead of a monitor lock.  This means that monitor_try_enter and
15037         co can set the thread state safely.
15038         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
15039         thread_interrupt_requested, so interrupt actually works.
15040
15041         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
15042         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
15043         state accessor function
15044
15045 2007-10-15  Martin Baulig  <martin@ximian.com>
15046
15047         * mono-debug.h
15048         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
15049         the debugger with the current runtime.
15050
15051 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15052
15053         * object.c, object-internals.h: added the ability to set a single
15054         trampoline for all the slots in a vtable.
15055
15056 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15057
15058         * marshal.c: deal with a possible race condition during multicast
15059         delegate invocation.
15060
15061 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15062
15063         * class.c: ensure value type methods don't have the synchronized
15064         flag set.
15065
15066 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
15067
15068         * string-icalls.c, string-icalls.h: reverted unapproved patch that
15069         breaks the build.
15070
15071 2007-10-11  Joel Reed  <joelwreed@comcast.com>
15072
15073         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
15074         to take an options parameter so that empty entries can be removed during
15075         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
15076
15077 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15078
15079         * marshal.c: make sure we don't store the signature from a dynamic
15080         method into the runtime invoke cache (bug #327189).
15081
15082 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15083
15084         * marshal.c: make sure the wrapper methods are properly initialized.
15085
15086 2007-10-11  Mark Probst  <mark.probst@gmail.com>
15087
15088         * metadata.c, metadata-internals.h: Generalized
15089         mono_type_stack_size() to mono_type_stack_size_internal() which
15090         takes an additional argument specifying whether it allows open
15091         types.
15092
15093 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
15094
15095         * verify.c (do_invoke_method): handle typedbyref params
15096         correctly and check for unverifiable return values.
15097
15098         * verify.c (do_newobj): fix a warning.
15099
15100 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15101
15102         * verify.c: don't tread typedbyref as allways unverifable,
15103         so uses, like (ld/st)loc.0 are valid. verify for the cases
15104         that it matters, like boxing related operations.
15105
15106 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15107
15108         * verify.c: add verification of the newobj opcode. verification
15109         of delegate instantation still missing due ldftn and virldftn not
15110         pushing the function type on stack
15111
15112 2007-10-08  Mark Probst  <mark.probst@gmail.com>
15113
15114         * class-internals.h: Runtime generic context data structure
15115         definition.
15116
15117         * object.c: Initialization of runtime generic context at runtime
15118         vtable creation time.
15119
15120 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
15121         * class.c (mono_class_create_from_typedef,
15122         mono_class_from_generic_parameter, mono_ptr_class_get,
15123         mono_fnptr_class_get, mono_bounded_array_class_get)
15124         * domain.c (mono_domain_create, mono_domain_free)
15125         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
15126         * image.c (do_mono_image_load, mono_image_close):
15127         Hooked up load-unload profiler events.
15128
15129 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15130
15131         * domain.c: track statistics about the actual amount of native code
15132         allocated.
15133
15134 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15135
15136         * class.c: the valuetype enumerators don't have the additional
15137         supertypes interfaces.
15138
15139 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15140
15141         * class.c: need more interfaces setup for the IEnumerator<T>
15142         object created for arrays (tests/ienumerator-interfaces.2.cs).
15143
15144 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
15145
15146         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
15147
15148 2007-10-05  Alp Toker  <alp@atoker.com>
15149
15150         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15151         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15152         #315863.
15153
15154 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15155
15156         * verify.c (verify_type_compatibility_full): verification of
15157         compatibility improved, validates correctly non-strict checks between
15158         native int and I4 types different than (unsigned)int32.
15159
15160         * verify.c (do_store_indirect): added, do all verification of
15161         ldind.X opcodes. 
15162
15163         * verify.c (get_load_indirect_mono_type): renamed to
15164         get_indirect_op_mono_type, as it now returns the MonoType for 
15165         ldind.X and stind.X opcodes.
15166
15167 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15168
15169         * reflection.c: Fix the encoding of generic type definition for
15170         TypeBuilders.
15171
15172         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15173         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15174         be made. Typespec check is done prior to typeref cache lookup.
15175
15176         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15177         mono_image_typedef_or_ref_full.
15178
15179         * reflection.c (encode_generic_class): encode the generic class
15180         directly instead of calling encode_type.
15181
15182         * reflection.c (encode_type): encode the generic type definition
15183         MonoClass as a generic instantiation.
15184
15185         * reflection.c (create_typespec): cache typespec tokens in
15186         the assembly->typespec cache. Don't create typespec for a generic
15187         instance MonoClass. Create typespec for the generic type defintion.
15188
15189         * reflection.c (create_generic_typespec): encode the generic
15190         class directly instead of calling encode_type.
15191
15192         * reflection.c (mono_image_create_token): encode the generic
15193         type definition not using a typespec for MonoType instances.
15194
15195
15196 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15197
15198         Fix #328812
15199         * class.c (mono_image_init_name_cache): Don't return nested
15200         'protected internal' classes.
15201         (mono_class_from_name_case): Likewise.
15202
15203 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15204
15205         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15206           common function used by both DefaultConfig in System.dll and
15207           InternalConfigurationHost in System.Configuration.dll.
15208
15209 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15210
15211         * class.c: automatically add to vectors only a few essential explicit
15212         generic interfaces. The rest of the interfaces that arrays should
15213         provide are currently implicitly added (but still not lazily, see the
15214         design in the discussion of bug#325495 for the details of what is
15215         needed for that). Additionally, implicit interfaces are assigned the
15216         same vtable slot as the explicit interfaces (as they are compatible):
15217         this enables huge memory savings since we don't need to instantiate
15218         as many memthods and as large vtables anymore. Also, Since
15219         GetEnumerator<T> returns an instance of a type that is required to
15220         support a similarly large set of interfaces as arrays, we add
15221         implicit interfaces and interface offset sharing support to those
15222         types, too. This change adds all the required interfaces so that
15223         the anonarray.cs test case in the bug report works (we don't add
15224         all the interfaces to arrays of arrays 3-level deep and more because
15225         of the memory requirements explained in the bug and since they are much
15226         less common: the lazy-loading support will enabled them to work, too).
15227
15228 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15229
15230         * verify.c (merge_stacks): major clean up, all type compatibility
15231         checks are done by verify_type_compatibility. This fix my earlier lack
15232         of understanding of the CLR type system and merge_stacks no longer looks
15233         scary.
15234
15235         * verify.c: fixed some bad spelling.
15236
15237 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15238
15239         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15240         a given stack slock.
15241         
15242         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15243         verify_type_compatibility_full. This removed a near indentical function and fixed
15244         handling of Int32 and IntPtr across all opcodes.
15245
15246 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15247
15248         * class.c: only vectors have the additional generic interfaces.
15249
15250 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15251
15252         * mono-config.c: Use g_strcasecmp instead of
15253         strcasecmp like everywhere else to fix
15254         compilation with MSVC.
15255         
15256         Code is contributed under MIT/X11 license.
15257
15258 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15259
15260         * object.c, object-internals.h: refactored the IMT code to enable
15261         building a single slot at a time and lazily creating the IMT trampolines
15262         and thunks.
15263
15264 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15265
15266         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15267
15268         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15269         Fixes #328501.
15270         
15271 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15272
15273         * loader.c (method_from_methodspec): Rearrange to avoid
15274         un-necessary exposition.  Don't assert out if the method's
15275         declaring type is a generic type definition.
15276
15277 2007-09-28  Martin Baulig  <martin@ximian.com>
15278
15279         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15280
15281 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15282
15283         * class-internals.h: optimize field layout of MonoClass to
15284         requires less cachelines at runtime and save a few bytes on 64 bit
15285         systems.
15286
15287 2007-09-28  Jb Evain  <jbevain@novell.com>
15288
15289         * reflection.c: when encoding type names in custom attributes,
15290         if the type is a closed generic type, its generic arguments
15291         have to be serialized as AssemblyQualifiedName, so that when
15292         they are deserialized, it's possible to re-create them properly.
15293         Fixes #329450.
15294
15295
15296 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15297
15298         * object.c, class-internals.h: added delegate-creation counter.
15299
15300 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15301
15302         * class.c: cleanup of the code that synthetizes interfaces for
15303         arrays in 2.0: saves quit a bit of corlib mempool memory.
15304         Code to fix bug #325495 ifdeffed out for now until the issues
15305         with memory usage and O(n^2) behaviour are fixed.
15306
15307 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15308
15309         * marshal.c: when possible, do not duplicate the name of the methods
15310         in the method builder and in the generated MonoMethod.
15311
15312 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15313         * verify.c: added support for type checking ldind_* opcodes.
15314
15315 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15316
15317         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15318         which is used to distinguish the fully open instantiation of a TypeBuilder
15319         with the rest. This temporary hack is required to restore the property that
15320         the fully open instantiation is the same type of the generic type definition.
15321
15322         * class-internals.h (mono_generic_class_is_generic_type_definition):
15323         new function as part of the internal API.
15324
15325         * class.c (inflate_generic_type): return NULL when the generic inst is
15326         fully open. The fully open generic type is now the same as the generic type
15327         definition for non TypeBuilder types.
15328
15329         * class.c (mono_generic_class_get_class): removed assert since it is
15330         no longer valid, gklass->cached_class can point to the generic type definition.
15331
15332         * class.c (mono_generic_class_is_generic_type_definition): new.
15333
15334         * metadata.c (mono_generic_class_hash): added is_tb_open field
15335         to the hash calculation.
15336
15337         * metadata.c (free_generic_class): if the generic class is associated
15338         with the generic type definition, its field will come from the mempool and
15339         must not be freed.
15340
15341         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15342         new, this function identifies the corner case of a TypeBuilder fully open
15343         instantiation.
15344
15345         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15346         for lookup. Set gclass->cached_class to be the container class in case of
15347         the fully open instantiation of non TypeBuilder types.
15348
15349         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15350         to compare generic classes.
15351
15352         * reflection.c (method_encode_methodspec): remove assert that
15353         no longer is valid.
15354
15355         * reflection.c (mono_reflection_generic_class_initialize): add
15356         an aditional assert to ensure the proper type is used.
15357
15358 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15359
15360         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15361         to enjoy it.
15362
15363 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15364
15365         * verify.c (push_arg): Fixed support for ldarga
15366         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15367         MonoType used as first arg in case of instance calls.
15368
15369 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15370
15371         * verify.c: Support for verifying VAR and MVAR types, 
15372
15373 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15374
15375         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15376         accessors correctly.
15377
15378 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15379
15380         * threads.c: support OSX and other systems in
15381         mono_thread_get_stack_bounds (bug #328026).
15382
15383 2007-09-25  Martin Baulig  <martin@ximian.com>
15384
15385         * mono-debug.h
15386         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15387
15388 2007-09-24  Martin Baulig  <martin@ximian.com>
15389
15390         * mono-debug.h
15391         (MonoDebugClassEntry): Moved the definition of this struct into
15392         mono-debug.c to make it private.
15393
15394         * mono-debug.c
15395         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15396         type table per symbol file, we don't need to store the symfile id
15397         any longer.
15398
15399 2007-09-24  Martin Baulig  <martin@ximian.com>
15400
15401         Create one type table per symbol file, since a `MonoClass *' gets
15402         invalid when its image is unloaded.
15403
15404         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15405         (MonoDebugHandle): Added `type_table'.
15406
15407 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15408
15409         * mempool.c, mempool.h: added mono_mempool_new_size () API
15410         to be able to specify a smaller initial size for the pool.
15411         Adjusted the code to slowly increase pool size before using
15412         the previous default size.
15413         * image.c: use a small initial size for image mempools.
15414
15415 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15416
15417         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15418         Fixes ##320990.
15419
15420         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15421         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15422
15423 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15424
15425         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15426         free. Fixes #327438.
15427
15428 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15429
15430         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15431         generic instantiations, etc.
15432         <MONO_TYPE_ARRAY>: Likewise.
15433
15434 2007-09-21  Martin Baulig  <martin@ximian.com>
15435
15436         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15437         these structs were never defined.
15438         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15439
15440 2007-09-21  Martin Baulig  <martin@ximian.com>
15441
15442         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15443
15444 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15445
15446         * image.c: removed the guid hash tables: we can get the same info
15447         without the additional memory usage hit (partially fixes also bug #327052).
15448
15449 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15450
15451         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15452         event to handle unloading methods. After the event is called, the
15453         corresponding MonoMethod* must be considered invalid.
15454         * loader.c (mono_free_method): call the new mono_profiler_method_free
15455         event.
15456
15457 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15458
15459         * domain-internals.h: New flag in MonoJitInfo which marks shared
15460         generic methods.  New hash table (shared_generics_hash) in
15461         MonoDomain to keep track of shared generic methods.  Prototypes
15462         for functions to register and lookup shared generic methods.
15463
15464         * domain.c: Support for registering and looking up shared generic
15465         methods via a hash table (shared_generics_hash) in MonoDomain.
15466
15467         * class-internals.h: New exception to signal failure of shared
15468         compilation of a generic method.  New counters for generics
15469         sharing in MonoStats.
15470
15471 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15472
15473         * image.c, metadata-internals.h: don't keep a file descriptor open
15474         for loaded assemblies (bug#325988).
15475
15476 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15477
15478         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15479         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15480         use the corresponding datatypes.
15481         (type_in_image): Update to changes.
15482         (CleanForImageUserData): Simplify.
15483         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15484         Avoid quadratic behaviour in handling the "stolen" list by
15485         separating the filter predicate out, and by prepending the stolen
15486         items rather than appending them.
15487         (steal_ginst_in_image): Likewise.
15488         (mono_metadata_clean_for_image): Update to changes.
15489
15490 2007-09-19  Martin Baulig  <martin@ximian.com>
15491
15492         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15493
15494 2007-09-19  Martin Baulig  <martin@ximian.com>
15495
15496         * mono-debug.c (mono_debug_cleanup): Don't call
15497         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15498
15499 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15500
15501         Fix crash on 'make run-test' in mcs/errors
15502         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15503         Avoid more potential allocations in mono_class_from_mono_type.
15504         (ginst_in_image): Update to changes.
15505         (gclass_in_image): Rearrange slightly.
15506
15507 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15508
15509         * class.c (mono_class_init): Move the code that sets up class->methods to 
15510         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15511
15512         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15513         canonical instance of an inflated generic signature.
15514         (mono_type_create_from_typespec): Remove an invalid free.
15515
15516         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15517
15518 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15519
15520         * domain-internals.h: added a declaration of the
15521         mono_assembly_load_full_nosearch internal function.
15522
15523         * assembly.c (mono_assembly_load_with_partial_name): use
15524         mono_try_assembly_resolve return value properly.
15525         (mono_assembly_load_full_nosearch): copied the function body from
15526         mono_assembly_load_full, without the code to invoke assembly
15527         search hooks.
15528         (mono_assembly_load_full): calls the above new function and if the
15529         assembly is not resolved, invokes the search hooks.
15530
15531         * appdomain.c (mono_runtime_init): restore the global postload
15532         assembly search handlers.
15533
15534 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * class.c (mono_class_init): Make sure class->methods and class->properties
15537         are never NULL in the generics case.
15538
15539         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15540
15541 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15542
15543         * metadata.c (free_generic_class): Disable some code to fix the build.
15544
15545         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15546
15547         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15548         from the image mempool.
15549
15550         * metadata.c (free_generic_class): Free more data from the inflated class.
15551
15552         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15553
15554         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15555         mempool.
15556         (mono_type_create_from_typespec): Ditto.
15557
15558         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15559         MonoImage to the caller.
15560         (mono_init_internal): Save the opened image in a global variable.
15561         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15562
15563         * reflection.c (resolve_object): Fix a leak.
15564
15565         * metadata.c: Fix the freeing of data in the generics caches.
15566         
15567         * metadata.c (free_generic_inst): Comment this out to fix the build.
15568         (free_generic_class): Ditto.
15569
15570         * metadata.c: Free cached generic methods, instantinations and classes when
15571         they are removed from the caches.
15572         (mono_metadata_free_type): Free the type itself.
15573
15574         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15575         places.
15576
15577 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15578
15579         * boehm-gc.c: restrict managed allocs to __thread supporting
15580         architectures.
15581
15582 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15583
15584         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15585         (mono_generic_class_get_class): Fix a leak.
15586
15587         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15588         mono_metadata_free_type ().
15589         (mono_metadata_inflate_generic_inst): Fix a leak.
15590
15591 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15594
15595         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15596         mempool.
15597
15598         * mono-debug.c (mono_debug_close_image): Fix call to 
15599         g_hash_table_remove ().
15600
15601 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15602
15603         * icall-def.h: redirect all the string ctor to the managed
15604         CreateString () methods.
15605         * string-icalls.c, string-icalls.h: removed dead code for string
15606         ctors and icalls.
15607
15608 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15609
15610         * mono-debug.c: Fix memory leaks.
15611
15612 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15613
15614         * threads-types.h: Implement mono_hazard_pointer_set and 
15615         mono_hazard_pointer_clear macros using do/while(0) to fix
15616         compilation with MSVC.
15617         
15618         Code is contributed under MIT/X11 license.
15619
15620 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15621
15622         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15623         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15624
15625 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15626
15627         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15628         icalls.
15629
15630 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15631
15632         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15633         managed-code allocated as well.
15634
15635 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15638
15639 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15640
15641         * boehm-gc.c: fixed the build after the AOT changes.
15642
15643 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15644
15645         * wrapper-types.h: Add an ALLOC wrapper type.
15646
15647         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15648         reference managed allocator methods.
15649
15650 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15651
15652         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15653         of Type array and not MonoType, a fix suggested by Hari.
15654         
15655 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15656
15657         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15658         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15659         
15660         Code is contributed under MIT/X11 license.
15661
15662 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15663
15664         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15665
15666 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15667
15668         * image.c (do_mono_image_open): if assembly file fails to open and
15669         MONO_IOMAP is in effect, try to find the path in a
15670         case-insensitive way.
15671
15672         * appdomain.c (mono_runtime_init): do not install postload hooks -
15673         tests show that MS.NET doesn't use anything of that sort to
15674         trigger the AppDomain.AssemblyResolve event.
15675         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15676         made non-static.
15677         (mono_runtime_init): init portability helpers here.
15678
15679         * assembly.c (mono_assembly_load_with_partial_name): if other   
15680         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15681         to resolve the assembly.
15682
15683         * domain-internals.h: added mono_try_assembly_resolve and marked
15684         it as internal.
15685
15686 2007-09-11  Jb Evain  <jbevain@novell.com>
15687
15688         * object-internals.h (MonoReflectionDynamicMethod): add
15689         a `MonoReflectionType *owner` field. The owner is used
15690         * reflection.c:
15691         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15692         method as the class declaring the dynamic method.
15693         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15694         dynamic method to the declaring type of the methodbuilder.
15695
15696 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15697
15698         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15699         rules for calling methods via reflection.
15700
15701 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15704         Inflate MonoType's.
15705
15706 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15707
15708         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15709         provide a managed method that does fast allocations without needing
15710         a managed->unmanaged transition. Boehm GC implementation currently
15711         enabled for ptrfree objects on sane architectures.
15712
15713 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15714
15715         * marshal.c, marshal.h: exported a couple of useful functions and
15716         added mono_mb_get_label () to easily handle backward branches.
15717
15718 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15719
15720         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15721
15722 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15723
15724         * loader.c (find_method): Fixed the regression introduced while
15725         fixing bug #81466.
15726
15727 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15728
15729         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15730         well.
15731         
15732         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15733         icall.c reflection.c: Pass a MonoGenericContext argument to 
15734         mono_lookup_dynamic_token ().
15735
15736         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15737         #82744.
15738         
15739 2007-09-09  Robert Jordan  <robertj@gmx.net>
15740
15741         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15742         for generic methods.
15743
15744         * object.c (mono_object_get_virtual_method): Handle generic methods.
15745         Fixes bug #78882.
15746
15747         Code is contributed under MIT/X11 license.
15748
15749 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15750
15751         * image.c: fix locking in mono_image_load_file_for_image ().
15752
15753 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15754
15755         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15756         used only as a cache: added an icall to fill it.
15757
15758 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15759
15760         * reflection.h: exposed mono_reflection_free_type_info
15761         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15762         since mono_reflection_bind_generic_parameters makes a copy of it.
15763         * reflection.c (free_type_info): subinfos should be freed.
15764         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15765         made non static.
15766         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15767         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15768         this fixes #82695 and #81726.
15769    
15770
15771 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15772
15773         * process.h, process.c:  added support for user profile/info in
15774           ProcessStartInfo. For now only Windows works.
15775
15776 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15777
15778         * metadata.c: consider the generic arguments when comparing
15779         signatures (bug #82614).
15780
15781 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15782
15783         * cil-coff.h, image.c: updated assembly loader to cope with the
15784         PE32+ 64 bit file format.
15785
15786 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15787
15788         * assembly.c, class.c, domain.c, loader.c: remove useless
15789         inclusion of cil-coff.h.
15790
15791 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15792
15793         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15794         if interface is marked with CoClassAttribute. 
15795    
15796         Code is contributed under MIT/X11 license.
15797
15798 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15799
15800         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15801         if it's seen twice in major collections.
15802
15803 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15804
15805         * sgen-gc.c: big objects are not copied to the gray area, but they
15806         need to be considered for scanning, too, if they are brought alive
15807         by an object ready for finalizations or a survived one.
15808
15809 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15810
15811         * sgen-gc.c: properly account the number of disappearing links when
15812         they are nullified.
15813
15814 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15815
15816         * sgen-gc.c: share the code to scan the registered roots between the
15817         different types of collections.
15818
15819 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15820
15821         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15822
15823 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15824
15825         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15826         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15827
15828 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15829
15830         * security-manager.c (mono_security_manager_get_methods):
15831         LinkDemandSecurityException now has 2 arguments instead of 3.
15832
15833 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15834
15835         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15836         platforms which need it.
15837
15838 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15839
15840         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15841         dtor.
15842
15843 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15844
15845         * threads.c: free the thread static data on thread exit.
15846
15847 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15848
15849         * class.c: walk the hierarchy to find the generic definition for
15850         a class (fixes runtime part of bug #82498).
15851
15852 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15853
15854         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15855         ...
15856
15857         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15858
15859 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15860
15861         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15862
15863 2007-08-24  Robert Jordan  <robertj@gmx.net>
15864
15865         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15866
15867 2007-08-24  Jb Evain  <jbevain@novell.com>
15868
15869         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15870         for byref types.
15871
15872 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15873
15874         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15875         #82286.
15876
15877 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15878
15879         * assembly.c: Fix a warning.
15880         
15881 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15882
15883         * appdomain.c: parse the <runtime> section looking for the probing
15884         element with the 'privatePath' attribute, which sets additional
15885         directories in which the runtime should look for assemblies.
15886
15887 2007-08-23  Robert Jordan  <robertj@gmx.net>
15888
15889         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15890         Fixes #82499.
15891
15892 2007-08-23  Martin Baulig  <martin@ximian.com>
15893
15894         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15895         _mono_debug_init_corlib() and remove it from the header file.
15896
15897 2007-08-23  Martin Baulig  <martin@ximian.com>
15898
15899         * mono-debug-debugger.c
15900         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15901         don't notify the debugger about it.
15902
15903         * mono-debug-debugger.h
15904         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15905
15906 2007-08-23  Robert Jordan  <robertj@gmx.net>
15907
15908         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15909         Code is contributed under MIT/X11 license.
15910
15911 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15912
15913         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15914
15915 2007-08-22  Martin Baulig  <martin@ximian.com>
15916
15917         * mono-debug.c: Store debugging info on a per-domain basis and
15918         free it on domain unload.  Add support for unloading symbol files.
15919
15920         * mono-debug.h
15921         (MonoDebugList): New typedef.
15922         (MonoSymbolTable):
15923         - add `data_tables and `type_table'.
15924         - replace 'symbol_files' and `num_symbol_files' with a
15925           `MonoDebugList *'.
15926         (mono_debug_data_table): Removed.
15927         (mono_debug_list_add): New public function.
15928         (mono_debug_list_remove): New public function.
15929         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15930         (mono_debug_init_2_memory): Renamed into
15931         mono_debug_open_image_from_memory().
15932         (mono_debug_close_image): New public function.
15933         (mono_debug_domain_create): Likewise.
15934         (mono_debug_domain_unload): Likewise.
15935         (MONO_DEBUGGER_VERSION): Bump to 60.
15936
15937         * mono-debug-debugger.h
15938         (MonoDebuggerEvent):
15939         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15940         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
15941         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
15942         - rename `THREAD_CREATED' and `THREAD_EXITED' into
15943           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
15944         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
15945           meaning.
15946         (mono_debugger_add_symbol_file): Removed.
15947         (mono_debugger_add_type): Removed.
15948         (mono_debugger_lookup_type): Removed.
15949         (mono_debugger_lookup_assembly): Removed.
15950
15951         * domain.c
15952         (mono_domain_create): Call mono_debug_domain_create().
15953         (mono_init_internal): Call mono_debug_init_corlib().
15954
15955         * assembly.c
15956         (mono_assembly_close): Call mono_debug_close_image().
15957
15958 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15959
15960         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
15961         mmap call.
15962
15963 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
15964
15965         * sgen-gc.c: ensure section->pin_queue_end is initialized
15966         correctly when non pinning objects in the section have been found.
15967
15968 2007-08-22  Marek Habersack  <mhabersack@novell.com>
15969
15970         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
15971         containing a list of directories separated by ':'. MSDN docs say
15972         the directories should be separated with ';'. Part of a bugfix for
15973         bug #81446
15974
15975 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
15976
15977         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
15978         it should MonoType and not MonoClass.
15979
15980 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
15981
15982         * culture-info-table.h : regenerated.
15983
15984 2007-08-20  William Holmes  <billholmes54@gmail.com>
15985
15986         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
15987          to call ReplaceFile Kernel32 on windows or in io-layer.
15988         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
15989         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
15990          as an internal call.
15991
15992         Code is contributed under MIT/X11 license.
15993
15994 2007-08-20  Jb Evain  <jbevain@novell.com>
15995
15996         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
15997         and MONO_EXCEPTION_FIELD_ACCESS.
15998
15999         * debug-helpers.[c|h]: new mono_field_full_name function.
16000
16001 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16002
16003         * class.c: Removed class_security_level() and moved it to
16004         security-core-clr.c.
16005
16006         * security-core-clr.c, security-core-clr.h: class_security_level()
16007         is now public and renamed to mono_security_core_clr_class_level().
16008         It also looks for security attributes in the classes a class is
16009         nested in.
16010
16011 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16012
16013         * security-core-clr.c, security-core-clr.h: CoreCLR security
16014         utility functions.
16015
16016         * Makefile.am: Added security-core-clr.[ch].
16017
16018         * security-manager.c, security-manager.h: Functions and enum for
16019         setting and getting the security mode.
16020
16021         * class.c: CoreCLR security checks.
16022
16023 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
16024
16025         * icall-def.h, process.c, process.h: implemented icall to get
16026         user/system processor times.
16027
16028 2007-08-17  Mark Probst  <mark.probst@gmail.com>
16029
16030         * domain.c, threads.c, class-internals.h, domain-internals.h: New
16031         reader-lock-free jit_info_table.
16032
16033 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
16034
16035         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
16036
16037         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
16038
16039         * object-internals.h (MonoException): Add missing _data member.
16040
16041 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16042
16043         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
16044         checking that only methods with matching qname or fqname are picked
16045         from implemented interfaces.
16046
16047 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16048
16049         * verify.c (do_newarr):added, do type verification of
16050         newarr ops, push the right value on the eval stack.
16051         * verify.c (mono_method_verify): use do_newarr
16052
16053
16054 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16055
16056         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
16057         factored the common code into get_boxable_mono_type, which
16058         is now using mono_type_get_full, this fixed byref related tests.
16059
16060 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16061
16062         * class.c: added mono_type_get_full, this function has the same
16063         behavior of mono_class_get_full but the returned MonoType has
16064         all metadata of the associated token in case of a typespec token.
16065         * class.c: added mono_type_retrieve_from_typespec, used by 
16066         mono_type_get_full to retrieve the token type.
16067         * class.c (mono_class_create_from_typespec): changed to use
16068         mono_type_retrieve_from_typespec.
16069         * class.c (mono_ldtoken): changed to use mono_type_get_full
16070         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
16071         * class-internals.h: exported mono_type_get_full for internal use.
16072
16073 2007-08-16  Jb Evain  <jbevain@novell.com>
16074
16075         * domain.c (supported_runtimes): add entry for
16076         the 'moonlight' runtime version.
16077
16078 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16079
16080         * verify.c (mono_method_verify): small typo sliped in.  
16081
16082 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16083
16084         * verify.c (do_unbox_value): added, do type verification of
16085         unboxing ops
16086         * verify.c (mono_method_verify): use do_unbox_value
16087
16088
16089 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16090
16091         * verify.c (dump_stack_value): fixed typo, was printing string
16092         instead of object on stack.
16093         * verify.c (do_box_value): moved the byref check up as it leads
16094         to invalid code and should be done earlier.
16095         * verify.c: improved error messages for and ldobj
16096
16097 2007-08-15  William Holmes  <billholmes54@gmail.com>
16098
16099         * marshal.c (emit_marshal_custom): Omit the call to 
16100           marshal_native_to_managed when calling native to managed 
16101           and the argument is specified as an out argument.
16102
16103         Code is contributed under MIT/X11 license.
16104
16105 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16106
16107         * verify.c: fixed the type checks for generics, function pointers and vectors.
16108         Added type verification for ldobj and ldtoken. The verifier
16109         would segfault if header or signature of a method contained references
16110         to non-existant types.
16111
16112 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16113
16114         * marshal.c (cominterop_get_ccw): Patch from
16115         Bill Holmes to no walk up interface hierarchy. 
16116         All parent methods should be present in the interface for COM.
16117    
16118         Code is contributed under MIT/X11 license.
16119
16120 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16121
16122         * marshal.c (emit_marshal_com_interface): Patch from
16123         Bill Holmes to handle COM Interfaces as return values
16124         for native->managed calls.
16125    
16126         Code is contributed under MIT/X11 license.
16127
16128 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
16129
16130         * marshal.c (cominterop_get_idispatch_for_object): Implement
16131         for runtime callable wrappers.
16132    
16133         Code is contributed under MIT/X11 license.
16134
16135 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
16136
16137         * pedump.c (main): changed from mono_init to mono_init_from_assembly
16138         so 2.0 types are accessible
16139
16140
16141 2007-08-13  Miguel de Icaza  <miguel@novell.com>
16142
16143         * domain.c (mono_init_internal): Call mono_assembly_load_friends
16144         once we load mscorlib.   Due to the order in which we initialize,
16145         the mono_assembly_load_full routine that loads mscorlib did not
16146         load friends.   We now load it once we load the
16147         mono_defaults.internals_visible_class class. 
16148
16149         * assembly.c: Expose the mono_load_friend_assemblies method.
16150
16151 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
16152
16153         * verify.c: improved the handling of boxing, better
16154         type checking for unary ops and conversion. Fix bug
16155         regarding managed pointer compatibility checking
16156
16157 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16158
16159         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16160
16161         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16162
16163 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16164
16165         * reflection.c (dup_type): Remove.
16166         * class.c (dup_type): Remove.
16167         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16168         instead of the dodgy 'dup_type'.
16169         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16170         handle the case where 'dup_type' needed the second argument.
16171
16172 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16173
16174         * domain.c: Fix a warning.
16175
16176 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16177
16178         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16179         checking that methods with the same fqname are not overridden
16180         with a method from an ancestor.
16181
16182 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * threads.c (free_thread_static_data_helper): Avoid a crash if
16185         thread->static_data is not yet set.
16186
16187 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16188
16189         * marshal.c: Use correct image when emitting
16190         native wrapper for COM calls.
16191    
16192         Code is contributed under MIT/X11 license.
16193
16194 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16195
16196         * icall-def.h, security.c, security.h :
16197           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16198
16199 2007-08-07  Martin Baulig  <martin@ximian.com>
16200
16201         * mono-debug-debugger.h
16202         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16203
16204         * domain.c (mono_domain_free): Call
16205         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16206
16207 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16208
16209         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16210         * verify.c (in_same_block): code should test if either offset is inside the clauses
16211         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16212         and filter blocks
16213
16214 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16215
16216         * image.c (mono_image_close): Fix a leak.
16217
16218         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16219
16220         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16221
16222 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16223
16224         * domain.c, threads.c, threads-types.h: fix memory retention issue
16225         with thread static variables not being cleared on domain unload.
16226         Reuse thread static slots after domain unload.
16227
16228 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16229
16230         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16231         nullable type.
16232
16233         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16234         now done in mono_runtime_invoke_array.
16235
16236         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16237         receiver is a nullable type.
16238
16239         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16240         generic parameter.
16241
16242 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16243
16244         * marshal.c: Implement COM Objects as return type for 
16245         managed->unmanaged calls. Added Release calls for COM Object
16246         out/return values in managed->unmanaged calls.
16247
16248         Code is contributed under MIT/X11 license.
16249
16250 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16251
16252         * threads.h, threads-type.h: move the hazard pointer declarations
16253         to the private header.
16254
16255 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16256
16257         * file-io.c, appdomain.c: memory leak fixes.
16258
16259 2007-08-02  Dick Porter  <dick@ximian.com>
16260
16261         * socket-io.c
16262         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16263         SO_REUSEADDR setting into io-layer/sockets.c.
16264
16265 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16266
16267         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16268         from Object when called on a generic parameter. Fixes #82211.
16269
16270 2007-08-01  Dick Porter  <dick@ximian.com>
16271
16272         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16273         Fixes bug 79250 yet again.
16274
16275 2007-07-30  Martin Baulig  <martin@ximian.com>
16276
16277         Merged the `debugger-dublin' branch.
16278
16279         * mono-debug.h
16280         (MonoDebugDataTable): New typedef.
16281         (MonoDebugMethodAddressList): New typedef.
16282         (MonoDebugWrapperData): Removed.
16283         (MonoDebugSymbolTable): Removed `current_data_table',
16284         `current_data_table_size', `current_data_table_offset'.
16285         (MonoDebugDataItemType): Moved into mono-debug.c.
16286         (MonoDebugMethodJitInfo): Remove `address'.
16287         (mono_debug_data_table): New global variable.
16288         (mono_debug_lookup_method_addresses): New public function.
16289         (mono_debug_find_method): Take a `MonoMethod *', not a
16290         `MonoDebugMethodInfo *'.
16291
16292         * mono-debug.c: Drop support for the old symbol tables.
16293
16294 2007-06-28  Martin Baulig  <martin@ximian.com>
16295
16296         * mono-debug.c (mono_debug_debugger_version): New public variable.
16297
16298 2007-07-31  William Holmes  <billholmes54@gmail.com>
16299
16300         * metadata.c Changed mono_type_create_from_typespec to not insert
16301           the type into the hash map until after
16302           do_mono_metadata_parse_type has completed.
16303         Fixes Bug #82194
16304         Code is contributed under MIT/X11 license.
16305
16306 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16307
16308         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16309         generic parameter. Fixes #82211.
16310
16311 2007-07-27  Jb Evain  <jbevain@novell.com>
16312
16313         * pedump.c (dump_metadata, dump_metadata_header): dump
16314         versions contained in the metadata header.
16315
16316 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16317
16318         * threads.c: register small_id_table with the GC.
16319
16320 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16321
16322         * threads.c, threads.h, class-internals.h, object-internals.h:
16323         Hazard pointers, to be used by lock-free parallel algorithms.
16324
16325 2007-07-26  Dick Porter  <dick@ximian.com>
16326
16327         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16328         routine on non-windows platforms, as I've not managed to think of
16329         a non-kludgy way of doing this.  Finishes off bug 78739.
16330
16331 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16332
16333         * object.c: properly setup interface_bitmap in proxy vtables.
16334
16335 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16336
16337         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16338         to create unique shadow copy target directories, use the domain's
16339         serial number instead. Each domain gets a unique target directory
16340         that way.
16341
16342         * domain.c (mono_domain_create): added code to increment domain
16343         shadow copy serial number and cache the value in the current
16344         domain structure.
16345
16346         * domain-internals.h (struct _MonoDomain): added a new field -
16347         shadow_serial to hold the serial number used in generation of
16348         shadow-copy directories. This is to make sure that the directory
16349         name is unique for each and every domain created. We avoid a race
16350         condition with overriding assemblies already in use by other app
16351         domains.
16352
16353 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16354
16355         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16356         binding generic parameters.
16357
16358 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16359
16360         * metadata.c (do_mono_metadata_parse_generic_class): Use
16361         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16362         error.
16363
16364 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16365
16366         * loader.c, class-internals.h, reflection.c: removed the per-method
16367         generics hashtable: we use the global one through the call of
16368         mono_class_inflate_generic_method ().
16369
16370 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16371
16372         * class.c, metadata.c, class-internals.h: introduce yet another
16373         generics global cache for inflated methods (fixes 98% of the perf
16374         issue in bug #81806).
16375
16376 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16377
16378         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16379         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16380         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16381         return a MonoGenericInst containing (a copy) of those types.
16382         (mono_metadata_inflate_generic_inst): Update to changes.
16383         (mono_metadata_parse_generic_inst): Likewise.
16384         (mono_get_shared_generic_inst): Likewise.
16385         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16386         (mono_reflection_bind_generic_method_parameters): Likewise.
16387         * metadata-internals.h: Likewise.
16388         * icall.c (free_generic_context): Kill.
16389         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16390
16391         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16392         mono_metadata_type_dup.
16393         * marshal.c (mono_mb_create_method): Likewise.
16394
16395         * metadata.c (mono_metadata_type_dup): Rename from
16396         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16397         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16398         * marshal.c, metadata-internals.h: Update to changes.
16399
16400 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16401
16402         * class.c: fixed a small leak for array classes and removed warning.
16403
16404 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16405
16406         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16407         Return 0x8000000 for return parameters. Fixes #82161.
16408
16409 2007-07-21  Marek Habersack  <grendello@gmail.com>
16410
16411         * appdomain.c (get_shadow_assembly_location): append the current
16412         ticks value to the path. Avoids overwriting the same assemblies by
16413         several threads at the same time.
16414
16415 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16416         and Raja R Harinath  <rharinath@novell.com>
16417
16418         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16419         Simplify slightly.
16420         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16421         property for testing if a method is a generic method definition.
16422
16423 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16424
16425         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16426
16427 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16428
16429         * verify.c: used function from private branch, reverted to the one in class.h 
16430
16431 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16432
16433         * verify.c: a typo slipped in and the code wont compile
16434
16435 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16436
16437         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16438         disabled box instruction as it is doing the wrong thing
16439         improved stack dump messages, now it is easier to debug type related issues
16440
16441
16442 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16443
16444         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16445
16446 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16447
16448         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16449         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16450         grouped with class and valuetype. This change will simply 
16451         the code as it should be handled just like unmanaged pointers.
16452
16453 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16454
16455         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16456
16457 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16458
16459         * verify.c: several stack merge issues fixed, reference comparisons now
16460         check the type size. strict type check now works correctly.
16461         added more uses of IS_MANAGED_POINTER macro.
16462         fixed issues pointed by running the test suite against .net.
16463         
16464
16465 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16466
16467         * class.c, loader.c, class-internals.h: Removed the
16468         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16469         defines.
16470
16471         * icall.c: Better error checking in some internal reflection
16472         methods.
16473
16474 2007-07-18  William Holmes  <billholmes54@gmail.com>
16475
16476         * filewatcher.c : removed unused variable 'filename' in 
16477           ves_icall_System_IO_FSW_SupportsFSW
16478
16479 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16480
16481         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16482         obsolete, removed.
16483
16484 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16485
16486         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16487         
16488         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16489
16490 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16491
16492         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16493         Implement generics support.
16494         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16495
16496         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16497         type_args and method_args arguments.
16498         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16499         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16500         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16501
16502 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16503
16504         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16505           It adds a rootimage parameter to mono_reflection_get_type_internal,
16506           adds new function mono_reflection_get_type_with_rootimage and use
16507           the rootimage to resolve the types instead of the current image
16508
16509 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16510
16511         * culture-info-table.h: Forgot to update after r78304.
16512
16513 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16514
16515         * class.c (mono_class_is_open_constructed_type)
16516         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16517
16518 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16519
16520         * class.c (mono_bounded_array_class_get):  method fails if used with
16521         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16522         avoiding calculating the size for such array as it cannot be instantiated.
16523         Fix bug #82015
16524
16525 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16526
16527         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16528         field.
16529         * metadata.c, reflection.c: Update to changes.
16530
16531 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16532
16533         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16534         mono_class_is_valid_enum, they are used to valide a enum when loading.
16535         * reflection.c: used new functions to throw TypeLoadException when and
16536         invalid enum is build with TypeBuilder. Fixes #82018
16537   
16538 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16539
16540         * object.c: forgot commit of mono_class_setup_methods () to access
16541         iface->methods.
16542         * object-internals.h: added a few more handy fields to
16543         MonoIMTCheckItem.
16544
16545 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16546
16547         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16548         iface->methods.
16549
16550 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16551
16552         * class-internals.h, object-internals.h, object.c: IMT-based
16553         interface invocation core from Massimiliano Mantione
16554         (massi@ximian.com) with a reworked arch-specific interface,
16555         bsearch implementation and a few bugfixes and memory savings by me.
16556
16557 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16558
16559         * class.c (mono_class_create_from_typedef): mono would segfault if 
16560         an enum did not have a __value field. It now throws a TypeLoadException
16561         for such cases. Fix bug #82022
16562
16563 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16564
16565         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16566
16567 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16568
16569         * class.c (mono_class_init): If a class is already inited but has
16570         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16571
16572 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16573
16574         * class.c: Properly handle the case of an unimplemented interface
16575         method.  Fixes: 81673.
16576
16577 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16578
16579         * class-internals.h, object.c: cleanup patch from massi: use
16580         MonoVTable->interface_bitmap since the vtable interfaces offset array
16581         is going away.
16582
16583 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16584
16585         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16586         GetMDStreamVersion icall instead.
16587
16588 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16589
16590         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16591         not use mono_dl_build_path() with a full library name: makes
16592         fallbacks to libgaim and libfam work.
16593
16594 2007-07-06  William Holmes  <billholmes54@gmail.com>
16595
16596         * assembly.c: Added a continue statement in probe_for_partial_name when
16597          parse_assembly_directory_name fails.  Fixes : 82002
16598
16599 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16600
16601         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16602         and added a verification  for TYPEDBYREF.
16603         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16604         make native int interchangeable with int32 and some small cleanup and formating.
16605         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16606         handle byref of byref.
16607         * verify.c (push_local): handle byref of byref.
16608         * verify.c (do_binop): invalid mix of values is unverifiable
16609         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16610         added visibility checks
16611         * verify.c (field related method): added visibility checks
16612         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16613
16614 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16615
16616         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16617         string.
16618
16619 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16620
16621         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16622
16623         * marshal.c (emit_marshal_string): When returning a string from managed code,
16624         allways make a copy even for unicode strings. Fixes #81990.
16625
16626 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16627
16628         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16629         of byref generic inst types (bug #81997).
16630
16631 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16632
16633         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16634         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16635
16636 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16637
16638         * marshal.c (emit_marshal_string): Add support for unicode strings in
16639         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16640
16641 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16642
16643         * verify.c: field load/store are now verified, missing only access checks now
16644
16645 2007-06-28  Martin Baulig  <martin@ximian.com>
16646
16647         * mono-debug.c (mono_debug_debugger_version): New public variable.
16648
16649 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16650
16651         * locales.c: When constructing DateTimeFormat or NumberFormat for
16652         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16653         MonoCultureInfo contructed from the current locale is always
16654         read-only and has UseUserOverride set to true. All MonoCultureInfo
16655         instances returned for GetCultures have both IsReadOnly and
16656         UseUserOverride set to true. Fixes part of bug #81930.
16657
16658 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16659
16660        * icall-def.h: Update System.__ComObject icalls
16661        * marshal.c: Avoid managed transition (and object creation)
16662        when looking up COM interface in RCW.
16663        * marshal.h: Ditto.
16664        
16665        Code is contributed under MIT/X11 license.
16666
16667 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16668
16669         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16670         to avoid crashes during assembly unloading.
16671
16672 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16673
16674         Fix MethodInfo.IsGenericMethodDefinition
16675         * reflection.c (mono_reflection_bind_generic_method_parameters):
16676         Rearrange code to ensure we always uses a generic method definition.
16677         * class.c (mono_class_inflate_generic_method_full): Set
16678         'generic_container' field only for generic method definitions.
16679         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16680         Use presense of 'generic_container' field as indication of being a
16681         generic method definition.
16682
16683 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16684
16685         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16686
16687         * object-internals.h: Reflect changes in the layout of the managed Delegate
16688         class.
16689         
16690         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16691         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16692         runtime memory used by the dynamic method. Fixes #77146.
16693
16694 2007-06-21  Dick Porter  <dick@ximian.com>
16695
16696         * file-io.h: 
16697         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16698         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16699         81767.
16700
16701 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16702
16703         * reflection.c (method_encode_methodspec): Add a tripwire.
16704         * class.c (inflate_generic_type): The fully open generic type is
16705         not the same as the generic type definition.
16706
16707 2007-06-21  Martin Baulig  <martin@ximian.com>
16708
16709         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16710
16711         * mono-debug-debugger.h
16712         (MonoDebuggerBreakpointInfo): Removed.
16713         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16714         (mono_debugger_remove_breakpoint): Likewise.
16715         (mono_debugger_breakpoint_callback): Likewise.
16716         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16717
16718 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16719
16720         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16721         generic type is not the same as the generic type definition.
16722         * class.c (mono_generic_class_get_class): Likewise.
16723
16724 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16725
16726         * icall.c: The second argument to 
16727         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16728         is a MonoType not a MonoClass.
16729
16730 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16731
16732         * verify.c: support for function pointers in the verifier
16733
16734 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16735
16736         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16737
16738 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16739
16740         * assembly.c: removed Mono.Data.SqliteClient from the list of
16741         forward-compatible assemblies as it breaks the ABI (bug #81899).
16742
16743 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16744
16745         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16746         lookup/update with the loader lock.
16747         * reflection.c (mono_class_bind_generic_parameters): No need to
16748         protect mono_metadata_lookup_* with the loader lock.
16749         * class.c (inflate_generic_type): Likewise.
16750         
16751         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16752         on a generic instantiated type.
16753
16754 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16755
16756         *verify.c: produce meanfull error messages on verification error
16757         *verify.c: fixed some cases of verification errors reported as validation errors
16758         *pedump.c: fixed the error name array, now it shows validation errors properly
16759         *verify.h: fixed the contant that should be used for verification errors
16760
16761 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16762
16763         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16764         for bug #77596, 81858 and 80743 (generics data structures on domain
16765         unload).
16766
16767 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16768
16769         Avoid allocating 'MonoGenericContext' on the heap.
16770         * class-internals (_MonoMethodInflated::context): Make field
16771         inline, not a pointer.
16772         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16773         stack.  Use the context embedded within the inflated method as the
16774         hash key, rather than 'new_context'.
16775         * class.c (inflate_generic_context): Simplify.  Return a struct
16776         rather than allocating on the heap.
16777         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16778         doesn't salt away a copy of the context -- simplifying the
16779         lifetime rules of a 'MonoGenericContext *'.
16780         (mono_method_get_context): Return pointer to embedded context.
16781         (setup_generic_array_ifaces): Allocate temporary context on stack.
16782         * reflection.c (inflate_mono_method): Likewise.
16783         (mono_reflection_bind_generic_method_parameters): Likewise.
16784         Use the context embedded within the inflated method as the hash key.
16785
16786         Avoid a source of allocation of 'MonoGenericContext'.
16787         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16788         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16789         * class.c: Update to changes.
16790         (mono_generic_class_get_context): Simplify drastically.  Now just
16791         returns a pointer to the field.
16792         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16793         argument as a const pointer.
16794         (mono_metadata_generic_context_equal): Likewise.
16795         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16796         Update to changes.
16797
16798 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16799
16800         * verify.c improved the handling of brtrue/brfalse, factored out common code
16801
16802 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16803
16804         Kill MonoGenericMethod.
16805         * class-internals.h (MonoGenericContext::method_inst): Rename from
16806         'gmethod' and convert to a MonoGenericInst.
16807         (MonoGenericMethod): Remove.
16808         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16809         * loader.c (method_from_methodspec): Update to changes.  Use a
16810         MonoGenericContext as the key to the hashtable.
16811         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16812         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16813         (mono_metadata_generic_context_hash): Likewise from
16814         'mono_metadata_generic_method_hash'.  Change hash function.
16815         (mono_metadata_load_generic_params): Update to changes.
16816         (mono_get_shared_generic_method): Remove.
16817         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16818         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16819         (inflate_generic_context): Likewise.
16820         (mono_class_inflate_generic_method_full): Likewise.
16821         (setup_generic_array_ifaces): Likewise.
16822         (mono_class_create_from_typespec): Likewise.
16823         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16824         (method_encode_methodspec): Update callsite.
16825         (reflection_methodbuilder_to_mono_method): Update to changes.
16826         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16827         MonoGenericContext as the key to the hashtable.
16828         (inflate_mono_method): Update to changes.
16829
16830         * class-internals.h (MonoGenericMethod::container): Remove.
16831         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16832
16833 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16834
16835         * profiler-private.h, profiler.c, profiler.h: added API to profile
16836         exception events.
16837
16838 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16839
16840         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16841
16842 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16843
16844         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16845         Fixed overflow and underflow not aborting the verification process.
16846
16847 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16848
16849         * class-internals.h (MonoStats): Added stats entries for dynamic
16850         code allocations.
16851
16852 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16853
16854         * loader.c (mono_free_method): Free header->locals and header->clauses.
16855
16856         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16857         dynamic case.
16858
16859         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16860
16861         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16862
16863 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16864
16865         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16866         the tables.
16867
16868 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16869
16870         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16871
16872 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16873
16874         MonoGenericMethod on a diet
16875         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16876         here ...
16877         (_MonoGenericMethod::reflection_info): ... from here.
16878         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16879         Update to changes.
16880         * reflection.c (inflate_mono_method): Likewise.
16881         (mono_reflection_bind_generic_method_parameters): Likewise.
16882
16883 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16884
16885         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16886         *verify.c: factored long ldarg forms to share code with short forms
16887
16888 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16889
16890         *verify.c: fixed code formating factored some duplicate code
16891         into a new function
16892
16893         *verify.h: fixed binary incompatibility introduced earlier
16894
16895         *pedump.c: fixed formating
16896
16897 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16898
16899         Fix assertion when disassembling Mono.C5.dll
16900         * loader.c (method_from_methodspec): Avoid inflating a method
16901         twice with the same context.  If the methodref is inflated, use
16902         the declaring method instead.
16903
16904         * class.c (mono_class_from_generic_parameter): Fix case similar to
16905         bug #81830 handled below, but for method containers.
16906
16907 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16908
16909         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16910         get_shared_generic_class.  Directly inflate the instance.
16911         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16912         (inflate_generic_class): Delete.
16913         (get_shared_generic_class): Delete.  Move setting of
16914         'cached_class' and 'cached_context' ...
16915         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16916
16917         * metadata.c (mono_metadata_lookup_generic_class): Change
16918         signature to take the components of a MonoGenericClass rather than
16919         an allocated MonoGenericClass.  Change semantics to be intern-like.
16920         * reflection.c (mono_class_bind_generic_parameters): Update to
16921         changes.  Make locking region tighter.
16922         * class.c (inflate_generic_class): Update to changes.
16923         (get_shared_generic_class): Likewise.
16924         * metadata-internals.h: Likewise.
16925
16926         * reflection.c (mono_class_bind_generic_parameters): Take and
16927         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16928         (mono_reflection_bind_generic_parameters): Use
16929         'mono_class_bind_generic_parameters' rather than duplicate the code.
16930         * class.c (mono_bounded_array_class_get): Update to changes.
16931         * object-internals.h: Likewise.
16932
16933         * reflection.c (mono_class_bind_generic_parameters): Only support
16934         parameterizing generic type definitions.  Remove support for other
16935         open types.
16936
16937 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16938
16939         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16940
16941         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
16942         in the dynamic case.
16943
16944 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
16945
16946         * threads.c: When cleaning up thread, reset the Background bit.
16947         Fixes bug #81720.
16948
16949 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
16950
16951        * metadata.c: Move variable declarations to top of scope.
16952        * verify.c: Move variable declarations to top of scope.
16953
16954        Code is contributed under MIT/X11 license.
16955
16956 2007-06-08  Raja R Harinath  <rharinath@novell.com>
16957
16958         * reflection.c (mono_class_bind_generic_parameters): Replace
16959         open-coded loop with mono_metadata_inflate_generic_inst.
16960
16961         * class.c (get_shared_generic_class): Don't call
16962         mono_get_shared_generic_inst.  Use the container's own
16963         'class_inst'.
16964
16965         * metadata.c (mono_metadata_load_generic_params): Move
16966         initialization of 'context' field here from ...
16967         * class.c (mono_class_create_from_typedef): ... here, and ...
16968         * loader.c (mono_get_method_from_token): ... here.
16969
16970         * class.c (get_shared_generic_class): Rename from
16971         mono_get_shared_generic_class and make static.
16972         (mono_get_shared_generic_inst): Move to metadata.c.
16973         * loader.c (mono_get_shared_generic_method): Likewise.
16974         * class-internals.h, metadata-internals.h: Update to changes.
16975
16976         Fix #81830
16977         * class.c (mono_class_from_generic_parameter): Don't assume a
16978         generic container owner exists.  Generic containers from monodis
16979         don't have any.
16980
16981 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
16982
16983         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
16984         * verify.h: new typedefs to returns the non-verifiable status
16985         * verify.c: initial implementation of generics, stack merging and object compatibility check
16986
16987 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16988
16989         * class.c, image.c, class-internals.h (MonoImage): class_cache is
16990         a MonoInternalHashTable again (fixed bug in internal hash table
16991         code).
16992
16993 2007-06-06  Mark Probst  <mark.probst@gmail.com>
16994
16995         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
16996         MonoInternalHashTable again (fixed bug in internal hash table
16997         code).
16998
16999 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17000
17001         * class.c, image.c, class-internals.h, domain.c,
17002         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
17003         changes.  Have to figure out what makes them break the SWF
17004         regression.
17005
17006 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17007
17008         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17009         a MonoInternalHashTable now.
17010
17011 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17012
17013         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17014         MonoInternalHashTable now.
17015
17016 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
17017
17018         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
17019         invoke_impl code.
17020
17021         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
17022
17023         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
17024         dependent trampoline.
17025
17026         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17027
17028         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
17029
17030 2007-05-29  Robert Jordan  <robertj@gmx.net>
17031
17032         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
17033
17034 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
17035
17036         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
17037
17038 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
17039
17040        * marshal.c: Fix interface lookup loops for
17041        cominterop_get_com_slot_for_method and 
17042        cominterop_get_method_interface. Only need to lookup
17043        if type is a class, else use interface type method is on.
17044
17045        Code is contributed under MIT/X11 license.
17046
17047 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
17048
17049         * reflection.c: HasSecurity can be present even if no specially 
17050         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
17051         SecurityAttribute). Fix CAS regression tests on buildbot.
17052
17053 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
17054
17055        * appdomain.c: Add configure checks for header files.
17056        * image.c: Add configure checks for header files.
17057        * file-io.c: Add configure checks for header files.
17058        * debug-mono-symfile.c: Add configure checks for header files.
17059        * threadpool.c: Add configure checks for header files.
17060        * console-io.c: Add configure checks for header files.
17061        * profiler.c: Add configure checks for header files.
17062        * rawbuffer.c: Add configure checks for header files.
17063        * icall.c: Add configure checks for header files.
17064        * rand.c: Add configure checks for header files.
17065        * socket-io.c: Add configure checks for header files.
17066
17067        Code is contributed under MIT/X11 license.
17068
17069 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
17070
17071         * reflection.c (mono_custom_attrs_from_builders): Remove the 
17072         assertion as it breaks the build.
17073         
17074         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
17075
17076         * reflection.c (lookup_custom_attr): Make a copy here too.
17077
17078         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
17079         dynamic images.
17080
17081         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
17082         images.
17083
17084         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
17085         info.
17086
17087 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
17088
17089         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
17090         (load_cattr_value): Ditto.
17091
17092 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
17093
17094         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
17095
17096 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
17097
17098         * threads.c: In "start_wrapper", set apartment_state to MTA if
17099         apartment_state is Unknown and we're running on 2.0 profile or
17100         higher.
17101         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
17102         to main method, then set apartment_state to Unknown on 1.0 profile,
17103         and MTA on 2.0 profile.
17104
17105 2007-05-16  Jb Evain  <jb@nurv.fr>
17106
17107         * class-internals.h (MonoDefaults): Add an attribute_class and
17108           customattribute_data_class.
17109         * domain.c (mono_init_internal): Populate them.
17110         * reflection.c: Use them to remove duplicates. Make a vew
17111         MonoClass variables `static'.
17112
17113 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
17114
17115         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
17116         step in implementing IMT, so that all isinst checks now can go
17117         through the bitmap.
17118         This was needed because vtables for TransparentProxy need to look
17119         like the vtable of the "target" class, so they need to point to
17120         its interface bitmap directly.
17121
17122         * object.c: inside "mono_class_create_runtime_vtable" and
17123         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
17124
17125 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
17126
17127         * object-internals.h
17128           culture-info.h : added territory field in MonoCulture and
17129           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
17130         * locales.c : fill territory field above too.
17131         * culture-info-table.h : regenerated.
17132
17133 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
17134
17135         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
17136         Fixes #81599.
17137
17138 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
17139
17140         * object.c: Always initialize apartment, even if 
17141         there is no custom attributes on entry point.
17142         
17143         Code is contributed under MIT/X11 license.
17144
17145 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
17146
17147         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
17148         * metadata.c: If no encoding is set, check for unicode
17149         on class.
17150         
17151         Code is contributed under MIT/X11 license.
17152
17153 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17154
17155         * threads.c: Handle if mono_thread_current returns NULL 
17156         
17157         Code is contributed under MIT/X11 license.
17158
17159 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17160
17161         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17162         in start_wrapper. Added mono_thread_init_apartment_state and
17163         mono_thread_cleanup_apartment_state.
17164         * object.c: Initialize thread apartment state on main thread
17165         by checking for STAThreadAttribute on entry point.
17166         * object-internals.h: Add apartment_state field to MonoThread.
17167         * threads-types.h: Add unmanaged definition of 
17168         System.Threading.ApartmentState, MonoThreadApartmentState.
17169         
17170         Code is contributed under MIT/X11 license.
17171         
17172 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17173
17174         * class.c: Fix windows build.
17175         * class-internals.h: Fix windows build.
17176         
17177         Code is contributed under MIT/X11 license.
17178
17179 2007-05-08  Robert Jordan  <robertj@gmx.net>
17180
17181         * process.c (CreateProcess_internal):
17182         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17183         .CreateNoWindow was specified. Fixes #81496.
17184
17185 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17186
17187         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17188         step in implementing IMT, replaced it with two compact arrays
17189         (interfaces_packed and interface_offsets_packed) and a bitmap that
17190         is used for isinst checks (interface_bitmap).
17191
17192         * class.c: (compare_interface_ids): compare function to pass to
17193         bsearch when looking for an interface with a given id.
17194         (mono_class_interface_offset): reimplemented using bsearch on
17195         interfaces_packed, getting the offset from interface_offsets_packed.
17196         (print_implemented_interfaces): utility debugging function.
17197         (setup_interface_offsets): reworked to initialize interfaces_packed,
17198         interface_offsets_packed and interface_bitmap.
17199
17200         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17201         with uses of interfaces_packed and interface_offsets_packed.
17202
17203 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17204
17205         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17206         mono_class_interface_offset prototype to wrap all accesses to
17207         "MonoClass.interface_offsets".
17208
17209         * class.c: Implemented mono_class_interface_offset, and wrapped all
17210         accesses to "MonoClass.interface_offsets".
17211
17212         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17213         "MonoClass.interface_offsets".
17214
17215 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17216
17217         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17218         GetMethodFromHandle overloads (bug #78637).
17219
17220 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17221
17222         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17223         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17224
17225 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17226
17227         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17228         #81498.
17229
17230         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17231         gracefully.
17232         (mono_custom_attrs_from_index): Ditto.
17233
17234         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17235         Fixes #81501.
17236
17237 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17238
17239         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17240         is now allocated from a mempool.
17241
17242 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17243
17244         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17245         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17246
17247 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17248
17249         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17250         mono_loader_clear_error () too late. Fixes #81463.
17251
17252 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17253
17254         * culture-info-table.h : regenerated.
17255
17256 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17257
17258         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17259         is missing.
17260
17261 2007-04-25  Dick Porter  <dick@ximian.com>
17262
17263         * Makefile.am: Put the mingw enforced-optimisation back into the
17264         PLATFORM_WIN32 section.
17265
17266 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17267
17268         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17269         patch.
17270
17271         * image.c (mono_image_load_module): New API function to load a module reference.
17272
17273         * image.c (load_modules): Load modules lazily. Fixes #80812.
17274
17275         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17276         
17277         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17278
17279         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17280         to mono_image_load_module_dynamic.
17281
17282 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17283
17284         * marshal.c: Fix calling convention for CCW on non-windows
17285         platforms. STDCALL on windows, CDECL everywhere else to work 
17286         with XPCOM and MainWin COM.
17287         
17288         Code is contributed under MIT/X11 license.
17289
17290 2007-04-23  Martin Baulig  <martin@ximian.com>
17291
17292         Fix #80969.
17293
17294         * loader.c
17295         (method_from_memberref): Added `gboolean *used_context' argument.
17296         (mono_get_method_from_token): Likewise.
17297         (mono_get_method_full): Don't insert the method in the cache when
17298         `used_context' is true.
17299
17300 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17301
17302         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17303
17304         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17305         create new MonoTypes for returned types.
17306         * class.c (mono_generic_class_get_class): Export mono-internal.
17307         * class-internals.h: Update to changes.
17308
17309 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17310
17311         * threadpool.c, threadpool.h, icall-def.h: patch from
17312         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17313
17314 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17315
17316         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17317         
17318         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17319
17320         * threads.c (mono_thread_get_stack_bounds): New helper function.
17321
17322         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17323         Correctly compute stack bounds when attaching. Fixes #81394.
17324
17325 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17326
17327         * reflection.c: fix handling of doubles in custom attributes
17328         for the arm-fpa format (bug #81368).
17329
17330 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17331
17332         * reflection.c (assembly_add_win32_resources): Mildly relax an
17333         bounds check to let the end pointer point just past the end of the
17334         allocated buffer.  (may fix #81384)
17335
17336 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17337
17338         * culture-info-table.h : regenerated.
17339
17340 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17341
17342         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17343         the thread is aborted early.
17344
17345 2007-04-05  Dick Porter  <dick@ximian.com>
17346
17347         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17348         FindFirstFile()/FindNextFile() to find entries.  This lets the
17349         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17350         81038.
17351
17352         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17353         the parameters of
17354         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17355
17356 2007-04-04  Martin Baulig  <martin@ximian.com>
17357
17358         * debug-helpers.c
17359         (mono_method_desc_full_match): Add support for nested classes.
17360
17361 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17362
17363         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17364
17365 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17366
17367         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17368         waiting for too many threads.
17369
17370 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17371
17372         * environment.c: Fix return value check on uname so we can get the 
17373         executing version on Solaris operating systems.
17374
17375 2007-03-28  Jb Evain  <jbevain@gmail.com>
17376
17377         * class.c (mono_type_get_name_recurse): Complete the
17378         fix for the creation of assembly qualified names for
17379         pointer types. Fixes #81208.
17380
17381 2007-03-27  Dick Porter  <dick@ximian.com>
17382
17383         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17384         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17385         changed.
17386
17387         * threads.c
17388         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17389         the value of ReleaseMutex().
17390
17391 2007-03-27  Dick Porter  <dick@ximian.com>
17392
17393         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17394         in little-endian order, not network endian, so must be converted
17395         to host endian here.  Fixes bug 80593.
17396
17397 2007-03-22  Jb Evain  <jbevain@gmail.com>
17398
17399         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17400         qualified names for pointer types. Fixes #81208.
17401
17402 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17403
17404         * marshal.c: Add support for PreserveSigAttribute. 
17405         
17406         Code is contributed under MIT/X11 license.
17407
17408 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17409
17410         * process.c: Fix endianness issues. Fixes #81126.
17411
17412         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17413         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17414
17415         * image.c (mono_image_lookup_resource): Make this work on big-endian
17416         machines.Change API contract so the caller needs to free the return value.
17417         
17418         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17419         API change.
17420         
17421 2007-03-14  Martin Baulig  <martin@ximian.com>
17422
17423         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17424         mono_type_get_desc() as well.
17425
17426 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17427
17428         * icall.c:  Fix environ access in VS.  
17429         
17430 2007-03-13  Alp Toker  <alp@atoker.com>
17431
17432         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17433         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17434         #63841.
17435
17436 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17437
17438         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17439         circular references among dynamic methods. Fixes #81091.
17440
17441         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17442
17443 2007-03-09  Martin Baulig  <martin@ximian.com>
17444
17445         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17446
17447 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17448
17449         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17450         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17451         
17452         Code is contributed under MIT/X11 license.
17453         
17454 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17455
17456         * loader.c: Reapply patch for bug #79424.
17457
17458 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17459
17460         * metadata.c (mono_type_to_unmanaged): Only convert object to
17461         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17462
17463 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17464
17465         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17466         (and incorrectly set) is_reference field from MonoGenericInst.
17467
17468 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17469
17470         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17471         a little earlier.
17472
17473         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17474
17475         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17476
17477 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17478
17479         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17480         FileOptions.1 value to mean "temporary", map that to
17481         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17482
17483         Fixes 80688
17484
17485 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17486
17487         * appdomain.c: implement MS .Net style shadow copying. Copies of
17488         the assemblies are made in a subdirectory of the dynamic base
17489         directory, the assembly names are preserved.
17490         Copy .mdb and .config files along with the assemblies being shadowed.
17491
17492 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17493
17494         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17495         (emit_marshal_handleref): Ditto.
17496
17497         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17498         on Visual C++. Fixes #80671.
17499
17500 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17501
17502         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17503         for clone operations.
17504
17505 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * marshal.c: Fix warnings.
17508
17509 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17510
17511         * loader.c: allow case-insensitive matching of the dll name
17512         in dllmap handling when prefixed with "i:".
17513
17514 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17515
17516         * threads.c: Fix #ifdef for dummy_apc function for VS.
17517
17518 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17519
17520         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17521
17522 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17523         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17524         giving precedence to the methods with a fully qualified name
17525         (InterfaceName.MethodName) when building the interface sections
17526         of the vtable.
17527
17528 2007-02-16  Dick Porter  <dick@ximian.com>
17529
17530         * threadpool.c (append_job): Fix fast-path array handling, so it's
17531         less likely the array will grow exponentially when the load is
17532         heavy.
17533
17534 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17535
17536         * metadata-internals.h, loader.c: fix dllmap lookup order
17537         for non-function maps, too, and prepare for fallback code.
17538
17539 2007-02-12  Robert Jordan  <robertj@gmx.net>
17540
17541         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17542         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17543         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17544         GlobalFree. Fixes a part of bug #77075.
17545
17546 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17547
17548         * loader.c: implemented typedef parent in field memberref.
17549
17550 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17551
17552         * marshal.c: Fix warnings and remember to call Release on
17553         IUnknown of RCW.
17554         
17555         Code is contributed under MIT/X11 license.
17556
17557 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17558
17559         * class-internals.h: Add MonoHandleRef definition, and
17560         handleref_class to mono_defaults. 
17561
17562         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17563         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17564
17565         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17566         (do nothing on this stage)
17567         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17568         (emit_marshal_handleref): New method, used for argument handling
17569         of HandleRefs. 
17570
17571 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17572
17573         * class.c (mono_class_setup_parent): Lazily init com types.
17574         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17575         init com types.
17576         * object.c (mono_remote_class_vtable): Lazily init com types.
17577         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17578         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17579         * domain-internals.h: Expose mono_init_com_types.
17580         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17581         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17582         Add support for COM Callable Wrapper marshalling.
17583         * marshal.h: Add icall definitions.
17584         * gc.c: Handle freeing of CCWs in finalizer code.
17585         
17586         Code is contributed under MIT/X11 license.
17587
17588 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17589
17590         * reflection.c: changed all the signature encoding code to use
17591         a variable-sized buffer.
17592
17593 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17594
17595         * marshal.c: locking fixes: never take the loader lock
17596         or other runtime locks when holding the marshal lock
17597         (fixes bug#80664).
17598
17599 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17600
17601         * marshal.c: make the delegate function pointer mapping
17602         work for the moving GC.
17603
17604 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17605
17606         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17607         for bug #80618.
17608
17609 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17610
17611         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17612         gmodule.
17613
17614 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17615
17616         * threadpool.c: made the code moving-GC safe.
17617
17618 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17619
17620         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17621         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17622         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17623         warning cleanup.
17624         * reflection.c: warning cleanup, some threading and moving GC fixes.
17625
17626 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17627
17628         * class.c, loader.c: create the needed Set/Get/Address array methods
17629         as well as the .ctors in mono_class_init (), fixes bug #80567.
17630
17631 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17632
17633         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17634         we doesn't decrease its alignment. Should fix the sparc build.
17635
17636 2007-01-24  Dick Porter  <dick@ximian.com>
17637
17638         * socket-io.c
17639         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17640         Create the returned object if we need to ignore an unsupported
17641         socket option.  Fixes a segfault reported by Atsushi.
17642
17643 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17644
17645         * class.c, object.c: restrict GC-tracked fields to
17646         UIntPtr fields used inside corlib, so we provide better
17647         type info to the GC and also allow broken packing as in
17648         bug #80580.
17649
17650 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17651
17652         * sgen-gc.c: removed duplicated function.
17653
17654 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17655
17656         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17657         value that means that the value is not supported, but that we
17658         should not return a failure, but instead report this as a
17659         successful operation.
17660
17661 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17662
17663         Fix tests/bug79956.2.il
17664         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17665         (mono_generic_class_get_class): If the generic definition in an
17666         enum, copy over other fields related to it.
17667
17668 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17669
17670         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17671         genericinst enums (bug #79215).
17672
17673 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17674         * class.c: Fix bug 80307.
17675
17676 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17677
17678         * image.c: if the file table is not present, try to load
17679         all the modules, since we don't have info about them
17680         having or not metadata (bug #80517).
17681         * assembly.c: allow mono_assembly_load_references () to
17682         work for netmodules.
17683
17684 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17685
17686         * image.c, metadata-internals.h, object.c: execute module
17687         cctors when running on the 2 runtime if present (bug #80487).
17688
17689 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17690
17691         * icall.c: optimized InitializeArray() on bigendian.
17692
17693 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17694
17695         * icall.c: fix for the broken ARM FPA double format.
17696
17697 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17698
17699         * icall.c: handle endian issues for r4 and r8 types, too, in
17700         the InitializeArray() icall.
17701
17702 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17703
17704         * loader.c (mono_loader_error_prepare_exception): Clear the error
17705         once we have extracted the information from it, do this before we
17706         call into the JIT's class loading mechanisms.
17707
17708         * object.c (mono_class_create_runtime_vtable): Do not clear the
17709         loader error before calling mono_class_get_exception_for_failure
17710         as the loader error is needed inside
17711         mono_class_get_exception_for_failure to throw the error (thinko).
17712
17713         Fixes #80521
17714         
17715 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17716
17717         * reflection.c: align fields rva data so it's faster to load at
17718         runtime.
17719
17720 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17721
17722         Prepare to simplify GenericMethod handling.
17723         * class-internals.h (mono_method_get_context): New accessor function.
17724         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17725         rather than directly accessing '->context' field.
17726
17727         * class-internals.h (_MonoGenericParam.method): Move ...
17728         (_MonoGenericContainer): ... here.  Add into union with klass field.
17729         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17730         Update to changes.
17731
17732 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17733
17734         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17735         the wrapper type enum and reduce relocations.
17736
17737 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17738
17739         * reflection.c (inflate_mono_method): Reuse method instantiation
17740         from the generic method, if available.
17741
17742 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17743
17744         * marshal.c (emit_marshal_variant): Fix conv_arg
17745         type in last commit, based on whether parameter is byref.
17746         
17747 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17748
17749         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17750         marshalling.
17751         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17752         MONO_TYPE_OBJECT back for VARIANT support.
17753
17754 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17755
17756         * marshal.c, marshal.h, icall-def.h: Implement 
17757         Marshal.ReAllocCoTaskMem.
17758
17759 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17760
17761         * marshal.c: memory retention fixes: use the proper
17762         image cache for runtime_invoke method lookups.
17763
17764 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17765
17766         * mempool.c: added code to help debug mempool allocations.
17767
17768 2007-01-11  Dick Porter  <dick@ximian.com>
17769
17770         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17771         support (experimenting with faking it with IP_MTU_DISCOVER for
17772         systems that don't have IP_DONTFRAGMENT.)
17773         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17774         icall.
17775
17776         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17777
17778         * socket-io.h: Add new fields to MonoSocketAsyncResult
17779         corresponding to the new ones in Socket.cs.
17780
17781 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17782
17783         Fix IronPython regression mentioned in #80249
17784         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17785         'cached_context' field, since it may have been initialized as a
17786         side-effect of metadata parsing.
17787
17788         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17789         (_MonoGenericClass.cached_class): Move here and rename from lone
17790         remaining field of ...
17791         (_MonoInflatedGenericClass): ... this.  Remove.
17792         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17793         to changes.
17794
17795         Fix mcs/tests/test-128.cs regression.
17796         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17797         2007-01-10 change below.
17798         [MONO_TYPE_OBJECT]: Recurse into array case.
17799
17800 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17801
17802         * class-internals.h (mono_get_inflated_generic_class): Remove.
17803         * class.c (mono_get_inflated_generic_class): Remove.
17804         (mono_generic_class_get_class): Rename from
17805         mono_class_create_generic.
17806         (mono_class_from_mono_type) [GENERICINST]: Use it.
17807         * reflection.c, metadata.c: Update to changes.  Use
17808         'mono_class_from_mono_type'.
17809
17810 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17811
17812         * reflection.c: use passed type when encoding an array element
17813         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17814
17815 2007-01-09  Robert Jordan  <robertj@gmx.net>
17816
17817         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17818         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17819         Fixes bug #80392.
17820
17821 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17822
17823         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17824
17825         * object.c (set_value): Avoid aliasing between type->data.klass
17826         and type->data.generic_class.
17827
17828         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17829
17830 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17831
17832         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17833         between type->data.klass and type->data.generic_class.
17834
17835 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17836
17837         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17838         value in out parameters.
17839
17840 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17841
17842         Simplify invariant for MonoGenericClass::klass field.
17843         * class.c (mono_class_create_generic): Verify 'klass' is null.
17844         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17845         initialize 'klass' field.
17846
17847 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17848
17849         Ongoing work to avoid redundant data and simplify invariants.
17850         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17851         'generic_class', and change type to a GenericInst.
17852         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17853         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17854
17855 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17856
17857         * class.c : skip io-layer under PLATFORM_WIN32.
17858
17859 2007-01-03  Tor Lillqvist  <tml@novell.com>
17860
17861         Fix #80305: In a bundled executable, look in the bundled exe
17862         assembly to determine the runtime version. Add the possibility to
17863         bundle also the machine.config file.
17864         
17865         * assembly.c (mono_assembly_open_from_bundle): Make
17866         non-static. Allow being called even if we have no bundled
17867         assemblies, and return NULL right away in that case.
17868
17869         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17870         here.
17871
17872         * domain.c (app_config_parse): Take an assembly exe file name as
17873         parameter instead of a config file name. Check for a bundled
17874         config file for that assembly by calling
17875         mono_config_string_for_assembly_file() (see below) before looking
17876         for one in the file system.
17877         (get_runtimes_from_exe): Corrsponding change to call of
17878         app_config_parse().
17879         (get_runtimes_from_exe): Check for bundled assembly exe file first
17880         by calling mono_assembly_open_from_bundle(). If no bundled
17881         assembly exe file is found, call mono_image_open() as before to
17882         look it up in the file system.
17883
17884         * mono-config.c: Add variable bundled_machinec_onfig.
17885         (mono_config_string_for_assembly_file): New function.
17886         (mono_config_for_assembly): Move code snippet that looks for a
17887         bundled assembly .config file into the above new function. Call
17888         it.
17889         (mono_register_machine_config, mono_get_machine_config): New
17890         functions to set and retrieve
17891
17892         * assembly.h: Declare mono_register_machine_config().
17893
17894         * mono-config.h: Declare mono_get_machine_config() and
17895         mono_config_string_for_assembly_file().
17896
17897         * icall.c: No declaration of environ necessary on Win32. It is
17898         declared (as a macro expanding to a function call) in stdlib.h.
17899         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17900         New internal mono function. Returns the value of
17901         mono_get_machine_config() as a Mono string.
17902
17903         * icall-def.h: Add get_bundled_machine_config().
17904
17905 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17906
17907         Remove redundant field
17908         * class-internals.h (_MonoGenericContext.container): Remove field.
17909         * loader.c (mono_method_get_signature_full): Don't parse a
17910         "container" for a signature parse when the signature is inflated
17911         immediately.
17912         (method_from_methodspec): Likewise, for a generic_inst.
17913         * class.c, metadata.c, reflection.c: Update to changes.
17914
17915 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17916
17917         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17918         'cached_context', and change semantics -- it starts off NULL, and
17919         is initialized on demand.
17920         * class.c (mono_generic_class_get_context): New accessor to
17921         replace 'context' field accesses.
17922         (mono_class_get_context): New helper.
17923         (*): Update to changes.
17924         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17925
17926 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17927
17928         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17929         before the memcpy.   Fixes Marshal2 regression.
17930
17931 2007-01-02  Jb Evain  <jbevain@gmail.com>
17932
17933         * blob.h: add a MONO_TYPE_ENUM definition
17934         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17935         fix the encoding of arrays of enums in custom attributes.
17936
17937         Fixes #79666.
17938
17939 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17940
17941         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
17942         string is null terminated, but only cut the string short if it
17943         overflows the buffer.   
17944         
17945         (mono_string_to_byvalstr): Also fix this routine.   The code here
17946         was not properly terminating a string (it was only terminated
17947         because of the previous catch-all memset). 
17948
17949         I left the memset, because I do not know if applications expect
17950         the runtime to clear this region. 
17951
17952         Fixes #79944.
17953
17954         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
17955         Clear the error before returning to unmanaged code to prevent the
17956         runtime from being confused later on (fixes  80420).
17957         (ves_icall_type_from_name): Always call mono_loader_clear_error
17958         after parsing a type that could have failed.
17959         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
17960
17961         * loader.c (mono_loader_clear_error): Fix indentation.
17962
17963 2006-12-28  Martin Baulig  <martin@ximian.com>
17964
17965         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
17966
17967 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17968
17969         * reflection.c: patch from Rolf Bjarne Kvinge to fix
17970         getting a token for an EnumBuilder.
17971
17972 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * reflection.c: be more careful in case resource generation
17975         fails to create the data array.
17976
17977 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17978
17979         * sgen-gc.c: write barrier for clone and fix unregister handles.
17980
17981 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17982
17983         * reflection.c: some fixes needed in the generics code for the moving GC.
17984
17985 2006-12-22  Robert Jordan  <robertj@gmx.net>
17986
17987         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
17988         account. Fixes bug #80299.
17989
17990 2006-12-21  Raja R Harinath  <rharinath@novell.com>
17991
17992         Fix WaitHandle usage in delegates.
17993         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
17994         * object.c (mono_wait_handle_new): Use the property set method to
17995         initialize the handle.
17996         (mono_wait_handle_get_handle): New.
17997         * threadpool.c (mono_async_invoke): Use it.
17998         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
17999         Likewise.
18000         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
18001
18002 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
18003
18004         * marshal.c (emit_marshal): Call emit_marshal_variant and
18005         emit_marshal_com_interface when applicable.
18006         (emit_marshal_variant, emit_marshal_com_interface): Add
18007         methods for this case and remove if's from emit_marshal_object.
18008         
18009 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
18010
18011         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
18012
18013 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
18014
18015         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
18016         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
18017         and GlobalFree on Windows. Remove FIXME.
18018
18019 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18020
18021         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
18022         implementation for managed objects.
18023
18024 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
18025
18026         * object.c: implemented code to be used for checking
18027         that no reference field overlaps with non-references.
18028
18029 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18030
18031         * threadpool.c: fix queue code to be compatible with the
18032         moving GC.
18033
18034 2006-12-18  Miguel de Icaza  <miguel@novell.com>
18035
18036         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
18037         in structures by throwing ArgumentNullException.
18038
18039         (emit_marshal_safehandle): Also when they are null parameters.
18040
18041         (emit_marshal_safehandle): Add support for ref
18042         SafeHandles parameters
18043
18044 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18045
18046         * profiler.c: updated to use the mono-dl API instead of
18047         gmodule.
18048
18049 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18050
18051         * profiler.c: updated to use the mono-dl dynamic loading
18052         API instead of gmodule.
18053
18054 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18055
18056         * profiler.c: use readlink, older versions of glib don't have
18057         g_file_read_link ().
18058
18059 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18060
18061         * profiler.c: try to detect the path to mono if libc fails to provide
18062         a useful name (bug #80286).
18063
18064 2006-12-16  Raja R Harinath  <rharinath@novell.com>
18065
18066         Fix #80242
18067         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
18068         instance, use the generic type definition instead.
18069         (ves_icall_Type_GetNestedTypes): Likewise.
18070         * class.c (mono_class_create_generic): Always set the
18071         nested_classes of a generic instance to NULL, even if the generic
18072         type definition has nested types.
18073
18074 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
18075
18076         * marshal.c (mono_string_from_bstr): Revert previous Windows change
18077         and fix on Linux.
18078         
18079 2006-12-15  Miguel de Icaza  <miguel@novell.com>
18080
18081         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
18082         my arguments were in the wrong order.   I also fixed the Windows
18083         version which seems to have had the same issue.
18084
18085         (mono_free_bstr): On Unix, this is g_free.
18086         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
18087         conversions (for the tests in corlib to pass).
18088
18089 2006-12-14  Miguel de Icaza  <miguel@novell.com>
18090
18091         * marshal.c (emit_ptr_to_object_conv): For now, ignore
18092         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
18093         exception if a ref SafeHandle in a struct has changed).
18094         
18095         (emit_struct_conv): Do not perform layout checks for classes
18096         derived from SafeHandle, as those are specially handled. 
18097
18098         (emit_object_to_ptr_conv): Add support for
18099         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
18100
18101         (emit_marshal_safehandle): Implement conversion of return values
18102         of safehandles (MARSHAL_ACTION_CONV_RESULT).
18103         
18104         * threads.c: WaitHandle now is compiled with two different handles
18105         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
18106         for 2.0.
18107         
18108         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
18109         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
18110         these routines to cope with both kinds of fields.
18111
18112 2006-12-12  Miguel de Icaza  <miguel@novell.com>
18113
18114         * metadata.c (mono_type_to_unmanaged): Handle the case where
18115         type->data.klass is a SafeHandle, and in that case, return the
18116         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
18117         MONO_MARSHAL_CONV_SAFEHANDLE. 
18118
18119 2006-12-11  Miguel de Icaza  <miguel@novell.com>
18120
18121         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
18122         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
18123         calling emit_marshal_object.
18124
18125         (emit_marshal_safehandle): Implement marshalling of
18126         SafeHandle parameters (no ref support yet).
18127
18128         (MarshalAction): Document the defines as I implement
18129         them for SafeHandle.
18130
18131         (emit_marshal_object): indentation police.
18132
18133         * class-internals.h: Define MonoSafeHandle.
18134         Add safehandle_class to MonoDefaults type.
18135
18136         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
18137         list of classes to check for fields. 
18138
18139         * domain.c (mono_init_internal): Add SafeHandle to the list of
18140         mono_defaults loaded.
18141
18142 2006-12-15  Raja R Harinath  <rharinath@novell.com>
18143
18144         Fix #80253
18145         * reflection.c (mono_reflection_bind_generic_parameters): If the
18146         generic type definition is a type builder, ensure that it is fully
18147         initialized before instantiating it.  Kill some dead code.
18148
18149 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18150
18151         * object.c: clear the loader_error () before loading
18152         more metadata stuff (bug #80258).
18153
18154 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
18155
18156         * icall.c, icall-defs.h: type modifiers icalls for
18157         parameters and properties.
18158
18159 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18160
18161         * object.c, icall.c: fixed warnings.
18162
18163 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18164
18165         * marshal.c: fixed a couple of leaks and coding style in a few places.
18166
18167 2006-12-08  Dick Porter  <dick@ximian.com>
18168
18169         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18170         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18171         80173.
18172
18173 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18174
18175         * process.c: ProcessStartInfo may have only filename set and
18176         arguments can be NULL.
18177
18178 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18179
18180         * icall.c: fix leak found by Robert Jordan.
18181
18182 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18183
18184         * marshal.c, marshal.h: generate managed method to access an element
18185         of a multi-dimensional array.
18186
18187 2006-11-30  Paolo Molaro (lupus@ximian.com)
18188
18189         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18190
18191 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18192
18193         * icall.c: back out GetFields () fix until the serialization code is
18194         fixed to not depend on the incorrect behaviour.
18195
18196 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18197
18198         * profiler.c: provide defaults if none are set.
18199
18200 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18201
18202         * Makefile.am, attrdefs.h: new public header file with
18203         constants for attributes for use by embedders.
18204
18205 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18206
18207         * icall.c: GetFields () fix for bug #80064.
18208
18209 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18210
18211         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18212         removed long unused icalls.
18213
18214 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18215   
18216         * marshal.c: 
18217                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18218                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18219                 can be generated without a delegate class.
18220                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18221         
18222         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18223
18224 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18225
18226         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18227         #80069.
18228
18229 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18230
18231         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18232         icall-def.h: added icalls needed by System.GC.
18233
18234 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18235
18236         * loader.c: ensure the class in catch clauses is handled
18237         correctly for generics methods (fixes bug#79980).
18238
18239 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18240
18241         * monitor.h, monitor.c: added mono_locks_dump () function
18242         to help debug deadlocks involving managed locks.
18243
18244 2006-11-13  Dick Porter  <dick@ximian.com>
18245
18246         * file-io.c (get_file_attributes): If the file is a symlink try
18247         and get the stat data for the target, but also add the
18248         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18249         the specs for the windows symlink support, but will probably have
18250         to be reworked when I have test data from a vista machine.  Fixes
18251         bug 79887.
18252
18253 2006-11-13  Dick Porter  <dick@ximian.com>
18254
18255         * gc.c (mono_domain_finalize): 
18256         * marshal.c (mono_delegate_begin_invoke): 
18257         * threadpool.c (socket_io_init, mono_thread_pool_init)
18258         (mono_thread_pool_finish): 
18259         * monitor.c (mono_monitor_try_enter_internal): 
18260         * threads.c (mono_thread_resume, mono_thread_init)
18261         (mono_thread_suspend_all_other_threads)
18262         (mono_thread_execute_interruption): 
18263         * appdomain.c (mono_domain_unload): Check for NULL error returns
18264         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18265         75733.
18266
18267 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18268
18269         * process.c
18270         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18271         Only close the handle if the value of the handle is not
18272         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18273         robust.
18274
18275         Improvement for #75733, so that we do not run into this problem. 
18276
18277         
18278         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18279         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18280         internal variables.  Fixes #79462 
18281         
18282
18283 2006-11-09  Dick Porter  <dick@ximian.com>
18284
18285         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18286         Use poll() not select().  Fixes bug 79397.
18287
18288 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18289
18290         Fix #79872
18291         * assembly.c (mono_assembly_load_from_full): Check that the given
18292         image has an assembly manifest.
18293
18294 2006-11-09  Ankit Jain  <jankit@novell.com>
18295
18296         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18297         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18298         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18299
18300 2006-11-07  Dick Porter  <dick@ximian.com>
18301
18302         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18303         Put the old resolver behaviour back for pre-2.0 profiles.
18304
18305 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18306
18307         * threadpool.c: precise GC and locking fixes.
18308
18309 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18310
18311         * class.c: don't load types that have an explicit unaligned
18312         managed reference. Provide better info in the TypeLoad exception.
18313         Part of the fix for bug #79744.
18314         * object.c: use the correct check for class type load issues.
18315
18316 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18317
18318         * class.c: enforce alignment of fields with managed references
18319         even when Pack=1 is forced by the user (bug #77788).
18320
18321 2006-11-03  Dick Porter  <dick@ximian.com>
18322
18323         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18324         If the address reverse lookup fails, return it as the hostname
18325         anyway.  Fixes bug 79721.
18326
18327 2006-11-03  Dick Porter  <dick@ximian.com>
18328
18329         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18330         Fix build on Windows.
18331
18332 2006-11-02  Dick Porter  <dick@ximian.com>
18333
18334         * icall-def.h: 
18335         * object-internals.h: 
18336         * exception.c (mono_get_exception_thread_interrupted): 
18337         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18338         Fixes bug 74525.
18339
18340         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18341         Check for pending Thread.Interrupt.
18342
18343 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18344         * loader.c: Fixed bug 79684.
18345
18346 2006-10-27  Dick Porter  <dick@ximian.com>
18347
18348         * file-io.c (get_file_attributes): Force symlinks to directories
18349         to be returned as a regular file.  Fixes bug 79733.
18350 2006-10-26  Dick Porter  <dick@ximian.com>
18351
18352         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18353         CreateFile to open a directory then we need to set the
18354         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18355
18356 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18357
18358         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18359         friends.
18360
18361 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18362
18363         * sgengc.c: small cleanup of timer code.
18364
18365 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18366
18367         * sgen-gc.c: fix some warnings and start adding support for
18368         complete object removal on domain unload.
18369
18370 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18371
18372         * assembly.c: build_assembly_name should not consider a version
18373         number without build or revision number invalid. Fixes bug #79715.
18374
18375 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18376
18377         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18378         call kernel32 function OutputDebugString directly.
18379         
18380         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18381         
18382 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18383
18384         * reflection.c: small cleanup, using a function to insert a MonoString
18385         in the string heap.
18386
18387 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18388
18389         * reflection.c: moving GC fixes.
18390
18391 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18392
18393         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18394         all the objects with finalizers belonging to an unloading appdomain.
18395
18396 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18397
18398         * sgen-gc.c: added ability to allocate even when the nursery is fully
18399         pinned and fixed a couple of bugs.
18400
18401 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18402
18403         * threads.h: Revert the last change for now.
18404
18405         * threads.h (mono_thread_get_pending_exception): Rename this to
18406         mono_thread_get_undeniable_exception ().
18407
18408 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18409
18410         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18411         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18412         when fname does not refer to valid assembly. This result in a more
18413         meaningful error message.
18414         * exception.c: added mono_get_exception_bad_image_format2 which 
18415         constructs a BadImageFormatException using the ctor taking a custom
18416         message and the file name. Passing in a NULL msg results in a default
18417         message.
18418         * exception.h: define mono_get_exception_bad_image_format2 function.
18419         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18420         when file name pointed to an invalid IL image. Use 
18421         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18422         as this results in a more meaningful error message.
18423
18424 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18425
18426         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18427         #79465.
18428
18429 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18430
18431         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18432         consistency with the other _size functions.
18433         (mono_type_stack_size): Ditto.
18434
18435         * class.c object.c icall.c: Fix warnings caused by the above change.
18436
18437         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18438
18439         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18440
18441         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18442
18443 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18444
18445         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18446         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18447         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18448         threadpool.h, threads-types.h: mark more internal functions.
18449
18450 2006-10-11  Dick Porter  <dick@ximian.com>
18451
18452         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18453         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18454         reproduce the bug even before applying the fix.)
18455
18456 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18457
18458         * reflection.c: allow retrieving attributes for arguments in generic
18459         methods (bug #79241).
18460
18461 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18462
18463         * debug-mono-symfile.c: properly check fopen () result (found by
18464         coverity).
18465
18466 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18467
18468         * reflection.c: make error message clearer and fixed two
18469         issuelets found by Coverity.
18470
18471 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18472
18473         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18474
18475 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18476
18477         * object-internals.h, gc-internal.h, profiler-private.h:
18478         mark internal functions.
18479
18480 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18481
18482         * reflection.c: put data in the text section.
18483         * icall.c: recognize more types in type_from_typename ().
18484         * process.c, marshal.c: added some GC FIXMEs.
18485
18486 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18487
18488         * loader.c: check for NULL before initializing.
18489
18490 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18491
18492         * gc.c (finalizer_thread): Use a non-alertable wait here.
18493
18494         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18495         until the correct solution is found.
18496
18497 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18498
18499         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18500         modules with no metadata. Fixes #79596.
18501
18502         * image.c (load_metadata_ptrs): Put back the error message when
18503         the #- heap is encountered since the support is not complete yet.
18504
18505 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18506
18507         * gc.c: do not allow the user to SuppressFinalize () a
18508         delegate because it would leak the trampoline if present.
18509
18510 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18511
18512         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18513         PropertyPtr table.
18514
18515 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18516
18517         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18518
18519         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18520
18521         * row-indexes.h: Add definitions for *Ptr tables.
18522
18523         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18524
18525         * metadata.c (mono_metadata_translate_token_index): New helper function to
18526         translate table indexes used in uncompressed metadata.
18527         (mono_metadata_decode_table_row): Ditto.
18528         (mono_metadata_decode_table_row_col): Ditto.
18529
18530         * metadata.c: Add table schema for *Ptr tables.
18531
18532         * class.c loader.c: Use the new helper function to access the affected metadata
18533         tables.
18534         
18535         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18536         #38532.
18537         
18538 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18539
18540         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18541         sequences which can be unbounded in size. Fixes #79583.
18542
18543 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18544
18545         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18546         static initialization.
18547
18548         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18549
18550         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18551
18552         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18553
18554         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18555         ctor fails, i.e. throw the same exception on subsequent accesses.
18556         
18557 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18558
18559         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18560         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18561         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18562         Handle marshalling of interfaces and VARIANTs contained in structs.
18563         
18564         Code is contributed under MIT/X11 license.
18565         
18566 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18567
18568         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18569         
18570         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18571         mempool.
18572
18573 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18574
18575         * console-io.c: ignore previous SIGINT handler.
18576
18577 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18578
18579         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18580         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18581         #79460, #79461, #79485.
18582
18583         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18584
18585         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18586         #79217.
18587
18588 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18589
18590         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18591         could be generated from it.
18592
18593 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18594
18595         * rand.c: fix read loop to correctly handle EINTR.
18596
18597 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18598
18599         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18600         internal calls are defined to keep methods closer to the declaring
18601         type and allow a significant reduction in runtime relocations and
18602         memory usage.
18603
18604 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18605
18606         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18607         exception message to have FileNotFoundException use the default
18608         assembly load error message. Fixes bug #79426.
18609         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18610
18611 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18612
18613         * threadpool.c: (start_thread_or_queue) use the root domain when
18614         creating the thread instead of the async object one.
18615
18616 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18617
18618         * class.c, object.c, class-internals.h, reflection.c:
18619         for arrays, store element_size inside MonoClass (speedup
18620         for array object creation).
18621
18622 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18623
18624         * icall.c: fixed CodeBase to use the file name and not the module
18625         name (bug #79365).
18626
18627 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18628
18629         * mono-debug.c, mono-debug.h: export find_method as
18630         mono_debug_find_method ().
18631
18632 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18633
18634         * debug-helpers.c, class-internals.h: added a few functions useful
18635         when debugging under gdb.
18636
18637 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18638
18639         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18640         characters that need special handling.
18641
18642 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18643
18644         * mono-config.c: make the os/cpu specification more flexible,
18645         allowing lists and negation.
18646
18647 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18648
18649         * marshal.c: COM Interop fixes. Handle case where method->klass.
18650         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18651         calling convention on non-windows platforms. This is for
18652         compatibility with XPCOM and MainWin COM.
18653         
18654         Code is contributed under MIT/X11 license.
18655         
18656
18657 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18658
18659         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18660         correctly. Fixes #79217.
18661
18662         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18663
18664 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18665
18666         * mono-config.c: allow both an os and cpu attribute for dllmap
18667         and dllentry elemnets to enable a single config file to be used
18668         for multiple architectures.
18669
18670 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18671
18672         * loader.c: MonoLoaderError was cleared too soon on load failure.
18673         Fixes bug #79424.
18674
18675 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18676
18677         * icall.c: use the defining class vtable when accessing a
18678         static field, not a pobblibly derived class.
18679
18680 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18681
18682         * icall.c string-icalls.c: Remove references to unicode.h.
18683
18684         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18685
18686         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18687
18688         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18689         indicating the image where custom marshaller types should be looked up.
18690         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18691         custom marshallers, instead of corlib. Fixes #79425.
18692
18693 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18694
18695         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18696
18697 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18698
18699         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18700         Implement Environment.ProcessorCount.
18701         
18702         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18703         Implement Environment.ProcessorCount.
18704         
18705         * icall.c: 
18706         Add Environment.ProcessorCount icall.
18707         
18708         Patch by Jason McFall.
18709
18710 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18711
18712         * assembly.c: don't append .exe/.dll when the filename already contains
18713         one of those extensions.
18714
18715 2006-09-12  Martin Baulig  <martin@ximian.com>
18716
18717         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18718         to array interfaces.
18719
18720 2006-09-11  Martin Baulig  <martin@ximian.com>
18721
18722         * reflection.c (mono_image_build_metadata): Create the
18723         MethodImpl's after emitting all types and methods, so we don't
18724         need another fixup pass for them.
18725
18726 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18727
18728         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18729         change.
18730
18731 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18732
18733         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18734         unload.
18735
18736 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18737
18738         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18739         args is not set. Fixes #78926.
18740
18741 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18742
18743         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18744
18745         * image.c (load_class_names): Move this to class.c, and rename it to 
18746         'mono_image_init_name_cache'.
18747         (load_modules): Fix a warning.
18748
18749         * class.c icall.c image.c: Initialize image->name_cache lazily.
18750
18751         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18752         on its name using information in the AOT file.
18753
18754         * class.c (mono_class_from_name): Use the new hook function.
18755
18756 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18757
18758         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18759         correctly.
18760
18761         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18762         Fixes #79289.
18763         
18764 2006-09-06  Martin Baulig  <martin@ximian.com>
18765
18766         * icall.c (mono_lookup_internal_call): Small fix.
18767
18768 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18769
18770         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18771         double g_free.
18772
18773 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18774
18775         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18776         when --debug is specified.
18777
18778 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18779
18780         * class.c (setup_generic_array_ifaces): Fix a warning.
18781
18782 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18783
18784         * Temporarily remove the patch to assemly.c that checks the
18785         assembly versions as it breaks our gacutil.
18786
18787 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18788
18789         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18790
18791         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18792         a net 1.0 runtime.
18793
18794         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18795         created using the default ctor. Fixes #79152.
18796         (mono_string_builder_to_utf16): Ditto.
18797
18798 2006-09-01  Martin Baulig  <martin@ximian.com>
18799
18800         Fix handling of the generic array interfaces.
18801
18802         * class-internals.h
18803         (MonoDefaults): Removed `generic_array_class' and added
18804         `generic_ilist' class.
18805
18806         * class.c
18807         (mono_bounded_array_class_get): Add the new generic array interfaces.
18808         (setup_generic_array_ifaces): New static method; create vtable
18809         entries for each method in the generic array interfaces.
18810
18811         * metadata.c
18812         (select_container): Allow "parent-less" generic methods.
18813
18814         * marshal.c
18815         (mono_marshal_get_generic_array_helper): New public method.
18816
18817         * icall.c
18818         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18819         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18820         moved the interncall into System.Array.
18821
18822 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18823
18824         A few more cases of avoiding work on types with ->byref set.
18825         Has the real fix for #79238
18826         * icall.c (is_generic_parameter): New helper.
18827         (ves_icall_Type_GetGenericParameterPosition): Use it.
18828         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18829         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18830         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18831         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18832         reference types.
18833         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18834         reference types.
18835         (ves_icall_Type_get_IsGenericInstance): Likewise.
18836         (ves_icall_Type_get_IsGenericType): Likewise.
18837
18838 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18839
18840         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18841         class if possible.
18842
18843         * mempool.h (mono_mempool_get_allocated): New helper function.
18844
18845         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18846         change.
18847
18848         * mempool.c: Fix warnings and the calculation of stats.
18849
18850         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18851
18852         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18853
18854         * loader.c (mono_get_method_from_token): Update method_count stat.
18855
18856         * class-internals.h (MonoStats): Add some stats.
18857
18858 2006-08-31 Robert Jordan  <robertj@gmx.net>
18859
18860         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18861         with managed variants.
18862         All code is contributed under the MIT/X11 license.
18863         
18864 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18865
18866         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18867         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18868
18869         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18870
18871         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18872         with cycles in classes.
18873
18874         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18875
18876         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18877         missing a [MarshalAs] directive. Fixes #79203.
18878
18879         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18880         klass->marshal_info. Fixes #79217.
18881
18882 2006-08-30  Martin Baulig  <martin@ximian.com>
18883
18884         Committing a patch from Joachim Ante <joe@otee.dk>:
18885         Add support for binary data symbol stores.
18886
18887         * debug-mono-symfile.c
18888         (mono_debug_open_mono_symbol_file): Renamed into
18889         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18890         arguments.
18891
18892         * mono-debug.c
18893         (mono_debug_open_image): Added `raw_contents' and `size' args.
18894         (mono_debug_init_2_memory): New public function.
18895
18896 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18897
18898         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18899
18900 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18901
18902         * appdomain.c: implement support for ShadowCopyFiles.
18903
18904 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18905
18906         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18907         when value is NULL (and should remove CID #51).
18908
18909 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18910
18911         * image.c: moved 2 functions to ../utils.
18912
18913 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18914
18915         * gc.c: cope with the target object of a GC handle being NULL
18916         (bug #78877).
18917
18918 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18919
18920         * class.c: recursively check parent's explicit implementations
18921         of interface methods (fixes bug #79125).
18922
18923 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18924
18925         * filewatcher.c: Avoid warnings when building, do not redefine
18926         constants that are defined.
18927
18928         Remove warnings.
18929
18930 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18931
18932         * image.c: don't fail when the link points to an absolute path.
18933
18934 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18935
18936         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18937         Fix CID #3.
18938
18939 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18940
18941         * image.c (full_path): A new method used to obtain the actual path
18942         of an assembly even in the presence of symbolic links.  
18943
18944         This is necessary for the case where we are running a binary that
18945         has been GACed, but we are using the "published" path name
18946         ($prefix/mono/1.0/blah.exe) which happens to point to the real
18947         file in the GAC.
18948
18949         This was the source of the failure for the `xsp' command with the
18950         recent AppDomain changes, as far as the runtime was concerned,
18951         there were two different assemblies: $prefix/mono/1.0/blah.exe and
18952         $prefix/mono/gac/blah/version/blah.exe.
18953
18954         (do_mono_image_open): use full path
18955
18956 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18957
18958         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
18959
18960 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
18961
18962         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
18963         domain_id is supplied. Fix CID #241 and corlib's unit tests.
18964
18965 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18966
18967         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
18968         small structures. Fixes #78990.
18969
18970 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
18971
18972         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
18973
18974         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
18975
18976 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18977
18978         * appdomain.c:
18979         * marshal.c: don't load all the assemblies from a domain into newly
18980         created ones. The new domains might have different rules and load
18981         assemblies from different locations. Fixes bug #76757.
18982
18983         Patch by Lluis. Conflicts resolved by Brian Crowell.
18984
18985 2006-08-16  Alp Toker  <alp@atoker.com>
18986
18987         * socket-io.c: First half of the fix for #79084.
18988         Set sa_size to the length of the content, not that of the struct.
18989         Don't add NULL suffix to the content, this should be done in
18990         managed code if needed.
18991
18992 2006-08-14  Raja R Harinath  <rharinath@novell.com>
18993
18994         Fix part of #79012
18995         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
18996         mono_metadata_parse_type returns NULL.
18997
18998 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
18999
19000         * normalization-tables.h : new file for string normalization data.
19001         * locales.c, locales.h, icall.c :
19002           added load_normalization_resource() for string normalization,
19003           and icall as well.
19004         * Makefile.am : added normalization-tables.h to the sources.
19005
19006 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
19007
19008         * marshal.c: Add more helper functions to reduce code duplication and use them
19009         everywhere.
19010
19011 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
19012
19013         * marshal.c: Fix non-x86 stdcall warnings.
19014         
19015         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
19016         them everywhere.
19017
19018 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
19019
19020         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
19021         type check on multi-dimensional arrays. Fixes #79000.
19022
19023 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
19024
19025         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
19026         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
19027         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
19028         * class-internals.h: add is_com_object to class structure.
19029         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
19030         null checks to COM object marshalling. Fix .ctor call on RCW.
19031         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
19032         
19033         All code is contributed under the MIT/X11 license.
19034
19035 2006-08-09  Dick Porter  <dick@ximian.com>
19036
19037         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
19038         racing mono_monitor_allocator_lock() somewhere, so don't delete
19039         the critical section for now.  Found by running and exiting
19040         monodevelop.
19041
19042 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
19043
19044         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
19045         (ves_icall_System_ComObject_FindInterface): Ditto.
19046         (ves_icall_System_ComObject_CacheInterface): Ditto.
19047
19048         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
19049         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
19050
19051 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19052
19053         * threadpool.c: treat pipes from process asynchronous reads as sockets
19054         when reading from them, so we get select/poll or epoll to wait for
19055         data.
19056
19057 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
19058
19059         * loader.c: Fix a typo (CID #233) in the null check.
19060
19061 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
19062
19063         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
19064         Hopefully fixes #78949.
19065         
19066         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
19067         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
19068         bytes. Fixes #78972.
19069
19070 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19071
19072         * filewatcher.c: we need to set errno here.
19073
19074 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19075
19076         * filewatcher.c: let Win32Exception get the error value.
19077
19078 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19079
19080         * filewatcher.c: translate errno into win32 errors for Win32Exception
19081         to know what happened.
19082
19083 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
19084
19085         * threadpool.c: Fix more warnings.
19086
19087         * assembly.c (search_loaded): Fix warnings.
19088
19089         * threadpool.c (mono_thread_pool_finish): Fix warnings.
19090         (mono_async_invoke): Ditto.
19091
19092 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
19093
19094         * object.c (mono_remote_class_vtable): Need to create proxy vtable
19095         entries for __ComObject type in addition to ComImport types.
19096         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
19097         about hash table.
19098         
19099         All code is contributed under the MIT/X11 license.
19100
19101 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
19102
19103         * image.c: avoid tentative loading of modulerefs that contain
19104         no metadata (P/Invoke library names).
19105
19106 2006-07-28  Dick Porter  <dick@ximian.com>
19107
19108         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
19109         mono_loader_lock() somewhere, so don't delete the critical section
19110         for now.  Found by running and exiting monodevelop.
19111
19112 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19113
19114         * filewatcher.c: define the inotify syscalls when we're building on
19115         linux and have sys/syscall.h. The build system might not have support
19116         for inotify but the target system might have it.
19117
19118 2006-07-26  Miguel de Icaza  <miguel@novell.com>
19119
19120         * domain.c: Documentation updates.
19121
19122         * loader.c (mono_free_method): Do not release the method
19123         information if we are being profiled, as profilers will use this
19124         information at shut down to present some data to the user.
19125
19126         This is needed so that the profiler does not crash, as the
19127         profiler tends to keep MonoMethods around, and they might become
19128         invalid if we free these.
19129
19130         (mono_get_method_constrained): Return the original CIL stream
19131         method as well, so verification can be performed against it.
19132
19133 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19134
19135         * filewatcher.[ch]: support for inotify file system watcher.
19136         * icall.c: add new internal calls for the inotify file system watcher.
19137
19138 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19139
19140         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
19141         #78888.
19142
19143 2006-07-20  Dick Porter  <dick@ximian.com>
19144
19145         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
19146         warning.
19147
19148 2006-07-20  Dick Porter  <dick@ximian.com>
19149
19150         * threads.c (start_wrapper): Do the thread cleanup while we still
19151         hold a reference to its object.  Fixes bug 78123.
19152
19153 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
19154
19155         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19156         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19157           "managed-to-managed".
19158         * icall.c: Redirect string constructors that take sbyte* to
19159           ves_icall_System_String_ctor_RedirectToCreateString.
19160         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19161           to CreateString () methods with matching signature.
19162         * reflection.c: Use original security informations for
19163           MONO_WRAPPER_MANAGED_TO_MANAGED.
19164         * security-manager.c: Use original security informations for
19165           MONO_WRAPPER_MANAGED_TO_MANAGED.
19166         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19167           that is a placeholder and only its address should be used.
19168         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19169           that is a placeholder and only its address should be used.
19170
19171 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19172
19173         Begin implementing COM Interop.
19174         * appdomain.c: Increment corlib version.
19175         * class.c: Set ComImport classes' parent to __ComObject.
19176         * loader.c: Mark cominterop methods as such.
19177         * domain.c: Add __ComObject class to MonoDefaults structure.
19178         * image.c: Add 2 hashtables to the image for COM Interop related methods
19179         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19180         using the mempool allocator
19181         
19182         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19183         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19184         declaration for mono_metadata_type_dup_mp.
19185         
19186         * debug-helpers.c: Added strings for two additional wrapper types
19187         * object.c: Create proxy objects for ComImport classes
19188         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19189         and added __ComObject class to MonoDefaults structure.
19190         
19191         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19192         MonoComInteropProxy and MonoComObject.
19193         
19194         * marshal.c: Added support for COM Interop
19195         (signature_cominterop): Converts managed signature to corresponding
19196         unmanaged COM signature.
19197         (cominterop_get_function_pointer): gets unmanaged function pointer via
19198         COM object vtable
19199         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19200         (cominterop_get_method_interface): returns interface type that method is defined on
19201         (mono_mb_emit_cominterop_call): emits native call to function pointer
19202         gotten from vtable
19203         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19204         that matches signature of unmanaged function.
19205         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19206         (cominterop_get_invoke): forwards call from proxy to __ComObject
19207         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19208         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19209         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19210         
19211         * marshal.h: Added Marshal icall declarations.
19212         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19213         so we can access them in finalizer
19214         
19215 2006-07-14  Dick Porter  <dick@ximian.com>
19216
19217         * object.c (mono_type_initialization_cleanup): Fix a race
19218         condition by temporarily commenting out the critical section
19219         deletion.
19220
19221 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19222
19223         * reflection.c (create_custom_attr): Fix some warnings.
19224         (create_custom_attr_data): Ditto.
19225         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19226         types. Fixes #78855.
19227
19228 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19229
19230         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19231
19232         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19233
19234 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19235
19236         * reflection.c (resolve_object): Add support for DynamicMethod.
19237
19238         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19239         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19240
19241 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19242
19243         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19244         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19245
19246 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19247
19248         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19249         Fixes #77888.
19250
19251 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19252
19253         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19254         slightly: remove a shadow local variable.
19255
19256 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19257
19258         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19259         definition that introduces the virtual function slot.
19260         Also fix Coverity #105.
19261
19262 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19263
19264         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19265         for dynamic assemblies. Fixes #78724.
19266
19267 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19268
19269         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19270         Fixes #78722.
19271
19272 2006-06-21  Martin Baulig  <martin@ximian.com>
19273
19274         * reflection.c
19275         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19276         fixes #76484.
19277
19278 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19279
19280         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19281
19282 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19283
19284         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19285         nor TYPEREFs.
19286         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19287         Inflate result if necessary.
19288         (mono_class_get_full): Remove old version.  Rename from
19289         'mono_class_get' and add 'context' argument.  Pass it to
19290         ..._create_from_typespec.
19291         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19292         (mono_ldtoken): Revert change below.
19293
19294 2006-06-20  Martin Baulig  <martin@ximian.com>
19295
19296         * class.c (mono_ldtoken): Don't pass the generic context to
19297         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19298
19299 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19300
19301         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19302         and later freeing it. Fixes #78638.
19303
19304 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19305
19306         * icall.c (mono_class_get_throw): Revert over-zealous error
19307         throwing, the caller for mono_class_get_throw will cope with
19308         errors when classes are not properly initialized already.
19309
19310         The code still copes with loader exceptions though.
19311
19312         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19313         
19314 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19315
19316         Fixes the `make run1' version of RuntimeAbort (to be commited,
19317         source is in Bugzilla).
19318         
19319         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19320         FALSE on class loading failure instead of returning true.
19321
19322         * class.c (mono_class_create_from_typedef): It is possible for
19323         mono_metadata_interfaces_from_typedef_full to fail if a class is
19324         not found, cope with this.
19325         
19326
19327 2006-06-14  Dick Porter  <dick@ximian.com>
19328
19329         * socket-io.c: 
19330         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19331         4.1.1
19332
19333 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19334
19335         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19336
19337 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19338
19339         * icall.c: Another fix for building mono in Visual Studio.
19340
19341 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19342
19343         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19344         
19345 2006-06-09  Martin Baulig  <martin@ximian.com>
19346
19347         * debug-mono-symfile.c: Put this back and really fix it this
19348         time. Sorry for all the trouble.
19349
19350 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19351
19352         * icall.c (mono_class_get_throw): Fix a warning.
19353         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19354         ReflectionTypeLoadException if needed. Fixes #78606.
19355
19356         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19357         (mono_class_init): Ditto.
19358
19359         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19360         ref_only exceptions.
19361         (mono_loader_clear_error): Make this work even if there is no error.
19362
19363 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19364
19365         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19366         Marshal.GetComSlotForMethodInfo using internal call.
19367
19368 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19369
19370         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19371         a function for signalling it.
19372
19373         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19374         a referenced assembly is not found.
19375
19376         * loader.c (mono_loader_error_prepare_exception): Add support for 
19377         LOADER_ERROR_ASSEMBLY. Fix formatting.
19378
19379 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19380
19381         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19382         for VARIANT marshalling on windows and increment corlib version
19383         since Variant struct was added.
19384
19385 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19386
19387         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19388         stack trace line information:
19389
19390         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19391         (Martin) when looking up B which is between A and C, return A not C.
19392
19393         Bug is #78573.
19394
19395         Thanks to Alexander Olk for tracking this down.
19396
19397 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19398
19399         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19400         
19401         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19402         avoid clobbering its value.
19403         (mono_string_to_lpstr): Fix a warning on windows.
19404
19405 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19406
19407         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19408
19409         * reflection.c loader.c: Removed references to 'dummy' flag.
19410
19411         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19412
19413         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19414         it gets GC tracking.
19415
19416         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19417         GC tracking.
19418         
19419         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19420
19421         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19422
19423         * appdomain.c: Bump corlib version.
19424
19425 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19426
19427         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19428         CEE_STIND_REF when working with object references.
19429
19430 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19431
19432         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19433         Fixes #78539.
19434
19435 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19436
19437         * loader.c (method_from_memberref): Fix argument value for
19438         mono_loader_set_error_method_load (I was passing the MonoClass
19439         instead of the class name char *).
19440
19441 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19442
19443         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19444         CEE_STIND_REF when working with object references.
19445
19446 2006-05-30  Martin Baulig  <martin@ximian.com>
19447
19448         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19449         mono_method_full_name() change and replace the ':' with a '.'
19450         here.
19451
19452 2006-05-30  Martin Baulig  <martin@ximian.com>
19453
19454         * debug-mono-symfile.c
19455         (mono_debug_symfile_lookup_location): Fix the algorithm:
19456         when looking up B which is between A and C, return A not C.
19457
19458 2006-05-29  Martin Baulig  <martin@ximian.com>
19459
19460         * mono-debug.h
19461         (MonoDebugMethodInfo): Make the typedef public.
19462         (MonoDebugSourceLocation): New public struct.
19463
19464         * mono-debug.c
19465         (mono_debug_source_location_from_address): Removed.
19466         (mono_debug_source_location_from_il_offset): Removed.
19467         (mono_debug_il_offset_from_address): Removed.
19468         (mono_debug_address_from_il_offset): Removed.
19469         (mono_debug_lookup_method): New public function.
19470         (mono_debug_lookup_source_location): New public function; replaces
19471         the old mono_debug_source_location_from_*() functions; see the
19472         inline documentation.
19473         (mono_debug_free_source_location): New public function.
19474         (mono_debug_print_stack_frame): New public function; see the
19475         inline documentation.
19476
19477         * debug-mono-symfile.c
19478         (mono_debug_find_source_location): Renamed into
19479         mono_debug_symfile_lookup_location(); only take a
19480         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19481         documentation.
19482         (mono_debug_find_method): Renamed into
19483         mono_debug_symfile_lookup_method().
19484
19485 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19486
19487         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19488         returned by mono_image_open_full ().
19489
19490         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19491         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19492         #78517.
19493
19494         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19495         #78518.
19496
19497 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19498
19499         * class.c (mono_class_from_typeref): handle missing images
19500         earlier, deals with bug #78418.   Refactor code; 
19501
19502         Fix a warning introduced in my previous commit (some stale code
19503         from before I revisited my patch).
19504
19505         * class.c (mono_class_create_from_typedef): On failure, remove the
19506         class from the MonoImage->class_cache as the class is not
19507         initialized;   Fixes the leak pointed out by Paolo.
19508
19509 2006-05-25  Dick Porter  <dick@ximian.com>
19510
19511         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19512         DeleteCriticalSections until I figure out which one may still be
19513         sometimes locked when mono_thread_cleanup is called.
19514
19515 2006-05-24  Dick Porter  <dick@ximian.com>
19516
19517         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19518         of mono_thread_manage and back into its own function, so it can be
19519         called after the finalizer thread has finished.
19520
19521         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19522
19523 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19524
19525         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19526         Fixes #78495.
19527
19528         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19529         with non-blittable elements.
19530         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19531
19532 2006-05-24  Martin Baulig  <martin@ximian.com>
19533
19534         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19535         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19536
19537         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19538         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19539         `mono_debugger_event_handler' to NULL.
19540
19541 2006-05-24  Martin Baulig  <martin@ximian.com>
19542
19543         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19544
19545 2006-05-24  Martin Baulig  <martin@ximian.com>
19546
19547         * mono-debug-debugger.h
19548         (mono_debugger_create_notification_function): Added
19549         `MonoCodeManager *' argument.
19550
19551 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19552
19553         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19554
19555 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19556
19557         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19558         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19559         implementation.
19560
19561 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19562
19563         * icall.c: precise GC support: objects can't be stored in unmanaged
19564         memory anymore, even if they are kept alive by other references: since
19565         they can move the GC needs to be able to always find them.
19566
19567 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19568
19569         * object.c: precise GC support for static fields. Support
19570         for moving GCs: write barriers and pinned allocation for interned
19571         strings.
19572
19573 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19574
19575         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19576         structure.
19577
19578 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19579
19580         * class.c, gc.c: sgen and precise GC updates.
19581
19582 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19583
19584         * marshal.h, marshal.c: added write barrier wrapper and precise type
19585         fixes.
19586
19587 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19588
19589         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19590         support.
19591
19592 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19593
19594         * reflection.c: precise and sgen GC updates.
19595
19596 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19597
19598         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19599
19600 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19601
19602         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19603
19604 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19605
19606         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19607         MONO_TYPE_OBJECT. Fixes #78462.
19608
19609 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19610
19611         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19612         and blittable types.
19613
19614 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19615
19616         * class.c (mono_class_get_exception_for_failure): Implement parts
19617         of a TODO: if the loader error is set (instead of the class
19618         error), we return a Loader exception that can be properly thrown
19619         elsewhere.
19620
19621         This was exposed by some Winforms 2.0 code that I tried to run
19622         (Atsushi pointed me to it).
19623
19624 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19625
19626         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19627         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19628         
19629         * marshal.c (emit_marshal_vtype): Add limited support for 
19630         UnmanagedType.LPStruct. Fixes #78427.
19631
19632         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19633         Applied a patch from kangaroo to fix #77523.
19634
19635 2006-05-17  Martin Baulig  <martin@ximian.com>
19636
19637         * threads.c
19638         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19639         (debugger_thread_created): Removed.
19640         (debugger_thread_exited): Removed.
19641
19642 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19643
19644         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19645
19646         * object-internals.h (MonoReflectionResource): Sync with managed version.
19647
19648 2006-05-12  Wade Berrier <wberrier@novell.com>
19649
19650         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19651
19652 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19653
19654         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19655         functions try to allocate from the image mempool.
19656
19657 2006-05-12  Dick Porter  <dick@ximian.com>
19658
19659         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19660
19661 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19662
19663         * object.c: The FieldGetter and FieldSetter methods require the full
19664         name of the class, not only the name. Fixes bug #78277.
19665
19666 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19667
19668         * loader.c (method_from_memberref): Do not pass the NULL klass to
19669         mono_loader_set_error_() methods.  Pass the non-NULL value
19670         (class). 
19671
19672 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19673
19674         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19675         (mono_assembly_close): Null out assembly->image->references after freeing it.
19676
19677         * image.c (mono_image_close): Free image->references.
19678         
19679         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19680
19681 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19682
19683         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19684         before checking if it's NULL (g_assert).
19685
19686 2006-05-10  Martin Baulig  <martin@ximian.com>
19687
19688         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19689         I thought I already killed that two months ago, but now it somehow reappeared.
19690
19691 2006-05-10  Martin Baulig  <martin@ximian.com>
19692
19693         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19694
19695 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19696
19697         * reflection.c: Allocate memory for dynamically created methods in the image
19698         mempools.
19699
19700 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19701
19702         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19703         don't use the ad pointer before checking if it's NULL (g_assert).
19704
19705 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19706
19707         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19708         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19709
19710         * marshal.c: Allocate all signatures from mempools.
19711
19712         * marshal.c: Allocate some more signatures from mempools.
19713
19714 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19715
19716         * object.c (mono_load_remote_field): The code used to provide a
19717         temporary variable for returning results if the user did not
19718         provide a result pointer.  But our temporary variable was allocted
19719         on the satck.
19720
19721         Fix calling code to always pass a result area.   Coverity ID 103.
19722
19723 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19724
19725         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19726         value, not the old. Fixes #78312.
19727         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19728
19729         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19730         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19731         per-image cache.
19732
19733         * assembly.c (mono_assembly_close): Free image->references.
19734
19735         * assembly.c (mono_assembly_names_equal): Fix a warning.
19736         (mono_assemblies_cleanup): Cleanup more global data.
19737
19738         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19739
19740         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19741         ptr_cache and image->modules.
19742
19743         * image.c (mono_image_init): Allocate array_cache lazily.
19744         
19745 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19746
19747         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19748         behavior was changed recently and has bad side effects.
19749
19750 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19751
19752         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19753         
19754         * assembly.c (mono_assembly_close): Remove a debug printf.
19755
19756         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19757
19758         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19759         to also allow for temporary references between mono_image_open ()/close ().
19760
19761         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19762
19763 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19764
19765         * marshal.c: Fix support for dynamic methods.
19766
19767         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19768
19769         * marshal.c (mono_marshal_cleanup): New cleanup function.
19770
19771         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19772         image mempools.
19773
19774         * class.c (mono_class_init): Fix leaking class->nested_classes.
19775
19776         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19777
19778         * image.c (mono_image_init): Initialize the new cashes.
19779
19780         * image.c (mono_image_close): Destroy the new cashes.
19781
19782         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19783
19784         * mempool.c (mono_mempool_strdup): New helper function.
19785
19786         * class-internals.h: Add prototype for mono_loader_unlock ().
19787
19788         * domain.c (mono_jit_info_table_find): Fix a warning.
19789         (mono_debugger_check_runtime_version): Ditto.
19790
19791         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19792         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19793         functions to these modules.
19794
19795         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19796         metadata modules.
19797         
19798         * marshal.c (mono_free_bstr): Fix a warning.
19799
19800         * assembly.c (mono_assembly_open_full): Fix another small leak.
19801
19802         * object.c: Fix some unload leaks in the remoting code.
19803
19804         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19805         function.
19806
19807         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19808
19809         * reflection.c: Fix some unload leaks in dynamic assemblies.
19810
19811 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19812
19813         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19814         * marshal.h: Add BSTR support on Win32
19815         * icall.c: Add BSTR icalls
19816         * metadata.h: Add BSTR enums
19817
19818 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19819
19820         Work to catch the crash from #76795 and turn it into an
19821         exception.   As I stubbed out pieces of the VisualBasic support,
19822         I found a number of places where the code was failing and I added
19823         checks to those places. 
19824         
19825         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19826         function return a status code.  If we fail to parse the signature
19827         from mono_metadata_parse_generic_inst, return FALSE.
19828
19829         * loader.c (mono_get_method_from_token): If we fail to load the
19830         method (mono_class_get) return NULL.   
19831
19832         * (method_from_memberref): Return NULL if we are unable to parse
19833         the method signature
19834
19835         (mono_loader_error_prepare_exception): Since we now use the
19836         loader_error flag internally to stop processing, and obtaining
19837         exceptions that might be thrown will walk this code path the
19838         proper way of going from a MonoLoaderError into a
19839         MonoException was convoluted.   This new routine encapsulates the
19840         process of turning the error into an exception and *clearing* the
19841         error afterwards.
19842         
19843 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19844
19845         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19846         with missing assemblies), and to cope with:
19847
19848                 * Missing fieldref from a non-existing assembly.
19849                 * Missing methodref from a non-existing assembly.
19850
19851         The first batch of work to address *some* of the issues from 76661.
19852         
19853         * object.c (mono_class_create_runtime_vtable): If we fail to
19854         initialize the class raise the exception here. 
19855
19856         * metadata.c (mono_class_get_overrides_full): If any methods fail
19857         to load return the failure to the caller.
19858
19859         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19860         flagging assemblies that failed to load.   
19861
19862         Do not crash if we are unable to load the assembly.
19863
19864         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19865         assemblies. 
19866
19867         * loader.c (mono_loader_set_error_type_load): Change the
19868         convention to always pass unallocated strings, so we make our own
19869         copies (I know our own code had duplicated strings before, but
19870         this keeps the normal conventions).
19871         (method_from_memberref): Call mono_loader_set_error_method_load
19872         for all possible failures of loading the class. 
19873         Remove assert, turn into a loader error.
19874
19875         (mono_loader_error_to_exception): Move this routine from mini
19876         (mini_loader_error_to_exception) there was no need to have that in
19877         mini. 
19878
19879         * class.c (mono_class_from_typeref): If we were not able to load
19880         the assembly with mono_assembly_load_reference, call the
19881         mono_loader_set_error_type_load to register the problem.
19882
19883         (mono_class_setup_fields): If we fail to load the type from
19884         mono_metadata_parse_type_full, call mono_class_set_failure and
19885         break from the loop.
19886
19887         If class->exception_type is set, we do not layout the fields as
19888         that might crash the runtime, and instead return (from breaking
19889         from the previous loop).
19890
19891         (mono_class_setup_vtable): This now returns a boolean indicating
19892         whether the table was properly setup.   The decision is driven by
19893         mono_class_get_overrides_full which might run into non-existing
19894         methods. 
19895         
19896         (mono_class_init): Returns TRUE on success or FALSE if there was a
19897         problem in loading the type (incorrect assemblies, missing
19898         assemblies, methods, etc).
19899
19900         When we call mono_class_setup_fields we also check for a potential
19901         error inside this call (either a class exception or a general
19902         loader exception).
19903
19904         (mono_class_create_from_typedef): If the parent fails to load
19905         (calling mono_class_get_full) return NULL.
19906         
19907         ** Important **
19908
19909         calls to mono_metadata_parse_type_full should be checked
19910         everywhere and set the mono_class_set_failure
19911         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19912
19913         The current patch checks the places where my manually constructed
19914         tests show the errors are showing up, but we should do it
19915         everywhere. 
19916
19917         ** Important2 **
19918
19919         mono_class_init return values should be tested everywhere, like
19920         the previous case this is something that we should audit
19921         everywhere and not only on the cases exposed by the tests I
19922         created. 
19923
19924 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19925
19926         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19927         boolean parameter and instead pass the information on `options'
19928         parameter (FileOptions).
19929
19930         * icall.c: Register the new signature for MonoIO.Open.
19931
19932         * debug-helpers.c (dis_one): Trying to understand how coverity
19933         works.  Fix Run 5, item 78.
19934
19935 2006-04-26  Dick Porter  <dick@ximian.com>
19936
19937         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19938         dereference.
19939
19940 2006-04-25  Martin Baulig  <martin@ximian.com>
19941
19942         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
19943
19944         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
19945         debugger_thread_created().
19946         (debugger_gc_push_all_stacks): Don't handle the main thread in any
19947         special way.
19948         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
19949         (mono_debugger_finalize_threads): New function; undo the effects
19950         of mono_debugger_init_threads().
19951         (mono_debugger_create_all_threads): Removed.
19952
19953 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
19954
19955         * image.c (mono_image_close): Tidy up trace messages.
19956
19957         * assembly.c (mono_assembly_close): Ditto.
19958
19959         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
19960         no longer references an already freed assembly. Fixes #78168.
19961
19962 2006-04-21  Dick Porter  <dick@ximian.com>
19963
19964         * threads.c (mono_thread_detach): Fix reference counting when
19965         detaching threads.
19966
19967 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
19968
19969         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
19970         #78155.
19971
19972 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
19973
19974         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
19975         (mono_type_to_stind): Ditto.
19976
19977         * marshal.c: Use the new helper functions to simplify code.
19978
19979         * image.c (mono_image_close): Add some code for help debug assembly unloading
19980         problems.
19981
19982         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
19983         image mempool.
19984
19985         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
19986         assembly was already loaded in another appdomain. Fixes #78083.
19987
19988 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
19989
19990         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
19991         referenced assemblies.
19992         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
19993
19994         * domain.c (mono_domain_free): Add a trace message.
19995
19996         * appdomain.c (add_assemblies_to_domain): Ditto.        
19997
19998         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
19999         field.  
20000
20001 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20002
20003         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
20004
20005 2006-04-12  Martin Baulig  <martin@ximian.com>
20006
20007         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
20008         `USE_INCLUDED_LIBGC'.   
20009
20010 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20011
20012         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
20013         the patch contains ../ and a small directory name later. Hopefully fixes
20014         #78035.
20015
20016 2006-04-10  Martin Baulig  <martin@ximian.com>
20017
20018         Clean up the debugger's thread-handling code.
20019
20020         The debugger's thread-handling code has been moved from
20021         ../mini/debug-debugger.c to threads.c.  We now iterate directly
20022         over the `threads' hash, keep track of exiting threads and also
20023         use proper locking.
20024
20025         We can now debug XSP and XSP based applications with the debugger.
20026
20027         * object-internals.h (MonoThread): Added `gpointer end_stack'.
20028
20029         * threads.h
20030         (MonoThreadCallbacks): Removed; this was only used by the debugger.
20031         (mono_install_thread_callbacks): Likewise.      
20032
20033         * threads.c (mono_thread_callbacks): Removed.
20034         (debugger_thread_created, debugger_thread_exited): New static functions.
20035         (start_wrapper): Call debugger_thread_created().
20036         (thread_cleanup): Call debugger_thread_exited().
20037         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
20038         (mono_debugger_init_threads): New public function.
20039         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
20040         iterate directly over the `threads' hash and also use proper locking.
20041
20042         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
20043
20044         * mono-debug-debugger.h
20045         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
20046
20047 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
20048
20049         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
20050         argument type=array. Fixes #78057.
20051
20052 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
20053
20054         * culture-info-table.h : regenerated. Fixed bug #69652.
20055
20056 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
20057
20058         * loader.c metadata.c: Reapply a variant r59116.
20059         
20060         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
20061
20062         * class.c (mono_class_setup_interface_offsets): New internal function.
20063
20064         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
20065         interfaces too. Fixes #77398.
20066
20067         * reflection.c (encode_cattr_value): Add support for 
20068         parameter type=object, argument type=array.
20069         (load_cattr_value): Ditto. Fixes #77916.
20070
20071         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
20072         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
20073
20074         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
20075         a byval char array and CharSet is Ansi.
20076
20077         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
20078
20079 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
20080
20081         * metadata.c: Add some locking comments.
20082         
20083         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
20084         mempool.
20085         (mono_metadata_free_method_signature): Don't free the signature itself.
20086
20087         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
20088
20089         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
20090         reference the same MonoImage.
20091         (mono_assembly_load_from_full): Add an assert.
20092
20093 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
20094
20095         * image.c (mono_image_close): Don't put the image we are about to free into the
20096         loaded_images_guid_hash.
20097
20098         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
20099         to reduce code duplication.
20100
20101         * marshal.c: Register the native functions called by this module as icalls, to
20102         somewhat centralize the creation of MonoMethodSignature's.
20103
20104         * loader.c (mono_method_signature): Add a cache for method signatures.
20105
20106         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
20107         the parameter attributes of a method.
20108         (mono_metadata_parse_method_signature_full): Refactored the computation of
20109         parameter attributes into a separate function. Also avoid one allocation in
20110         most cases.
20111
20112         * assembly.c (mono_assembly_close): Ditto.
20113
20114         * image.c (mono_image_close): Log trace messages with INFO level.
20115
20116         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
20117
20118         * image.c reflection.c: Correct reference counting of image modules.
20119         
20120         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
20121         of this function from the image mempool.
20122         
20123         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
20124         to allow more cached types to be used.
20125
20126         * mono-debug.c (mono_debug_add_method): Appled patch from
20127         David S. Miller  <davem@sunset.davemloft.net>: Access 
20128         minfo->lexical_blocks[] entry elements using read32().
20129
20130 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
20131
20132         * loader.c (mono_free_method): No longer free the method header for non-dynamic
20133         methods as it is allocated from the mempool.
20134
20135         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
20136         image mempool.
20137
20138         * metadata-internals.h: Add comments describing the reference counting scheme
20139         used for MonoImage and MonoAssembly.
20140
20141         * image.c assembly.c reflection.c: Rework reference counting of images and 
20142         assemblies so they are freed when the runtime is shut down. Free some 
20143         additional memory structures when an image is unloaded.
20144         
20145 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
20146
20147         * class.c loader.c reflection.c: Allocate more data structures in
20148         the image mempool.
20149
20150 2006-03-31  Miguel de Icaza  <miguel@novell.com>
20151
20152         * icall.c
20153         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
20154         build on pre glib 2.4 systems.
20155
20156 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20157
20158         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20159
20160         * icall.c: Fix some warnings.
20161
20162 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20163
20164         * culture-info-table.h : regenerated.
20165
20166 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20167
20168         * threads.c, object-internals.h, verify.c: changed the culture caching
20169         code to use a normal MonoArray for storage so the GC can keep track of
20170         them easily. Fixed bits of the cache logic, too and simplified the
20171         code.
20172
20173 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20174
20175         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20176         thread for non-Boehm GCs.
20177
20178 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20179
20180         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20181         needed to keep track of the data for static fields.
20182
20183 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20184
20185         Fix #75172
20186         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20187         for interface classes.  Use 'num_methods' instead.
20188         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20189         before using '->vtable_size' field.
20190
20191 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20192
20193         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20194         doesn't contain managed pointers, so use a normal hashtable.
20195
20196 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20197
20198         * reflection.c, class-internals.h, domain.c: fixed handling of types
20199         used as values for objects in custom attributes (bug #77915):
20200
20201 2006-03-24  Martin Baulig  <martin@ximian.com>
20202
20203         * class.c (mono_class_setup_fields): Added support for generic
20204         instances; fixes #77580.
20205
20206 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20207
20208         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20209
20210 2006-03-24  Dick Porter  <dick@ximian.com>
20211
20212         * file-io.c (get_file_attributes): More stat macro breakage.
20213         Fixes bug 77759.
20214
20215 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20216
20217         * profiler.c: added the file=filename option in the default profiler
20218         to output the profile data to filename.
20219
20220 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20221
20222         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20223         bug #77877.
20224
20225 2006-03-22  Martin Baulig  <martin@ximian.com>
20226
20227         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20228         allocated `MonoClassField *' in `fb->handle'.
20229
20230 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20231
20232         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20233         allocate interface ID to save memory and allow better ID reuse on
20234         appdomain unload. setup_generic_vtable () removal from Martin.
20235
20236 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20237
20238         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20239         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20240         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20241         write barriers for reference stores with managed objects accessed with
20242         C structures in the runtime and in embedding programs.
20243
20244 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20245
20246         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20247         'interface_id' and 'max_interface_id' fields of MonoClasses
20248         representing open generic types.
20249
20250 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20251
20252         * object.h, object.c, icall.c: added functions to deal with
20253         storing valuetypes that contain references in managed objects.
20254         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20255         fixes and comments around uses of mono_array_addr ().
20256
20257 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20258
20259         * object.h, icall.c, monitor.c: object.GetHashCode ()
20260         implementation that supports the moving garbage collector.
20261
20262 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20263
20264         * icall.c, threads-types.h, threads.c: implemented finalizer for
20265         LocalDataStoreSlot.
20266
20267 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20268
20269         * metadata.c (mono_type_size): Add a fixme.
20270         (mono_type_stack_size): Ditto.
20271
20272         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20273         'type_forwarders' field.
20274
20275         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20276         attribute from net 2.0.
20277
20278         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20279         from class.c.
20280
20281         * class.c (mono_class_setup_fields): Fix a warning.
20282         
20283         * class.c (mono_class_from_name): Add support for assemblyref entries
20284         in the EXPORTEDTYPE table.
20285
20286         * reflection.c: Add support for handling type forwarders under net 2.0.
20287
20288         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20289         
20290 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20291
20292         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20293         overwriting entries in ModuleBuild->types, also clean up the code
20294         a little. Fixes #77774.
20295
20296 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20297
20298         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20299         load friend assembly info when present.
20300
20301 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20302
20303         Fix crasher on gtest-158.cs.
20304         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20305         the return value if the MonoClass we want is yet in an
20306         inconsistent state.
20307         * class.c (mono_class_create_from_typedef): Add an comment
20308         explaining an order dependency between mono_class_setup_parent and
20309         mono_class_setup_mono_type.
20310
20311 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20312
20313         * class.c: documentation updates and events bug fix.
20314
20315 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20316
20317         * class.c: some cleanup, locking fixes.
20318
20319 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20320
20321         * class.c: fix the generics code to setup nested
20322         type info to the instantiated type (bug #77770).
20323
20324 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20325
20326         * marshal.c: fixed a few type correctness issues.
20327
20328 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20329
20330         * loader.c: the Set/Get/Addrtess array methods should be public.
20331
20332 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20333
20334         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20335         
20336         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20337         info->wrapper.
20338
20339 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20340
20341         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20342
20343         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20344
20345         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20346         (mono_mempool_alloc0): Ditto.
20347
20348 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20349
20350         * socket-io.c:
20351         (create_object_from_sockaddr): it was allocating 4 extra bytes
20352         for the AF_UNIX data. Fixes bug #77747.
20353
20354 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20355
20356         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20357
20358 2006-03-09  Dick Porter  <dick@ximian.com>
20359
20360         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20361         Fixes bug 76966 again.
20362
20363 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20364
20365         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20366         names from r57532
20367         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20368
20369 2006-03-07  Martin Baulig  <martin@ximian.com>
20370
20371         * object.c
20372         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20373
20374 2006-03-07  Martin Baulig  <martin@ximian.com>
20375
20376         * class.c
20377         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20378         regression introduced in r56970; see gtest-252.cs.
20379
20380         * loader.c (mono_get_method_constrained): Correctly handle generic
20381         methods; see gtest-253.cs.
20382
20383 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20384
20385         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20386
20387 2006-03-04  Martin Baulig  <martin@ximian.com>
20388
20389         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20390         compute the parent type at runtime, just like we're already doing
20391         it for interfaces.
20392
20393         * reflection.c
20394         (mono_reflection_bind_generic_parameters): Don't compute the
20395         parent type anymore.
20396
20397         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20398
20399 2006-03-04  Martin Baulig  <martin@ximian.com>
20400
20401         * mono-debug-debugger.h
20402         (mono_debugger_create_notification_function): Allocate memory at
20403         runtime and return a pointer to it.
20404
20405 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20406
20407         * assembly.c: Fix windows build.
20408         
20409         * assembly.c: Fix build.
20410
20411         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20412
20413         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20414         
20415 2006-03-03  Dick Porter  <dick@ximian.com>
20416
20417         * process.c
20418         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20419         Check parameters before dereferencing them.  Fixes Aaron's part of
20420         bug 77393.
20421
20422 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20423
20424         Fix performance regression.
20425         * loader.c (find_method_in_class): Add 'from_class' argument.
20426         Rename 'klass' argument to 'in_class'.  The signature is compared
20427         against the method in 'in_class', and the corresponding method is
20428         returned from 'from_class'.
20429         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20430         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20431         type definition and generic instantiation in parallel.
20432         (mono_get_method_constrained): Update to changes.
20433
20434 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20435
20436         * threads.c: make sure the domain is correct, too when doing
20437         mono_thread_attach ().
20438
20439 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20440
20441         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20442         windows. Fixes #77683.
20443
20444 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20445
20446         * object.h, *: introduced specific way to set elements of an array
20447         of references to be used as write barrier. Still need to audit the
20448         uses of mono_array_addr.
20449
20450 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20451
20452         * object-internals.h: New field to cache the assmebly name, patch
20453         from Tambet Ingo (tambet@ximian.com)
20454
20455 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20456
20457         * decimal.h, class-internals.h, metadata-internals.h,
20458         file-io.h: mark a few function declarations as internal, to
20459         reduce the number of PLT entries.
20460
20461 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20462
20463         * file-io.c: fix typo in warning message.
20464
20465 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20466
20467         * loader.c: on unix, lookup the "*A" version of a function
20468         if charset is auto as a second option before failing.
20469
20470 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20471
20472         * class.h (mono_class_inflate_generic_method): Revert to two
20473         argument version.
20474         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20475         (mono_class_inflate_generic_method_full): Add.
20476         * class.c (mono_class_inflate_generic_method_full): Rename from
20477         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20478         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20479         * loader.c, reflection.c: Update to changes.
20480
20481 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20482
20483         * icall.c: const fixes and small improvements.
20484
20485 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20486
20487         * threadpool.c: for asynchronous connect(), enable the same workaround
20488         for BSD 6 as for the Mac. Fixes bug #77637.
20489
20490 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20491
20492         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20493         formatted classes. Fixes #77524.
20494
20495 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20496
20497         * class.c (inflate_generic_type): Add a couple more
20498         micro-optimizations.
20499         (inflate_generic_context): Don't use the 'gmethod' from
20500         'inflate_with'.
20501         (mono_class_inflate_generic_method): If the method has generic
20502         parameters, but the passed-in context doesn't have a 'gmethod',
20503         create one.  Use the possibly simplified generic instantiation
20504         from the declaring class instead of the one passed in.
20505
20506 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20507
20508         Make generic method signature and method header handling lazy.
20509         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20510         (inflate_generic_header): Likewise.
20511         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20512         parameter to avoid inflating types.
20513         (mono_get_inflated_method): Empty out.
20514         * class.h (mono_class_inflate_generic_method): Update to changes.
20515         * loader.c (mono_get_method_from_token): Don't parse signature for
20516         generic methods, nor methods of generic classes.
20517         (mono_method_signature): Rename from 'mono_method_signature'.
20518         Inflate signature on demand.
20519         (mono_method_get_header): Inflate method header on demand.
20520         * reflection.c: Update to changes.
20521
20522 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20523
20524         * metadata.c (mono_metadata_inflate_generic_inst): If the
20525         instantiation is closed, don't bother expanding it in the new
20526         context.
20527         * class.c (inflate_generic_class): If the generic instantiation
20528         doesn't change after inflation, return the argument itself.
20529         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20530         Add bounds checks.
20531         (inflate_generic_context): If neither the generic class nor the
20532         generic method instantiations change, return the original context.
20533         * reflection.c (mono_method_get_object): Do
20534         'mono_get_inflated_method' before accessing the ->klass field.
20535         (inflate_mono_method): Don't create a MonoGenericMethod unless
20536         necessary.
20537         (inflate_method): Don't pass a constructed type as the declaring
20538         type of a methodbuilder.
20539
20540 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20541
20542         * object.c: fix memory overwrite.
20543
20544 2006-02-22  Dick Porter  <dick@ximian.com>
20545
20546         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20547         it doesn't work any more.
20548         (mono_threads_request_thread_dump): Fix unused variable warnings.
20549
20550 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20551
20552         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20553         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20554         the public header file.
20555
20556 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20557
20558         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20559
20560 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20561
20562         * class-internals.h, object.c: reduce the size of MonoVTable
20563         and store the interface_offsets array at negative offsets.
20564
20565 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20566
20567         * metadata.c: tweak table descriptors data structures to reduce
20568         size and runtime relocations.
20569
20570 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20571
20572         * marshal.c: fix some types and opcodes to be type-safe
20573         in marshaling wrappers.
20574
20575 2006-02-21  Ankit Jain  <jankit@novell.com>
20576
20577         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20578
20579 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20580
20581         * metadata.c (get_constraints): Relax debugging checks for monodis.
20582
20583 2006-02-21  Ankit Jain  <jankit@novell.com>
20584
20585         * metadata.c (mono_metadata_load_generic_params): Move the code
20586         checking for ambiguous generic params from here to mono/dis/get.c
20587         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20588
20589 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20590
20591         Fix assertion triggered when compiling nemerle.
20592         * class.c (mono_get_shared_generic_inst): Rename from
20593         get_shared_inst and make non-static.
20594         * loader.c (mono_get_shared_generic_method): New.  Used to create
20595         the MonoGenericContext-equivalent of a MonoGenericContainer.
20596         (mono_get_method_from_token): Initialize the 'context' field of
20597         the created MonoGenericContainer.
20598         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20599         * metadata.c (get_constraints): Add sanity check.
20600         * class-internals.h: Add new internal methods.
20601
20602         * reflection.c (verify_safe_for_managed_space): New sanity check.
20603         Currently checks that owner-less generic parameters aren't allowed
20604         in managed space.
20605         (mono_type_get_object): Use it.
20606         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20607         that are now in mono_type_get_object.
20608         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20609
20610 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20611
20612         * metadata.c (mono_type_create_from_typespec): Rename from
20613         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20614         argument and caching of types in the generic container.
20615         (unwrap_arrays, find_generic_param): Remove.
20616         * metadata-internals.h: Update.
20617         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20618
20619 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20620
20621         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20622
20623         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20624         return values. Fixes #77581.
20625
20626         * class.c (mono_fnptr_class_get): Switch name and name_space.
20627
20628         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20629         classes and add support for [In, Out] attributes.
20630         (mono_marshal_free_asany): Ditto. Fixes #77524.
20631
20632 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20633
20634         * class.c (mono_class_from_generic_parameter): Make more robust to
20635         incomplete MonoGenericContainers from monodis.
20636
20637 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20638
20639         * class-internals.h: added some more exception types.
20640         * class.c, metadata.c: added a few checks to handle missing
20641         types.
20642
20643 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20644
20645         Use owner-less generic-params some more.
20646         * class.c (my_mono_class_from_generic_parameter): Remove.
20647         (mono_class_from_generic_parameter): Handle null image,
20648         param->name and param->owner.
20649         (mono_class_from_mono_type): Update.
20650         (mono_class_create_from_typespec): Remove 'container' parameter.
20651         If that parameter is non-null, the result is always inflated by
20652         'mono_class_get_full' anyway.
20653         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20654         parameter.
20655         (mono_class_get_full): Update.
20656
20657         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20658         instance is not open, don't bother inflating.
20659         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20660         parse metadata for inflated classes.
20661         (_mono_class_get): Change GenericContext* parameter to
20662         GenericContainer*.
20663         (mono_class_create_from_typespec): Likewise.  Simplify, and
20664         implement trivially.  All the cases are handled in
20665         mono_class_from_mono_type.  Don't inflate returned class.
20666         (mono_class_get_full): Delegate GENERICINST optimization to
20667         inflate_generic_type.
20668         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20669
20670 2006-02-16  Dick Porter  <dick@ximian.com>
20671
20672         * socket-io.c (create_object_from_sockaddr): Fix typo.
20673         (create_sockaddr_from_object): Check array lengths before
20674         potentially accessing items off the end.
20675         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20676         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20677         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20678         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20679         length checks to avoid wraparound overflows.
20680         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20681         contents of the array of sockets
20682         (hostent_to_IPHostEntry2)
20683         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20684         Check return value of inet_ntop ().
20685         (addrinfo_to_IPHostEntry): Fix typo
20686
20687 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20688
20689         Type metadata parsing doesn't use generic-instantiation information.
20690         * metadata.c (mono_metadata_parse_array_full): Change
20691         MonoGenericContext* parameter to MonoGenericContainer*.
20692         (mono_metadata_parse_type_full): Likewise.
20693         (mono_type_create_from_typespec_full): Likewise.
20694         (mono_metadata_parse_mh_full): Likewise.
20695         (mono_metadata_parse_generic_inst): Likewise.
20696         (do_mono_metadata_parse_generic_class): Likewise.
20697         (do_mono_metadata_parse_type): Likewise.
20698         * metadata-internals.h: Update to changes.
20699         * class.c (mono_class_find_enum_basetype): Likewise.
20700         (mono_class_setup_fields): Likewise.
20701         (mono_class_create_from_typespec): Likewise.
20702         * loader.c (method_from_methodspec): Likewise.
20703         (mono_get_method_from_token): Likewise.
20704         (mono_method_get_header): Likewise.
20705
20706 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20707
20708         * marshal.c: handle additional GENERICINST case (patch from
20709         Thong Nguyen <tum@veridicus.com>).
20710         Fix a few cases where LDIND_I/STIND_I was used for references.
20711
20712 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20713
20714         * reflection.c (mono_reflection_get_token): Remove unused variable.
20715
20716 2006-02-16  Martin Baulig  <martin@ximian.com>
20717
20718         * reflection.c (mono_reflection_get_token): Add support for fields
20719         in instantiated generic types.
20720
20721         * icall.c
20722         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20723
20724 2006-02-15  Martin Baulig  <martin@ximian.com>
20725
20726         * icall.c
20727         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20728         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20729         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20730         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20731
20732 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20733
20734         * class.c, metadata.c, metadata.h, object.c, icall.c,
20735         marshal.c: changed mono_type_get_underlying_type () to do
20736         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20737         Fixed handling of instantiated generic valuetypes (bug #75479).
20738
20739 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20740
20741         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20742         Delegate to mono_metadata_decode_value, and work on the returned value.
20743
20744         * icall.c (ves_icall_MonoType_GetGenericArguments):
20745         Add consistency check here too.
20746         
20747 2006-02-15  Ankit Jain  <jankit@novell.com>
20748
20749         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20750         char/short etc.
20751
20752 2006-02-15  Ankit Jain  <jankit@novell.com>
20753
20754         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20755         signed values, used only for representing lower bounds of arrays.
20756         (mono_metadata_parse_array_full): Use new
20757         mono_metadata_decode_signed_value to decode lower bounds.
20758
20759 2006-02-14  Martin Baulig  <martin@ximian.com>
20760
20761         * reflection.c
20762         (mono_reflection_get_token): Support "MonoGenericMethod" and
20763         "MonoGenericCMethod" and allow generic instances / methods.
20764
20765 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20766
20767         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20768         to obtain the terminal size using an ioctl.
20769
20770         * object.c (mono_nullable_init): Revert this as nullable reference
20771         types are not valid.
20772         (mono_nullable_box): Ditto.
20773
20774 2006-02-09  Dick Porter  <dick@ximian.com>
20775
20776         * threads.c (mono_thread_detach): Drop a reference to the thread
20777         we're detaching.
20778
20779 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20780
20781         * object.c (mono_nullable_init): Handle nullable reference types.
20782         (mono_nullable_box): Ditto. Fixes #77446.
20783
20784 2006-02-07  Martin Baulig  <martin@ximian.com>
20785
20786         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20787
20788 2006-02-07  Ankit Jain  <jankit@novell.com>
20789
20790         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20791         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20792         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20793         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20794         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20795         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20796
20797 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20798
20799         * class.c (mono_class_create_generic): Set type_token as well.
20800
20801         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20802         compatible with MS.
20803
20804 2006-02-02  Martin Baulig  <martin@ximian.com>
20805
20806         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20807         has never been used so far.
20808
20809 2006-02-02  Martin Baulig  <martin@ximian.com>
20810
20811         * mono-debug-debugger.h: Changed comment at the top of this file;
20812         the header is not installed, but it's safe to #include it from
20813         within the JIT.
20814
20815         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20816         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20817
20818 2006-02-02  Martin Baulig  <martin@ximian.com>
20819
20820         * mono-debug.h
20821         (MonoSymbolTable): Removed the `metadata_info' field.
20822
20823         * mono-debug.c
20824         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20825
20826         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20827         (mono_debugger_add_builtin_types): Removed.
20828         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20829         (mono_debugger_create_notification_function): We now operate on a
20830         pre-allocated area; take a `gpointer' and return `void'.
20831
20832         * mono-debug-debugger.c
20833         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20834         (mono_debugger_add_builtin_types): Removed.
20835
20836 2006-02-02  Martin Baulig  <martin@ximian.com>
20837
20838         * threads.c (mono_debugger_create_all_threads): New public method.
20839
20840 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20841
20842         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20843         breaks on several platforms.
20844
20845 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20846
20847         * assembly.c: the VS.NET build doesn't supply default values for
20848         MONO_ASSEMBLIES and MONO_CFG_DIR.
20849
20850 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20851
20852         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20853         helper function.
20854
20855         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20856
20857         * loader.c (method_from_memberref): Fix a warning.
20858
20859         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20860
20861         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20862         with explicit layout. Fixes #77433.
20863
20864 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20865
20866         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20867         max_interface_id is initialized before using it. Fixes #77398.
20868         (ves_icall_Type_GetInterfaces): Ditto.
20869
20870 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20871
20872         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20873         allocate memory for parameter attributes when parsing memberref
20874         signatures.
20875         * loader.c (mono_loader_set_error_method_load): Don't warn.
20876         (method_from_memberref): Ensure MissingMethodException gets thrown
20877         if method is not found.  Make warning more informative.
20878
20879 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20880
20881         Fix #77397
20882         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20883         return true if is byref.
20884         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20885         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20886         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20887
20888 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20889
20890         Fix tests/find-method.2.il
20891         * loader.c (find_method, find_method_in_class): Remove is_inflated
20892         argument.  Revert 2006-01-18 change.
20893         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20894         is generic, search for method in its generic definition.
20895         * class.c (mono_class_setup_vtable_general): Print generic
20896         arguments of generic types in debugging printf.
20897
20898 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20899
20900         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20901
20902         * threads.c (mono_threads_request_thread_dump): New helper function.
20903
20904 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20905
20906         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20907
20908 2006-01-25  Ankit Jain  <jankit@novell.com>
20909
20910         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20911         move definition to ..
20912         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20913         
20914 2006-01-25  Ankit Jain  <jankit@novell.com>
20915             Raja R Harinath  <rharinath@novell.com>
20916
20917         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20918         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20919         as necessary.
20920
20921 2006-01-25  Martin Baulig  <martin@ximian.com>
20922
20923         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20924         `MonoDebuggerThread' into debug-debugger.c.
20925
20926 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20927
20928         * profiler.c: fix printing of data.
20929
20930 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20931
20932         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20933           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20934
20935 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20936
20937         * object.c: fix deadlock related to string interning.
20938
20939 2006-01-23  Martin Baulig  <martin@ximian.com>
20940
20941         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20942
20943         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
20944
20945 2006-01-23  Martin Baulig  <martin@ximian.com>
20946
20947         * mono-debug.h: Moved the prototypes of some functions which are
20948         used by the JIT here from mono-debug-debugger.h.
20949
20950 2006-01-21  Martin Baulig  <martin@ximian.com>
20951
20952         * Makefile.am: Don't install mono-debug-debugger.h.
20953
20954 2006-01-21  Martin Baulig  <martin@ximian.com>
20955
20956         * mono-debug-debugger.h: Enforce the private status of this header
20957         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
20958         Moved some stuff from mono-debugger-jit-wrapper.h here.
20959
20960 2006-01-20  Raja R Harinath  <rharinath@novell.com>
20961
20962         * class.c (mono_class_from_typeref): Add a sanity test to help
20963         catch lack of assembly load/search hooks.
20964
20965 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
20966
20967         * marshal.c (emit_struct_conv): Relax the fields with same offset
20968         check even more. Fixes #77230.
20969
20970 2006-01-18  Martin Baulig  <martin@ximian.com>
20971
20972         * loader.c (find_method_in_class): Added `gboolean is_inflated'
20973         argument; if false, we compare the uninstantiated signatures.
20974         (method_from_memberref): Compare the uninstantiated signatures;
20975         fixes #76417.
20976
20977 2006-01-18  Robert Jordan  <robertj@gmx.net>
20978
20979         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
20980         Clear the weak link. Fixes bug #77170.
20981
20982         * gc.c (mono_gchandle_free):
20983         Reflect *-gc.c changes (tiny optimization).
20984
20985 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
20986
20987         * metadata.c (mono_metadata_signature_dup): Applied patch from
20988         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
20989         Fixes #77288.
20990
20991 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
20992
20993         * marshal.c (emit_struct_conv): Allow fields with the same offset when
20994         marshalling from native to managed code. Fixes #77230.
20995
20996 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20997
20998         * threadpool.c: fix problem (Mac only) when more than one asynchronous
20999         connect. Fixes bug #77020.
21000
21001 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
21002
21003         * class.c: fixed id assignement for nested interfaces (bug #77275).
21004         Added also better info for --print-vtable debugging.
21005
21006 2006-01-12  Martin Baulig  <martin@ximian.com>
21007
21008         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
21009         interfaces on-the-fly; fixes #76625.
21010
21011         * class-internals.h
21012         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
21013         don't need that anymore.
21014
21015 2006-01-12  Miguel de Icaza  <miguel@novell.com>
21016
21017         * socket-io.c
21018         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21019         To avoid initing the nested_classes when not needed I turned the
21020         PeerCredData as a toplevel internal class, as it has to be shared
21021         anyways. 
21022
21023         Fixes the CASA issue.
21024
21025 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
21026
21027         * domain.c: Accessors for MonoJitInfo
21028
21029         * profiler-private.h: Add jitinfo to the end jit hook
21030
21031         * profiler.[ch]: Define new hooks, called after jitting which give
21032         the MonoJitInfo that was compiled
21033
21034 2006-01-10  Martin Baulig  <martin@ximian.com>
21035
21036         * class.c (mono_class_setup_events): Add support for generic
21037         classes; fixes #76440.
21038
21039 2006-01-06  Raja R Harinath  <rharinath@novell.com>
21040
21041         Fix #77160.
21042         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
21043         on passed-in method.
21044
21045 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21046
21047         * object.c (mono_runtime_invoke_array): Add Nullable support.
21048
21049         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
21050
21051 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
21052
21053         * file-io.c: Don't consider sockets as directory and avoid an endless
21054         loop. Fix bug #76966.
21055
21056 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21057
21058         * object.c (mono_nullable_init): New helper function.
21059         (mono_nullable_box): Ditto.
21060
21061         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
21062
21063         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
21064
21065         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
21066         
21067 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
21068
21069         * class.c (mono_class_is_assignable_from): Make T assignable to 
21070         Nullable<T>.
21071
21072 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
21073
21074         * appdomain.c: Bump corlib version to 46.
21075         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
21076         serialization purpose) and changed ves_icall_System_Reflection_
21077         Assembly_get_code_base signature to accept a boolean (to escape, or 
21078         not, the assembly code base).
21079
21080 2005-12-23  Dick Porter  <dick@ximian.com>
21081
21082         * icall.c: 
21083         * threads-types.h: 
21084         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
21085         CreateEvent icall now returns "created" boolean parameter.
21086
21087 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
21088
21089         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
21090         #76967.
21091
21092         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
21093         when attr_klass is an interface. Fixes #77045.
21094
21095 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
21096
21097         * marshal.c (emit_struct_conv): Fix previous patch.
21098         
21099         * marshal.c (emit_struct_conv): Add a check for fields with the same
21100         offset.
21101
21102 2005-12-20  Raja R Harinath  <rharinath@novell.com>
21103
21104         Fix regression in Mono.C5.
21105         * class.c (mono_class_create_generic): If 'klass' is an interface
21106         set up the interface offsets.
21107         (mono_class_is_assignable_from): Don't throw away generic arguments.
21108
21109 2005-12-19  Raja R Harinath  <rharinath@novell.com>
21110
21111         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
21112         type parameters.
21113
21114 2005-12-15  Raja R Harinath  <rharinath@novell.com>
21115
21116         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
21117         dead store.
21118         (do_mono_metadata_parse_generic_class): Don't pass the current
21119         generic context when parsing the type being instantiated: it
21120         cannot use it, anyway.
21121
21122         * loader.c (method_from_memberref): Don't inflate a signature if
21123         it doesn't contain any type parameters.
21124
21125 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
21126
21127         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
21128
21129 2005-12-14  Martin Baulig  <martin@ximian.com>
21130
21131         * class.c
21132         (mono_type_get_name_recurse): Don't return null for type
21133         parameters and open generic classes.
21134         (mono_class_setup_methods): Don't exclude generic instances.
21135         (mono_get_unique_iid): Use different IDs for different
21136         instantiations of the same generic type.
21137         (mono_class_setup_vtable): Only use setup_generic_vtable() for
21138         open generic instances; create a normal vtable for closed generic
21139         instances.
21140         (mono_class_setup_vtable_general): We're now also called for
21141         closed generic instances.
21142
21143         * reflection.c
21144         (mono_reflection_bind_generic_parameters): Correctly use
21145         mono_metadata_lookup_generic_inst() everywhere.
21146
21147 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
21148
21149         * object.c (mono_class_create_runtime_vtable): Call 
21150         mono_class_setup_vtable ().
21151
21152         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
21153         function.
21154         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
21155         #76959.
21156
21157         * loader.c (mono_loader_set_error_type_load): Print the type load
21158         warnings to the console so they are more visible to the user.
21159         (mono_loader_set_error_method_load): Ditto.
21160
21161         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21162         is still broken.
21163         
21164         * reflection.c (ensure_runtime_vtable): Fix build.
21165
21166         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21167         doesn't work in all cases.
21168
21169 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21170
21171         * object.c (mono_array_new_full): Treat a single dimensional array
21172         with 0 lower bounds as an szarray. Fixes #76973.
21173
21174         * reflection.c (custom_attr_visible): Really fix this.
21175
21176 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21177
21178         * reflection.c (custom_attr_visible): Allow nested public attributes
21179         as well.
21180
21181         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21182         interface check.
21183
21184 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21185
21186         * class.c (set_generic_param_owner): Delete.
21187         (mono_class_create_from_typedef): Don't set ->owner field of
21188         generic parameters to "param containers" of enclosing classes.
21189         * reflection.c (mono_reflection_initialize_generic_parameter):
21190         Likewise.
21191
21192 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21193
21194         * reflection.c (custom_attr_visible): Fix build.
21195
21196 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21197
21198         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21199         private attributes.
21200         
21201         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21202         handling of null parameter defaults.
21203
21204 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21205
21206         * class.c (mono_class_from_generic_parameter): Don't set
21207         klass->generic_container.
21208         (my_mono_class_from_generic_parameter): Likewise.
21209
21210 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21211
21212         * reflection.c (load_public_key): Fix a warning.
21213         (method_encode_code): Fix unaligned accesses.
21214
21215 2005-12-07  Martin Baulig  <martin@ximian.com>
21216
21217         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21218
21219         * reflection.c
21220         (write_generic_param_entry): Encode our custom attrs.
21221
21222         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21223
21224 2005-12-07  Martin Baulig  <martin@ximian.com>
21225
21226         * reflection.c (encode_new_constraint): Removed; we don't use the
21227         `NewConstraintAttribute' anymore.
21228
21229 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21230
21231         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21232         not fire a TypeResolve event when Assembly.GetType () is called.
21233
21234 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21235
21236         Beginning of support for nullable types in the runtime. Parts of
21237         this patch are from Martin.
21238
21239         * appdomain.c (MONO_CORLIB_VERSION): Bump
21240
21241         * domain.c (mono_init_internal): get the nullable type
21242
21243         * class.c (mono_class_is_nullable): New method
21244         (mono_class_get_nullable_param): New mehod
21245         (mono_class_create_generic): In types T? set cast_class to T
21246
21247         * class-internals.h (MonoDefaults): new nullable default class
21248         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21249         new methods.
21250
21251 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21252
21253         * metadata.c (select_container): New.  Refactor code to select the
21254         appropriate GenericContainer given the type of generic parameter
21255         we are looking for.
21256         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21257         not a MonoGenericContext.  Use select_container.  Update parameters.
21258         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21259         and MONO_TYPE_MVAR.
21260         (unwrap_arrays): Remove duplicate tests.
21261         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21262         generic instantiated class to find any arguments that are generic
21263         parameters.
21264         (mono_type_create_from_typespec_full): Use find_generic_param to
21265         avoid evicting some generic instantiations from the typespec
21266         cache.
21267
21268 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21269
21270         * reflection.c: fixed writing of doubles on ARM FPA.
21271
21272 2005-12-02  Robert Jordan  <robertj@gmx.net>
21273
21274         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21275
21276 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21277
21278         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21279         least on SUSE 10 they are not the same (on debian, they are just the
21280         same thing).
21281
21282 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21283
21284         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21285         DeclaringType for VARs and MVARs.
21286         * class.c (set_generic_param_owner): Fix initialization of owner
21287         fields.
21288
21289 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21290
21291         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21292
21293 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21294
21295         * threadpool.c: workaround for a bug that shows up on the Mac:
21296         select()+connect() on a blocking socket is not like it should
21297         be, so we proceed to connect() in that case, wasting the I/O
21298         threadpool thread until connect succeedes. Fixes bug #75436.
21299
21300 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21301
21302         * threadpool.c: fix typo when setting file descriptor states.
21303
21304 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21305
21306         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21307         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21308         create a temporary signature container.
21309         (mono_metadata_parse_generic_param): Update to changes.
21310         (mono_type_create_from_typespec_full): Update to changes.
21311         * loader.c (method_from_memberref): Don't use a
21312         MonoGenericContainer while parsing a memberref signature.
21313         (method_from_methodspec): Remove dead-store of the 'container'
21314         variable.  It's overwritten before use.
21315
21316         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21317         checks tighter.
21318         (mono_metadata_parse_generic_param): Likewise.
21319         * loader.c (find_method_in_class): Does not need a
21320         MonoGenericContainer.  Use 'mono_method_signature' rather than
21321         'mono_method_signature_full'.
21322         (find_method, mono_get_method_constrained, method_from_memberref):
21323         Update to changes.
21324
21325         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21326         owner-less generic-parameters are never evicted from the typespec
21327         cache.
21328
21329         * loader.c (method_from_memberref): Don't use the current context
21330         when parsing signatures.
21331         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21332
21333         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21334         side-effects in g_assert.
21335         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21336         that we don't potentially lose information.
21337
21338 2005-11-26  Dick Porter  <dick@ximian.com>
21339
21340         * icall.c:
21341         * threads.c: icalls to implement basic (ie, not named)
21342         System.Threading.Semaphore.
21343
21344 2005-11-24  Dick Porter  <dick@ximian.com>
21345
21346         * process.c
21347         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21348         Use GetProcessId() if it's available.
21349
21350 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21351
21352         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21353
21354 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21355             Ankit Jain  <jankit@novell.com>
21356
21357         * loader.c (mono_get_method_from_token): Initialize 'method' field
21358         of all generic parameters before parsing the signature.  Remove
21359         code that "fixed"-up MVAR references.
21360
21361 2005-11-23  Ankit Jain  <jankit@novell.com>
21362
21363         * metadata.c (mono_metadata_has_generic_params):
21364         (mono_metadata_load_generic_param_constraints):
21365         (mono_metadata_load_generic_params): Move duplicate code ...
21366         (mono_metadata_get_generic_param_row): ... here. Returns the
21367         first row-id in GenericParam table for a given owner (token).
21368         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21369         prototype.
21370
21371 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21372             Ankit Jain  <jankit@novell.com>
21373
21374         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21375         comparing VARs too.
21376         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21377         type->data.generic_param only if the type is an MVAR.
21378         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21379         leak owner-less VARs and MVARs into managed space.
21380
21381 2005-11-21  Martin Baulig  <martin@ximian.com>
21382
21383         * class-internals.h
21384         (MonoMethod): Moved the `generic_container' here from
21385         `MonoMethodNormal' since we now also need it for
21386         `MonoMethodPInvoke';
21387         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21388         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21389         an union containing both `MonoMethodNormal' and
21390         `MonoMethodPInvoke'.
21391
21392         * loader.c
21393         (mono_get_method_from_token): Allow implementing generic methods
21394         as interncalls.
21395
21396         * threads.c
21397         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21398         icall.
21399
21400 2005-11-17  Dick Porter  <dick@ximian.com>
21401
21402         * icall.c: 
21403         * process.h: 
21404         * process.c: Split the Process Start_internal icall into
21405         ShellExecuteEx_internal and CreateProcess_internal, which are
21406         called depending on whether UseShellExecute is true.  Fixes bug
21407         76670.
21408
21409         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21410
21411 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21412
21413         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21414         'msize' parameters, use the information in 'mspec' instead.
21415         (emit_object_to_ptr_conv): Ditto.
21416
21417         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21418         fields out of order. Fixes #76733.
21419
21420 2005-11-17  Ankit Jain  <jankit@novell.com>
21421
21422         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21423
21424 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21425
21426         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21427           bug #76575.
21428
21429 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21430
21431         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21432         for types with non-auto layout. Fixes #76717.
21433
21434 2005-11-16  Ankit Jain  <jankit@novell.com>
21435
21436         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21437         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21438         if generic_context is null.
21439           (mono_metadata_generic_param_equal): param->owner can be null.
21440           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21441         null.
21442
21443 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21444
21445         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21446         the correct value.
21447
21448 2005-11-15  Martin Baulig  <martin@ximian.com>
21449
21450         * object.c (set_value): Use mono_class_from_mono_type() instead of
21451         the hack for generic instances; fixes #76136.
21452
21453 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21454
21455         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21456         fields.
21457
21458         * image.c (load_metadata_ptrs): Initialize the new fields.
21459
21460         * reflection.c (create_dynamic_mono_image): Ditto.
21461
21462         * reflection.c (build_compressed_metadata): Use the new fields.
21463
21464         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21465         icall.
21466
21467         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21468         icall.
21469         
21470 2005-11-15  Ankit Jain  <jankit@novell.com>
21471             Raja R Harinath  <harinath@gmail.com>
21472
21473         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21474         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21475         new per-generic_container cache if the cached MonoType's context matches
21476         the current context.
21477           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21478         to the expected context.
21479           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21480
21481 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21482
21483         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21484         we changed the signature of an icall.
21485         * icall.c: Modify to mono_double_ParseImpl return true/false 
21486         depending on the success, instead of throwing the exception. This will
21487         help us in Double.TryParse methods.
21488         
21489 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21490
21491         * marshal.c (emit_marshal_object): Throw an exception when
21492         marshalling 'object' instead of crashing. Fixes #76696.
21493
21494 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21495
21496         * class-internals.h: Add prototype for mono_type_get_full_name ().
21497
21498 2005-11-11  Dick Porter  <dick@ximian.com>
21499
21500         * threads.c (mono_thread_manage): Make sure the main thread has
21501         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21502
21503 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21504
21505         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21506         console about the missing type.
21507         (mono_loader_set_error_method_load): Ditto.
21508
21509 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21510
21511         * mono-config.c (mono_get_config_dir): Set the system defaults if
21512         none is specified.
21513
21514         * assembly.c (mono_set_dirs): New API entry point to set the
21515         assembly and the config directory in one call
21516
21517 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21518
21519         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21520         the ftnptr was created from a delegate in a domain other than the
21521         current domain. Fixes #75377.
21522
21523         * exception.h exception.c: Add mono_get_exception_not_supported ().
21524
21525 2005-11-08  Martin Baulig  <martin@ximian.com>
21526
21527         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21528
21529 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21530
21531         * security-manager.h: Added definitions to deal with strongname key 
21532         pairs bigger (and smaller) than 1024 bits.
21533         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21534         adjust wrt the public key length being used.
21535
21536 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21537
21538         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21539           Windows build (r51396-51397).
21540
21541 2005-11-03  Martin Baulig  <martin@ximian.com>
21542
21543         * class.c (mono_class_setup_vtable_general): Also add generic
21544         methods to the vtable; fixes #76581.
21545
21546 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21547
21548         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21549         sure that we lookup GetString method from the System.Text.Encoding
21550         class, not the derived class or we get an empty method.
21551
21552         Fixed class #76612.
21553
21554 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21555
21556         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21557         if it has been previously set (embedders). 
21558
21559         Make mono_set_rootdir available also on Unix.
21560
21561 005-10-24  Robert Jordan  <robertj@gmx.net>
21562
21563         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21564
21565 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21566
21567         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21568         only calls which are made to native code use this flag.
21569
21570         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21571
21572 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21573
21574         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21575         Add support for FieldBuilders.
21576
21577 2005-10-29  Martin Baulig  <martin@ximian.com>
21578
21579         * mono-debug.c
21580         (mono_debug_using_mono_debugger): New public method; returns
21581         whether we're running inside the debugger.
21582
21583 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21584
21585         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21586         for Method/Constructor/FieldBuilders.
21587
21588 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21589
21590         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21591         and fields as well.
21592
21593 2005-10-26  Martin Baulig  <martin@ximian.com>
21594
21595         * mono-debug-debugger.c
21596         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21597
21598 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21599
21600         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21601         integer to isspace.
21602
21603 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21604
21605         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21606         when passing valuetypes byref. Fixes #76502.
21607
21608 2005-10-19  Jackson Harper  <jackson@ximian.com>
21609
21610         * profiler.c: Don't put a . in front of types that are not in a
21611         namespace.
21612
21613 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21614
21615         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21616
21617 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21620         #76436.
21621         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21622
21623 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21624
21625         * assembly.c metadata-internals.h icall.c: Define an additional
21626         parameter for mono_assembly_name_parse_full, so we can avoid creating
21627         S.R.AssemblyName.Version when no version info wasn't passed.
21628         
21629 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21630
21631         * class.c (mono_type_get_full_name): Reimplement method that was
21632         removed. 
21633
21634         * image.c: Some docs
21635
21636 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21637
21638         * profiler.c (output_newobj_profile): Fix printing of Total memory
21639         on x86.
21640
21641 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21642
21643         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21644
21645 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21646
21647         * threads.c: remove debug output.
21648
21649 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21650
21651         * threads.c (mono_thread_manage): Fix crashes if more than 64
21652         threads need to be aborted. Hopefully fixes #75899.
21653
21654         * assembly.c (mono_stringify_assembly_name): New helper function.
21655
21656         * class.c: Use mono_stringify_assembly_name instead of the similar
21657         static function.
21658
21659         * assembly.h assembly.c: Add support for calling a postload search 
21660         hook if an assembly cannot be loaded.
21661
21662         * appdomain.c: Register new search hooks which call the AssemblyResolve
21663         events in AppDomain. Fixes #75231
21664
21665 2005-10-07  Martin Baulig  <martin@ximian.com>
21666
21667         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21668         methods without debug info.
21669
21670 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21671
21672         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21673         wrappers.
21674
21675 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21676
21677         * file-io.c: now that we return symlinks, use lstat and, when the file
21678         is a symbolic link, stat, to get the file attributes. Also avoid the
21679         conversion to/from utf16/external.
21680
21681 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21682
21683         * class.c (mono_class_layout_fields): Compute klass->has_references
21684         correctly if an embedded valuetype is not yet initialized. Fixes
21685         #76331.
21686
21687 2005-10-04  Martin Baulig  <martin@ximian.com>
21688
21689         * metadata.c
21690         (mono_metadata_load_generic_param_constraints): New public
21691         function; splitted the constraints loading out from
21692         mono_metadata_load_generic_params().
21693
21694         * class.c (mono_class_create_from_typedef): Call
21695         mono_metadata_load_generic_param_constraints() after setting up
21696         the type and creating our parent; fixes #75329.
21697
21698 2005-10-04  Martin Baulig  <martin@ximian.com>
21699
21700         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21701         non-dynamic parent classes.
21702
21703 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21704
21705         * file-io.c : win32 build fix (ETXTBSY seems not found).
21706
21707 2005-10-04  Martin Baulig  <martin@ximian.com>
21708
21709         * reflection.c
21710         (mono_image_get_methodspec_token): Make the cache actually work;
21711         fixes #75974.
21712
21713 2005-10-04  Martin Baulig  <martin@ximian.com>
21714
21715         * class.c (mono_class_name_from_token): Removed the unneccessary
21716         `MonoGenericContext *' argument.
21717
21718 2005-10-04  Martin Baulig  <martin@ximian.com>
21719
21720         * loader.c
21721         (method_from_methodspec): Make the caching work again; fixes the
21722         performance regression from #76262.
21723
21724 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21725
21726         * file-io.c:
21727         * file-io.h:
21728         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21729         GetFileSystemEntries that performs the same work but without going
21730         into io-layer, locking, etc.
21731
21732 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21733
21734         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21735         ThreadState_Stopped as well. Fixes #76047.
21736
21737 2005-09-29  Martin Baulig  <martin@ximian.com>
21738
21739         * class.c
21740         (inflate_generic_context): If the new context has a `gmethod', set
21741         its `container' that that gmethod's `container'.
21742
21743         * metadata.c
21744         (mono_metadata_parse_generic_param): Simplify things;
21745         `generic_container = generic_context->container;' is just fine.
21746
21747         * loader.c (method_from_methodspec): Code cleanups.
21748
21749 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21750
21751         * decimal.c: fix warning (and let gcc generate correct
21752         code on ARM with optimizations).
21753
21754 2005-09-28  Martin Baulig  <martin@ximian.com>
21755
21756         * loader.c
21757         (method_from_memberref): Added `MonoGenericContext *class_context'
21758         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21759         (method_from_methodspec): If we're a memberref, use the enclosing
21760         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21761
21762 2005-09-28  Martin Baulig  <martin@ximian.com>
21763
21764         * object.c (mono_runtime_invoke_array): Added support for
21765         MONO_TYPE_GENERICINST; fixes #75917.
21766
21767 2005-09-27  Martin Baulig  <martin@ximian.com>
21768
21769         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21770         `k->byval_arg.type' to determine the actual type.
21771
21772         * loader.c (method_from_methodspec): Removed some hacks.
21773
21774 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21775
21776         * class-internals.h (mono_field_is_deleted): Do the test for
21777         rtspecialname before we check the actual name of the field. This
21778         prevents us from dereferencing a pointer into the string table,
21779         saving us from accessing a few pages
21780
21781         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21782         macros. This will allow a deadlock debugger to easily be plugged
21783         in.
21784
21785 2005-09-27  Martin Baulig  <martin@ximian.com>
21786
21787         * loader.c (method_from_methodspec): Create a "signature"
21788         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21789
21790 2005-09-27  Martin Baulig  <martin@ximian.com>
21791
21792         * class.c
21793         (inflate_generic_class): Correctly set the new context's
21794         container.
21795
21796         * loader.c
21797         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21798         instead of a `MonoGenericContext *'.
21799         (mono_method_signature_full): Take a `MonoGenericContainer *'
21800         instead of a `MonoGenericContext *'.
21801
21802         * metadata.c
21803         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21804         instead of a `MonoGenericContext *'.
21805         (mono_metadata_parse_method_signature_full): Likewise.
21806
21807 2005-09-26  Martin Baulig  <martin@ximian.com>
21808
21809         * class.c
21810         (mono_class_from_generic_parameter): Set `klass->generic_container'
21811         (mono_class_from_generic_parameter): Likewise.
21812         (mono_bounded_array_class_get): We inherit the generic container
21813         from the element class.
21814
21815         * loader.c
21816         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21817         argument rather than computing it here.
21818         (method_from_memberref): Correctly set the generic context before
21819         parsing the signature.  Fixes #75681.
21820
21821 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21822
21823         * object.c (mono_class_has_special_static_fields): Fix warnings.
21824
21825 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21826
21827         * assembly.c: Add parse_public_key function, to
21828         par the public keys. Also added mono_assembly_name_parse_full,
21829         to define it the parsed key should be freed or not.
21830         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21831         to parse a long format assembly name.
21832         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21833         private, since calling it to preserve the key requires
21834         freeing it manually.
21835         
21836 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21837
21838         * locales.c : removed HAVE_ICU part.
21839
21840 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21841
21842         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21843         field_is_special_static if the klass has no special static fields.
21844
21845         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21846         (MonoCachedClassInfo): Likewise.
21847
21848         * object.c (mono_class_has_special_static_fields): New helper function.
21849
21850 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21851
21852         * class.c (mono_class_create_from_typedef): Don't call 
21853         interfaces_from_typedef_full for enums.
21854         (mono_class_create_from_typedef): Compute the base types of enums directly
21855         without calling mono_class_setup_fields ().
21856         (mono_class_find_enum_basetype): New helper function.
21857
21858         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21859         one place inside the string heap.
21860         
21861 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21862
21863         * class.c: locking fixes, code cleanups, some docs added.
21864         Allocate some data structures in the image mempool.
21865
21866 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21867
21868         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21869         the example code.
21870         
21871 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21872
21873         * class-internals.h, class.c, reflection.c: reduce memory taken by
21874         MonoClass.
21875
21876 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21877
21878         * metadata.c, metadata.h, loader.h: documentation updates, code and
21879         API cleanups.
21880
21881 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21882
21883         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21884         the example code.
21885
21886         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21887         page faults caused by the runtime while reading metadata.
21888
21889 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21890
21891         * socket-io.c: the field names were changed 3 months ago and no one
21892         realized until bug #76077 got filed!
21893
21894 2005-09-20  Martin Baulig  <martin@ximian.com>
21895
21896         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21897
21898 2005-09-20  Martin Baulig  <martin@ximian.com>
21899
21900         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21901         write the rank into the class entry.
21902
21903 2005-09-20  Martin Baulig  <martin@ximian.com>
21904
21905         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21906
21907 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21908
21909         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21910
21911         * icall.c (custom_attrs_defined_internal): New icall.
21912
21913         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21914         function.
21915         (mono_custom_attrs_construct_by_type): New helper function.
21916
21917 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21918
21919         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21920         terminate the resulting string. Fixes #76123.
21921
21922 2005-09-16  Martin Baulig  <martin@ximian.com>
21923
21924         * mono-debug.c
21925         (mono_debug_add_method): Ignore inflated methods for the moment.
21926
21927 2005-09-14  Martin Baulig  <martin@ximian.com>
21928
21929         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21930
21931 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21932
21933         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21934         return a success/failure indication.
21935         (mono_metadata_interfaces_from_typedef_full): Ditto.
21936         (get_constraints): Ditto.
21937
21938 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21939
21940         * marshal.c (emit_marshal_array): Fix handling of null arrays.
21941         
21942         * marshal.c (emit_marshal_array): Add support for returning string
21943         arrays from delegates. Fixes #76063.
21944
21945         * marshal.c: Use the emit_ldloc/stloc macros where possible.
21946
21947 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
21948
21949         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
21950         icall.
21951
21952 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
21953
21954         * reflection.c icall.c: Fix after mono_get_exception_type_load
21955         signature change.
21956
21957         * assembly.c (mono_assembly_get_assemblyref): New helper function.
21958         (mono_assembly_load_reference): Use the new helper.
21959
21960         * class-internals.h (MonoLoaderError): New structure containing 
21961         information about type loading errors.
21962
21963         * class-internals.h loader.c: Add APIs to store per-thread loader
21964         error information.
21965
21966         * loader.c class.c: Set the loader error if needed.
21967
21968         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
21969
21970 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
21971
21972         * decimal.c: fixed to handle the broken ARM fp format.
21973
21974 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
21975
21976         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
21977         broken.
21978
21979 2005-09-06  Martin Baulig  <martin@ximian.com>
21980
21981         * domain.c (supported_runtimes): Added v2.0.50727.
21982
21983 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
21984
21985         * culture-info.h: reduce the size of some structures.
21986
21987 2005-09-05  Martin Baulig  <martin@ximian.com>
21988
21989         Reflect latest API changes in the August CTP.
21990
21991         * icall.c
21992         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
21993         ("MonoType.HasGenericArguments"): Removed.
21994         ("MonoMethod.BindGenericParameters"): Renamed to
21995         "MakeGenericMethod".
21996         ("MethodBuilder.BindGenericParameters"): Renamed to
21997         "MakeGenericMethod".    
21998
21999 2005-09-05  Martin Baulig  <martin@ximian.com>
22000
22001         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
22002
22003 2005-09-05  Martin Baulig  <martin@ximian.com>
22004
22005         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22006
22007         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
22008         generic_container is non-NULL.
22009
22010 2005-09-05  Martin Baulig  <martin@ximian.com>
22011
22012         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22013
22014         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
22015
22016 2005-08-29  Michal Moskal  <malekith@nemerle.org>
22017
22018         * reflection.c (encode_locals,
22019         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
22020         for large generic types.
22021
22022 2005-09-05  Martin Baulig  <martin@ximian.com>
22023
22024         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22025
22026         * class.c (mono_dup_array_type): New public method.
22027         (mono_metadata_signature_deep_dup): New public method.
22028         (dup_type): Correctly duplicate array and function types.
22029
22030 2005-09-05  Martin Baulig  <martin@ximian.com>
22031
22032         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22033
22034         * reflection.c (get_default_param_value_blobs): Handle generic types
22035         and generic methods.
22036
22037 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
22038
22039         * class.c: Fixed error reporting (method/class were inversed) for 
22040         inheritance demands.
22041         * security-manager.c|h: Added the AppDomain when calling the managed
22042         System.Security.SecurityManager.InheritanceDemand method.
22043
22044 2005-09-01  Raja R Harinath  <rharinath@novell.com>
22045
22046         * reflection.c (encode_marshal_blob): 'marshaltype' and
22047         'marshaltyperef' are alternate sources for the custom marshaler
22048         name.
22049
22050 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
22051
22052         * class.c: fix creation of array classes with rank == 1
22053         (patch by Ankit Jain <jankit@novell.com>).
22054
22055 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
22056
22057         * object.c: fix check for creating the bound data for arrays vs
22058         szarrays.
22059
22060 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22061
22062         * object.c: configuration file name is now based on the executable name,
22063         not the image name. Fixes bug #75931.
22064
22065 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
22066
22067         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
22068         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
22069
22070 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
22071
22072         * rand.c: Use wincrypt.h instead of WinCrypt.h.
22073
22074 2005-08-24  Ankit Jain  <jankit@novell.com>
22075             Raja R Harinath  <rharinath@novell.com>
22076
22077         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
22078           called by it recursively.
22079           (mono_class_init): Remove special case in pending_init handling, since it's
22080           superseded by the fix to mono_class_from_typeref.
22081
22082 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
22083
22084         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
22085         BROKEN_THREAD_START stuff.
22086
22087 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
22088
22089         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
22090         trampoline.
22091
22092         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
22093         
22094         * object.c (mono_delegate_ctor): Replace the original function address with
22095         a delegate trampoline.
22096
22097 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
22098
22099         * icall.c: add boolean argument to base64_to_byte_array and 
22100         InternalFromBase64String to control whether a whitespace-only string
22101         is allowed (or should casue a FormatException to be thrown). We need
22102         this as the behavior has changed between MS.NET 1.x and 2.0, and we
22103         to match the MS behaviour in both profiles.
22104         * appdomain.c: Bump corlib version.
22105
22106 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22107
22108         This patch implements a big portion of publisher policy
22109         support, used to bind assembly versions and redirect
22110         one assembly from version A to version B.
22111
22112         * assembly.c:
22113         New GSList loaded_assembly_bindings, for storing the cached
22114         assembly bindings.
22115         (assembly_binding_maps_name): New static function for checking if a 
22116         assembly binding information maps an assembly name.
22117         (mono_assembly_binding_info_free): New function for freeing
22118         assembly binding information resources.
22119         (get_publisher_policy_info): New static function for retrieving 
22120         assembly binding information from a MonoImage.
22121         (compare_versions): New static function for comparing an assembly
22122         binding information data and the version of an assembly name.
22123         (check_policy_versions): New static function for checking if an
22124         assembly binding info mapping an assembly name is valid for it.
22125         (mono_assembly_load_publisher_policy): New static function for
22126         loading the 'policy.major.minor.MyAssembly' image for an assembly
22127         with an assembly name 'aname'.
22128         (mono_assembly_bind_version): New static function for updating
22129         assembly redirection.
22130         (mono_assembly_apply_binding): New static function for applying
22131         assembly binding.
22132         (search_binding_loaded): New static function for searching 
22133         loaded assembly binding infos in the cache domain.
22134         (mono_assembly_load_full): Don't apply assembly binding for
22135         reflection only assemblies.
22136
22137         * metadata-internals.h: Add MonoAssemblyBindingInfo,
22138         which contains information about assembly binding. Also
22139         declare signature for mono_config_parse_publisher_policy ()
22140         function, used to retrieve pub policy info.
22141         
22142         * mono-config.c:
22143         (publisher_policy_start): New static function used to parse publisher 
22144         policy config files.
22145         (publisher_policy_parser): New static MonoParseHandler containing 
22146         the functions used when parsing config files.
22147         (mono_config_parse_publisher_policy): New function for parsing
22148         publisher policy files.
22149         
22150 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
22151
22152         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
22153
22154         * marshal.c (mono_delegate_free_ftnptr): Ditto.
22155
22156         * object.c (mono_get_addr_from_ftnptr): New helper function.
22157
22158         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22159
22160         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22161
22162 2005-08-19  Dick Porter  <dick@ximian.com>
22163
22164         * threads.c, threads.h, appdomain.c, appdomain.h,
22165         profiler-private.h, monitor.c, object.c, object-internals.h,
22166         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22167         store the thread ID, so it can hold a 64 bit value if needed.
22168
22169 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * reflection.c (mono_reflection_create_dynamic_method): Store the
22172         handle class into the method references as well so ldtoken works in
22173         dynamic methods.
22174
22175         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22176         types.
22177
22178 2005-08-19  Ankit Jain <jankit@novell.com>
22179
22180         Fix #75847.
22181         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22182           here rather than using the method signature of a arbitrary function
22183           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22184           two arguments.
22185           Hack done with Harinath.
22186
22187 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22188
22189         * threadpool.c: disable printing stack traces when we get a exception
22190         in a threadpool thread. I need to do more testing to figure out which
22191         cases actually print this. Fixes bug #75828.
22192
22193 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22194
22195         * icall.c: there might be ignored whitespace after the last '='. This
22196         fixes length computation and bug #75840.
22197
22198 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22199
22200         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22201         well. Fixes #75809.
22202
22203         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22204         #75784.
22205         
22206         * reflection.c (create_custom_attr_data): Ditto.
22207
22208 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22209
22210         * locales.c, culture-info.h : removed RegionLCIDMap.
22211         * culture-info-tables.h : regenerated.
22212
22213 2005-08-16  Martin Baulig  <martin@ximian.com>
22214
22215         * class.c (mono_type_get_name_recurse): Small fix.
22216
22217 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22218
22219         * locales.c : indentation fixie.
22220
22221 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22222
22223         * object-internals.h,
22224           locales.h,
22225           locales.c,
22226           culture-info.h,
22227           icall.c : added RegionInfo table support.
22228         * culture-info-table.h : regenerated for region support.
22229
22230 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22231
22232         * reflection.c (resolve_object): handle all kinds of MonoMethod
22233         including generic ones
22234
22235 2005-08-12  Ankit Jain <jankit@novell.com>
22236
22237         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22238           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22239
22240 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22241
22242         * process.c: Don't close a thread handle when it's NULL. This is a
22243         workaround for bug #75733.
22244
22245 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22246
22247         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22248
22249 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22250
22251         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22252
22253 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22254
22255         * threadpool.c: if a work item in the thread pool has a callback that
22256         catches a exception, don't propagate it after invoking the callback.
22257         Fixes bug #75336.
22258
22259 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22260
22261         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22262
22263         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22264
22265         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22266
22267         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22268
22269 2005-08-03  Ankit Jain  <jankit@novell.com>
22270
22271         Fix #75683.
22272         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22273           PInvoke calling convention is 0.
22274
22275 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22278         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22279
22280 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22281
22282         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22283         to handle threads not started by the GC (patch by Michael Meeks
22284         <michael.meeks@novell.com>).
22285
22286 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22287
22288         * reflection.c: Make buffer used in emitting types larger for some
22289         big generic types (patch by Michal Moskal).
22290
22291 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * mono-debug.c: Fix some (not all) alignment problems.
22294
22295 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22296
22297         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22298         Invoke mono_image_load_from_data_full passing the refonly
22299         parameter.
22300
22301         * assembly.c
22302         (mono_assembly_open_from_bundle): Add the refonly argument, 
22303         in order to pass it to other methods it calls to.
22304         (do_mono_assembly_open): Add the refonly argument, in order 
22305         to pass it to other methods it calls to.
22306         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22307         the refonly parameter to it.
22308
22309         * image.c: Add loaded_images_refonly_hash and
22310         loaded_images_refonly_guid_hash to cache the reflection
22311         only loaded images.
22312         (mono_images_init): Initialize the hash tables used for
22313         caching the reflection only images.
22314         (load_modules): Invoke mono_image_open_full passing the refonly
22315         parameter to load the modules the correct way.
22316         (build_guid_table): Add the refonly argument, to re-build the 
22317         correct hash table.
22318         (do_mono_image_open): Added the refonly argument, in order to
22319         define it for the loaded image.
22320         (mono_image_loaded_full): New function, which receives an
22321         additional parameter to look for the image in the refonly or
22322         non-refonly section.
22323         (mono_image_loaded): Updated, using mono_image_loaded_full.
22324         (mono_image_loaded_by_guid_full): The same case that happens
22325         with mono_image_loaded_full.
22326         (mono_image_loaded_by_guid): Likewise.
22327         (register_image): Use the ref_only variable inside MonoImage
22328         to decide in which hash table store the current image.
22329         (mono_image_open_from_data_full): Rename
22330         mono_image_open_from_data to mono_image_open_from_data_full,
22331         adding the refonly argument, to define the ref_only variable 
22332         inside MonoImage.
22333         (mono_image_open_from_data): Return 
22334         mono_image_open_from_data_full.
22335         (mono_image_open_full): Rename mono_image_open to
22336         mono_image_open_full, receiving the new refonly argument,
22337         to pass it to inner methods.
22338         (mono_pe_file_open): Update this function, to open
22339         a MonoImage as a non-refonly image.
22340         (mono_image_close): Use the refonly variable inside
22341         MonoImage to remove the image from the correct caches.
22342
22343         * image.h: Add the signatures of mono_image_open_full,
22344         mono_image_open_from_data_full, mono_image_loaded_full,
22345         mono_image_loaded_by_guid_full.
22346
22347         * metadata-internals.h: Add the ref_only field to 
22348         MonoImage.
22349         
22350 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22351
22352         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22353         Fix the last behavior, which used to load the assemblies and
22354         extract MonoReflectionAssemblyName information, instead of
22355         extract it from the metadata tables. Needed for Reflection
22356         Only assemblies.
22357         
22358 2005-07-29  Martin Baulig  <martin@ximian.com>
22359
22360         * mono-debug-debugger.c
22361         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22362         not initialized.
22363
22364         * mono-debug.c
22365         (mono_debug_address_from_il_offset): Check whether we have
22366         debugging support before attempting to take the lock.
22367         (mono_debug_source_location_from_address): Likewise.
22368         (mono_debug_source_location_from_il_offset): Likewise.
22369         (mono_debug_il_offset_from_address): Likewise.
22370         (mono_debug_address_from_il_offset): Likewise.
22371
22372 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22373
22374         * class.c (mono_class_from_name_case): Add support for dynamic images.
22375         Fixes #75650.
22376
22377         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22378         for #75479.
22379
22380 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22381         
22382         * reflection.c (mono_method_get_object): Fix warning.
22383
22384 2005-07-28  Martin Baulig  <martin@ximian.com>
22385
22386         * mono-debug.c
22387         (mono_debug_add_wrapper): Also write the wrapper type.
22388
22389 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22390
22391         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22392         
22393         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22394         data indicates the class has none.
22395
22396 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22397
22398         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22399         loader lock with the debugger lock. Prevents deadlocks for beagle.
22400
22401         Beagle can now run on an smp box for a weekend without any
22402         issues. Woohoo!
22403
22404 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22405
22406         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22407         in a module. Fixes #75629.
22408
22409 2005-07-26  Martin Baulig  <martin@ximian.com>
22410
22411         * mono-debug.c (mono_debug_add_wrapper): New static method.
22412         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22413         interncall or a wrapper.
22414
22415         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22416         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22417         (MONO_DEBUGGER_VERSION): Bump to 51.
22418
22419         * mono-debug-debugger.c
22420         (mono_debugger_add_type): Removed this empty function.
22421         (mono_debugger_add_method): Likewise.
22422
22423 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22424
22425         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22426         before accessing method->slot.
22427
22428 2005-07-21  Jb Evain  <jbevain@gmail.com>
22429
22430         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22431         Fixes #75010.
22432
22433 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22434
22435         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22436         #75587.
22437
22438 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22439
22440         * image.h image.c: Add mono_image_get_guid () API function.
22441
22442 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22443
22444         There were issues when multiple threads tried to load
22445         assemblies. A deadlock was created between assemblies_mutex and
22446         mono_domain_assemblies_lock. This fixes the issue by making the
22447         assembly ref counting be lock free. See bug 75586.
22448         
22449         * image.c (mono_image_close): The add ref function here was using
22450         Interlocked operations while the unref was using a mutex and a
22451         --. I don't think this was ever a bug that would be exposed in a
22452         non-pendantic way (ie, by an embedder doing a ref on one thread
22453         and an unref on another), but for the sake of correctness, this is
22454         now Interlocked.
22455
22456         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22457         (mono_assembly_load_reference): Call mono_assembly_addref rather
22458         than touching the refcount ourselves.
22459         (mono_assembly_close): Use InterlockedDecrement to unref the
22460         assembly. Don't acquire the lock unless it is actually needed.
22461
22462 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22463
22464         * class.c (mono_class_layout_fields): Fix calculation of has_references
22465         for generic types.
22466
22467 2005-07-12  Martin Baulig  <martin@ximian.com>
22468
22469         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22470
22471         * metadata.c
22472         (mono_type_hash): Provide better hashing for generic instances.
22473         (mono_generic_inst_hash): Improve hashing.
22474         (mono_generic_class_hash): Likewise.
22475
22476         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22477         generic instances.
22478
22479 2005-07-12  Martin Baulig  <martin@ximian.com>
22480
22481         * reflection.c (mono_reflection_create_runtime_class): Remove the
22482         hack for generic type definitions and non-`Run' assemblies.
22483         (mono_reflection_bind_generic_parameters): Also use
22484         `klass->wastypebuilder' to check for TypeBuilders.
22485
22486 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22487
22488         * class.c (mono_class_layout_fields): Fix calculation of has_references
22489         for generic types.
22490
22491         * class.c (inflate_generic_class): Fix a leak.
22492         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22493         for generic types.
22494
22495 2005-07-11  Martin Baulig  <martin@ximian.com>
22496
22497         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22498         on error.
22499
22500 2005-07-11  Martin Baulig  <martin@ximian.com>
22501
22502         * loader.c (find_method): Also lookup in
22503         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22504
22505 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22506
22507         * appdomain.c (mono_domain_unload): Don't free the error message
22508         before passing it to mono_get_exception_...
22509
22510         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22511         
22512 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22513
22514         * threads.c: try to better guess an available RT signal (bug #75387).
22515
22516 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22517
22518         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22519         and CACHE_OBJECT.
22520
22521 2005-07-07  Martin Baulig  <martin@ximian.com>
22522
22523         * class.c (mono_type_get_name_full): Return NULL for
22524         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22525         fixes #75408.
22526
22527 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22528
22529         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22530         exit the appdomain as well being aborted.
22531
22532         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22533         change back to the root domain after calling managed code. This enables
22534         appdomains using threadpools to be unloaded.
22535
22536 2005-07-07  Martin Baulig  <martin@ximian.com>
22537
22538         * class-internals.h
22539         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22540         into `MonoDynamicGenericClass' since we only need it for dynamic
22541         types.
22542
22543         * reflection.c (mono_class_bind_generic_parameters): We don't need
22544         to compute the `parent' here.
22545
22546 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22547
22548         * culture-info-table.h : regenerated.
22549
22550 2005-07-06  Martin Baulig  <martin@ximian.com>
22551
22552         * icall.c
22553         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22554
22555         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22556
22557 2005-07-06  Martin Baulig  <martin@ximian.com>
22558
22559         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22560         we're doing a signature-only comparision; fixes #74945.
22561
22562 2005-07-06  Martin Baulig  <martin@ximian.com>
22563
22564         * class-internals.h (MonoGenericClass): Moved some things out into
22565         a new `MonoInflatedGenericClass' type.  
22566         (MonoInflatedGenericClass): New type; the `klass' of a
22567         `MonoGenericClass' is now computed lazyly in
22568         mono_get_inflated_generic_class().      
22569
22570         * class.c (mono_get_inflated_generic_class): New public function.
22571         (mono_class_inflate_generic_method): Removed the unused
22572         `MonoClass *' argument.
22573         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22574         all the methods.
22575         (mono_class_create_generic): Make this static and merge it with
22576         mono_class_create_generic_2(); we're now called automatically from
22577         mono_get_inflated_generic_class().
22578
22579         * loader.c (mono_method_signature): Call
22580         mono_get_inflated_method() here.
22581
22582 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22583
22584         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22585         type of fields with RVA.
22586
22587         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22588         for this pseudo class.
22589         (my_mono_class_from_generic_parameter): Likewise.
22590         (mono_class_init): Allow interfaces to have cctors.
22591
22592 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22593
22594         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22595         lazily for AOT methods.
22596
22597 2005-07-05  Martin Baulig  <martin@ximian.com>
22598
22599         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22600         returns FALSE for a successful match, not TRUE.
22601
22602 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22603
22604         * loader.c (mono_method_get_index): Optimize this a bit.
22605
22606 2005-07-04  Martin Baulig  <martin@ximian.com>
22607
22608         * class.c
22609         (class_compute_field_layout): Move the check for generic type
22610         definitions into mono_class_layout_fields().  Fixes #74684.
22611         (mono_class_from_generic_parameter): Correctly compute
22612         `klass->parent'; fixes #75457.
22613
22614         * reflection.c (register_assembly, register_module): Make sure
22615         `domain->rejobject_hash' is already created.
22616
22617 2005-07-02  Martin Baulig  <martin@ximian.com>
22618
22619         * class-internals.h
22620         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22621         `MonoDynamicGenericClass'.      
22622
22623 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22624
22625         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22626         returned by a field getter is null, since null is a valid value.
22627
22628 2005-07-01  Martin Baulig  <martin@ximian.com>
22629
22630         * reflection.c (mono_reflection_generic_class_initialize): Update
22631         the `dgclass->fields [i].parent' to the correct class.
22632         (mono_image_get_fieldref_token): Use the declaring type, not the
22633         reflected type.
22634
22635 2005-07-01  Martin Baulig  <martin@ximian.com>
22636
22637         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22638
22639 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22640
22641         * threads.c (thread_cleanup): assert that thread != NULL
22642         (wait_for_tids_or_state_change): We were using the wrong variable
22643         when accessing wait->threads. `i' was always out of the bounds of
22644         the array.
22645
22646 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22647
22648         * loader.c: map user32 and kernel32 to libMonoSupportW
22649
22650 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22651
22652         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22653
22654 2005-06-28  Martin Baulig  <martin@ximian.com>
22655
22656         * loader.c (method_from_methodspec): Fix #75334.
22657
22658 2005-06-28  Martin Baulig  <martin@ximian.com>
22659
22660         Fix #74953 - Arrays now implement the generic IList<T> interface
22661         on the 2.0 platform.
22662
22663         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22664
22665         * reflection.c (mono_class_bind_generic_parameters): New public
22666         function; similar to mono_reflection_bind_generic_parameters(),
22667         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22668
22669         * domain.c (mono_init_internal): Try to initialize.
22670         `mono_defaults.generic_array_class' here; this'll only succeed if
22671         we're using the 2.0 corlib.
22672
22673         * icall.c
22674         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22675         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22676         (mono_lookup_internal_call): Added support for nested classes.
22677
22678         * loader.c
22679         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22680         we're an interncall and have generic arguments.
22681
22682         * class.c
22683         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22684         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22685         instance of System.Array.InternalArray<T> for arrays, so they
22686         implement the generic IList<T> interface.
22687
22688 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22689
22690         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22691         (chastamar@yahoo.com). Fixes #75374.    
22692
22693 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22694
22695         * culture-info-table.h: regenerated.
22696
22697 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22698
22699         * icall.c: handle spaces correctly for base64 strings.
22700
22701 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22702
22703         * *.c: Kill some warnings.
22704
22705 2005-06-23  Duncan Mak  <duncan@novell.com>
22706
22707         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22708         that this builds on Solaris 10 (x86).
22709
22710 2005-06-23  Martin Baulig  <martin@ximian.com>
22711
22712         * class.c
22713         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22714         generic type definitions.
22715
22716 2005-06-23  Martin Baulig  <martin@ximian.com>
22717
22718         Fix #75331.
22719
22720         * metadata.c (mono_class_get_overrides): Renamed to
22721         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22722         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22723         pass it to mono_get_method_full().
22724
22725 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22726
22727         * reflection.c (mono_reflection_create_runtime_class): take the
22728         mono_domain_lock in this method. Prevents deadlocks
22729
22730 2005-06-22  Martin Baulig  <martin@ximian.com>
22731
22732         * loader.c (method_from_methodspec): Fix #75330.
22733
22734 2005-06-22  Martin Baulig  <martin@ximian.com>
22735
22736         * reflection.c (type_get_qualified_name): Use
22737         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22738         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22739         argument; use it if we don't have an assembly name.
22740
22741 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22742
22743         * object.c: In mono_message_init, set "copy out" flag for in
22744         parameters with the [Out] flag.
22745
22746 2005-06-21  Martin Baulig  <martin@ximian.com>
22747
22748         * class.c
22749         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22750         and MONO_TYPE_PTR.
22751
22752 2005-06-21  Martin Baulig  <martin@ximian.com>
22753
22754         * class.c (mono_class_init): Don't initialize `class->fields' for
22755         generic instances since they're initialized again in
22756         compute_field_layout(). 
22757         (compute_field_layout): Set the field's `generic_info' here; fix
22758         #75320. 
22759
22760 2005-06-21  Martin Baulig  <martin@ximian.com>
22761
22762         * class-internals.h
22763         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22764
22765         * metadata.c (mono_metadata_generic_method_equal): Also
22766         distinguish the `generic_class'; fixes #75334.
22767
22768 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22769
22770         * domain.c:
22771         * appdomain.c:
22772         * domain-internals.h:
22773         * reflection.c: 'domain_assemblies' field is now protected by its own
22774         lock. Don't call into managed code to run the AssemblyLoad event if we
22775         now there are no registered delegates for it.
22776
22777 2005-06-20  Martin Baulig  <martin@ximian.com>
22778
22779         * class.c (mono_class_is_assignable_from): Use a custom version of
22780         mono_class_has_parent() to make things work for generic instances;
22781         fix #75300.
22782
22783 2005-06-20  Martin Baulig  <martin@ximian.com>
22784
22785         * loader.c (method_from_methodspec): Apply a patch from
22786         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22787
22788 2005-06-20  Martin Baulig  <martin@ximian.com>
22789
22790         * class.c (mono_class_init): Reverted Zoltan's last change; it
22791         breaks generics.
22792
22793 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22794
22795         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22796
22797 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22798
22799         * socket-io.c: fix the index in the socket array for writable/error
22800         sockets. Fixes bug #75306.
22801
22802 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22803
22804         * class.c (mono_class_init): Allow interfaces to have static ctors.
22805
22806 2005-06-17  Martin Baulig  <martin@ximian.com>
22807
22808         * loader.c (method_from_methodspec): Use `context->container' when
22809         parsing the `gmethod->inst'.
22810
22811 2005-06-17  Martin Baulig  <martin@ximian.com>
22812
22813         * class.c (mono_type_get_name_recurse): Don't add the assembly
22814         name for type arguments.
22815
22816 2005-06-15  Martin Baulig  <martin@ximian.com>
22817
22818         * reflection.c (mono_image_get_inflated_method_token): Encode
22819         correct klass; fixes #75260.
22820
22821 2005-06-13 Michal Moskal <malekith@nemerle.org>
22822
22823         * icall.c: Make GetCorrespondingMethod/Constructor take
22824         MonoReflectionMethod method not MonoMethod. Removed
22825         MonoType.GetCorrespondingField, and make
22826         MonoGenericType.GetCorrespondingField take name not
22827         MonoClassField.
22828
22829 2005-06-13  Michal Moskal <malekith@nemerle.org>
22830
22831         * reflection.c (field_encode_signature, encode_locals):
22832          Make sizes of buffers for types larger (for big generic types).
22833          (create_generic_typespec,
22834          mono_reflection_sighelper_get_signature_local,
22835          mono_reflection_sighelper_get_signature_field):
22836          Add asserts for too small buffers.
22837
22838 2005-06-15  Martin Baulig  <martin@ximian.com>
22839
22840         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22841         if our parent is not a dynamic type.
22842
22843 2005-06-15  Martin Baulig  <martin@ximian.com>
22844
22845         * class-internals.h (MonoTypeNameFormat): New enum.
22846
22847         * class.c
22848         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22849         (mono_type_get_full_name): Removed.
22850         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22851         argument instead of the boolean's.
22852
22853         * icall.c (ves_icall_System_MonoType_getFullName):
22854         Added `gboolean assembly_qualified'.    
22855
22856         * reflection.h
22857         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22858
22859         * reflection.c (mono_reflection_parse_type): Parse the new type
22860         name format.
22861
22862 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22863
22864         * icall.c: no need to convert from utf16 to utf8 and then back again
22865         after the call to GetLogicalDrives.
22866
22867 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22868
22869         * icall.c: frombase64. Fix problems exposed by new tests.
22870
22871 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22872
22873         * icall.c: added internal calls for converting char [] and strings in
22874         base64 into byte [].
22875
22876 2005-06-10  Martin Baulig  <martin@ximian.com>
22877
22878         * class.c (mono_class_create_generic_2): Read the nested classes
22879         from the metadata rather than from `gklass->nested_classes' since
22880         `gklass' might not be initialized yet.
22881
22882 2005-06-09  Duncan Mak  <duncan@novell.com>
22883
22884         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22885         all public headers. Fixes #74919.
22886
22887 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22888
22889         * domain.c: The key for proxy_vtable_hash is now a pointer
22890         array. Added new GHashFunc and GCompareFunc functions for this.
22891
22892         * class.h: The list of interfaces in MonoRemoteClass is known in
22893         advance and can't grow (we create a new MonoRemoteClass if needed),
22894         so now the interface array can be allocated together with
22895         MonoRemoteClass.
22896         
22897         * object.c: Added a new method create_remote_class_key.
22898         Fixed mono_remote_class so it does not depend on
22899         mono_upgrade_remote_class.
22900         Removed extend_interface_array.
22901         Added new method clone_remote_class(), which makes a copy of a remote
22902         class and adds a new interface or class to it.
22903         mono_upgrade_remote_class() now creates a new remote class (or gets
22904         it from the cache) if an vtable upgrade is needed. In this way
22905         we make sure that other objects sharing the same remote class
22906         don't get the new vtable with unwanted interfaces.
22907         
22908         * object-internals.h:
22909         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22910         
22911         * marshal.c: Track changes in mono_upgrade_remote_class().
22912
22913 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22914         * icall.c: Add runtime methods for obtaining members of inflated
22915         class, which were created from supplied non-inflated members. It
22916         is used in internal Get{Method,Constructor,Field} methods in
22917         System.Type
22918
22919 2005-06-09  Martin Baulig  <martin@ximian.com>
22920
22921         * reflection.c
22922         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22923
22924 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22925         * reflection.c (mono_image_basic_init): Define
22926         Version in MonoDynamicAssembly. 
22927         
22928 2005-06-08  Martin Baulig  <martin@ximian.com>
22929
22930         Fix #75136.
22931
22932         * loader.c
22933         (mono_method_signature_full): New public method; takes a
22934         `MonoGenericContext *'.
22935         (find_method): Use mono_method_signature_full() and pass the
22936         klass'es context to it.
22937
22938         * class.c (mono_class_is_inflated_method): Use
22939         mono_method_signature_full() and pass the context to it.
22940
22941 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
22942
22943         * object.c: add proper locking in mono_remote_class_vtable(),
22944         fixes possible memory corruption.
22945
22946 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
22947
22948         * marshal.c (mono_remoting_marshal_init): set
22949         initialized after initialization.
22950
22951 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22952
22953         * locales.c : hush.
22954
22955 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
22956
22957         * object.c (extend_interface_array): fix really silly
22958         memory corrupting / comparison bug.
22959
22960 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22961
22962         * reflection.c: Functions added to support the creation
22963         of CustomAttributeData, which includes Attribute data
22964         used by ReflectionOnly methods.
22965
22966         * reflection.h:  mono_reflection_get_custom_attrs_data and
22967          mono_custom_attrs_data_construct added (functions exposed).
22968
22969          * icall.c: Added mono_reflection_get_custom_attrs_data
22970          as icall.
22971         
22972 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
22973
22974         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
22975         lupus's request.
22976
22977 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
22978
22979         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
22980
22981         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
22982         dynamic DllImportAttribute.
22983
22984         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
22985         dynamic DllImportAttribute.
22986
22987         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
22988         Fixes #75162.
22989
22990 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22991
22992         * threads.c: avoid segfault when an unstarted thread is aborted.
22993
22994 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
22995
22996         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
22997         Returns the name and version of the runtime for reporting.
22998
22999 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23000
23001         * appdomain.c: bump corlib version.
23002         * object-internals.h: new field in MonoReflectionAssembly.
23003
23004 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23005
23006         * object-internals.h: Carlos forgot to add this field.
23007
23008 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23009
23010         * icall.c: Added create_version to create instances
23011         of Version of MonoReflectionAssemblyName. This change helps
23012         the AssemblyName tests to keep running fine.
23013         
23014 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
23015   
23016         * object.c (mono_method_return_message_restore): A somehow less
23017         intrusive fix for #75138.
23018
23019 2005-06-03  Raja R Harinath  <rharinath@novell.com>
23020
23021         * object.c (mono_method_return_message_restore): Fix computation
23022         of expected number of out args.
23023
23024 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23025
23026         * reflection.c (mono_image_get_method_info): Fix the case when the
23027         charset is empty.
23028
23029 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
23030
23031         * object.c: Added missing null check in
23032           mono_method_return_message_restore.
23033
23034 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23035
23036         * reflection.c (mono_image_get_method_info): Handle the case when
23037         dllentry is empty.
23038
23039 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
23040
23041         * object.c: When creating the vtable for a proxy, take into account
23042         all inherited interfaces, not only the ones registered in
23043         iclass->interfaces. This fixs bug #74996.
23044         Also, in mono_method_return_message_restore, verify that the array
23045         of out args has the expected lengh.
23046
23047 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23048
23049         * socket-io.c: update the timeout in Poll when the call is interrupte.
23050
23051 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23052
23053         * socket-io.c: support abort/suspend in Select_internal after last
23054         change.
23055
23056 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23057
23058         * threadpool.c: remove warning.
23059
23060 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23061
23062         * icall.c:
23063         * socket-io.[ch]: Select_internal uses poll() now when available, thus
23064         removing the 1024 limit from select(). Runtime part of the fix for
23065         bug #71203.
23066
23067 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23068
23069         * socket-io.c: when resolving the addresses for the same
23070         host returned by gethostname(), get the local IPs from the interface
23071         list. Loopback addresses are discarded if the are interfaces up with
23072         non-loopback ones. Fixes bug #63265.
23073
23074 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
23075
23076         * appdomain.c, verify.c, object-internals.h, reflection.c:
23077         bumped corlib number to 36, and added new extra_flags field
23078         to ReflectionMethodBuilder and friends.  Fixes #75060.
23079
23080 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
23081
23082         * gc.c: register a new weak link only if the object is non-null
23083         (fixes bug#75047).
23084
23085 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23086
23087         * culture-info.h : short time pattern too.
23088
23089 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23090
23091         * culture-info.h : expand long time pattern string length.
23092
23093 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23094
23095         * culture-info-table.h : update (more French date format; #72788).
23096
23097 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
23098
23099         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
23100         the method is static. Fixes #75029.
23101
23102 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
23103
23104         * reflection.c: Update the table_idx field of method builders after
23105         saving the module, since it can change. This is a workaround for
23106         bug #74914. 
23107
23108 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23109
23110         * culture-info-table.h : update (additional French date format).
23111
23112 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
23113
23114         * icall.c (ves_icall_type_Equals): Revert last change.
23115         
23116         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
23117
23118         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
23119
23120 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
23121
23122         * class-internals.h: Added executioncontext_class field to 
23123         MonoDefaults structure.
23124         * domain.c: Cache System.Threading.ExecutionContext class in 
23125         mono_defaults.
23126         * object.c: Capture the ExecutionContext for asynchroneous calls in
23127          mono_async_result_new.
23128         * object-internals.h: Added execution_context and original_context 
23129         fields to MonoAsyncResult. Added execution_context to MonoThread.
23130         * security-manager.c|.h: Added mono_get_context_capture_method to 
23131         return the capture method (if required by the security manager or by
23132         the framework version used).
23133         * threadpool.c: Apply capture (if present) ExecutionContext in 
23134         mono_async_invoke and revert to original context after it completes.
23135
23136 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
23137
23138         * culture-info-table.h : updated (real hacky solution for zh-CHT).
23139
23140 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
23141
23142         * culture-info-table.h : zh-CHT related workaround.
23143
23144 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23145
23146         * marshal.c (emit_marshal_custom): Add some error checking and call the
23147         methods in the ICustomMarshaler interface. Fixes #74875.
23148         
23149         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
23150         native->managed wrappers.
23151
23152 2005-05-12  Martin Baulig  <martin@ximian.com>
23153
23154         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
23155         here and use the loader lock.
23156
23157         * mono-debug.c: Properly lock when the debugger is not attached.
23158         (mono_debug_init): Release the initial lock if we're not running
23159         in the debugger.
23160
23161 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * marshal.c (emit_marshal_custom): Pass through NULL values without
23164         calling the custom marshalling routines.
23165
23166         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23167         conversion in structures. Fixes #74882.
23168
23169 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23170
23171         * culture-info-table.h : zh-* cultures were missing.
23172
23173 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23174
23175         * threads.c: Added a new event background_change_event which is signaled
23176         when a thread changes its background mode.
23177         Moved here several checks previously done in managed code. The checks
23178         require the thread lock, and using the thread lock in managed code
23179         can result in deadlocks.
23180         Merged Start_internal and Thread_internal into a single method. Now 
23181         Thread_internal does all work of creating and starting a thread.
23182         Added icalls for setting and getting the state of the object. Moved from
23183         managed code to avoid locking there.
23184         Added wait_for_tids_or_state_change() which is called instad of
23185         wait_for_tids when waiting for non-backround threads to end. This method
23186         will return if one of the threads ends or the background_change_event
23187         is signaled.
23188         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23189         the background mode. This method signals the background_change_event
23190         event.
23191         * icall.c:
23192         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23193         removed Start_internal.
23194         
23195 2005-05-11  Martin Baulig  <martin@ximian.com>
23196
23197         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23198         to order of some fields to get proper alignment on 64-bit machines.
23199
23200 2005-05-11  Martin Baulig  <martin@ximian.com>
23201
23202         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23203         changes as they're broken and completely fuck up the debugger.
23204
23205         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23206
23207 2005-05-10  Martin Baulig  <martin@ximian.com>
23208
23209         * reflection.c (mono_reflection_generic_class_initialize): Don't
23210         call mono_class_setup_parent() here.
23211
23212 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23213
23214         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23215         send/receive timeout use an integer in milliseconds. We were using a
23216         struct timeval.
23217
23218 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23219
23220         * locales.c:
23221         (internal_get_cultures): reserve the first slot of the array for the
23222         InvariantCulture, which will be filled in managed code.
23223
23224 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23225
23226         * reflection.c (mono_image_fill_module_table): Initialize the
23227         GENERATION field as well.
23228
23229 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23230
23231         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23232         Monitor.Enter on the object.
23233
23234 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23235
23236         * threads.c: Enable the wait for running threads when exiting.
23237         * icall.c: Suspend all threads before exiting.
23238
23239 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23240
23241         * assembly.c (mono_assembly_load_reference): Fix warning.
23242
23243 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23244
23245         * threadpool.c: changed the default number of threads per cpu. From now
23246         on, the default will be 20 + (5 * number of cpus) instead of 50.
23247
23248 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23249
23250         * loader.c (mono_method_get_signature_full): Add locking here.
23251
23252 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23253
23254         * appdomain.c: Moved methods for parsing and freeing assembly
23255         names to assembly.c.
23256         * assembly.c, domain-internals.h: Created public methods for parsing
23257         assembly names. Fixed mono_assembly_load_with_partial_name:
23258         it now finds the best match, taking into account the version,
23259         token and culture specified in the partial name. Also return
23260         the latest version if no version information is specified.
23261
23262 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23263
23264         * threadpool.c: replace check for SocketAsyncCall class.
23265
23266 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23267
23268         * threadpool-internals.h:
23269         * Makefile.am: added threadpool-internals.h
23270
23271         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23272         that happen in threadpool threads (tested on MS).
23273         (mono_thread_pool_remove_socket): new function that dispatch any pending
23274         AIO call on a socket that is closing. By now only epoll really needs it,
23275         as select/poll wake up when the socket closes.
23276
23277
23278         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23279
23280 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23281
23282         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23283
23284 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23285
23286         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23287
23288 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23289
23290         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23291         has an abort request, convert it into a suspend request.
23292
23293 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23294
23295         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23296         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23297         is not supported yet.
23298
23299 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23300
23301         * image.c: register assemblies loaded from data (bundles) in the loaded
23302         assemblies hash. Fixes bug #74772.
23303
23304 2005-04-29  Martin Baulig  <martin@ximian.com>
23305
23306         * class.c (mono_type_get_name_recurse): Update to the new naming
23307         schema from the latest .NET 2.x beta2.
23308         (mono_class_setup_vtable_general): If we're a generic instance,
23309         copy the vtable from our generic type definition and inflate all
23310         the methods in it.
23311
23312         * loader.c (find_method): Update to the new naming schema from the
23313         latest .NET 2.x beta2.
23314
23315 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23316
23317         * class.c (mono_class_init): Add a mono_loader_unlock to the
23318         #74734 fix.
23319
23320 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23321
23322         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23323         suspend_all_other_threads () call for the time being, since it can hang.
23324
23325         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23326         the background threads to exit, since it can also hang.
23327
23328         * class.c (mono_class_init): Applied patch from Ankit Jain 
23329         (radical@gmail.com). Avoid pending init errors when a field refers
23330         to a nested class using a typeref. Fixes #74734.
23331
23332         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23333         this for dynamic modules.
23334
23335 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23336
23337         * threads.c: don't wait for threads that are in the process of aborting
23338         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23339         and waiting for background threads to finish. This makes xsp and
23340         mod-mono-server exit without random length delays and/or hangs.
23341
23342 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23343
23344         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23345
23346 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23347
23348         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23349         dynamic types to prevent infinite loops. Fixes #74727.
23350
23351         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23352         ..._is_assignable_to.
23353
23354 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23355
23356         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23357
23358 2005-04-25  Martin Baulig  <martin@ximian.com>
23359
23360         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23361
23362         * domain.c
23363         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23364
23365         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23366
23367         * reflection.c (build_compressed_metadata): Set metadata header
23368         version to 2.0.
23369
23370 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23371
23372         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23373         number into an integral and a decimal part. Fixes #70473.
23374
23375         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23376
23377 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23378
23379         * culture-info-table.h : reflected the latest locale-builder output.
23380
23381 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23382
23383         * threadpool.c: check for SuspendRequested too when deciding if
23384         mono_thread_interruption_checkpoint should be called.
23385
23386 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23387
23388         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23389         * threads.c: remove interruption_mutex and use Interlocked instead. When
23390         suspending all the threads, wait for all the suspended events at once.
23391         If we're shutting down and get an APC that is going to be queued,
23392         call mono_thread_execute_interruption immediately, as the thread might
23393         be sleeping on a pthread condition or mutex.
23394
23395         * icall.c: call mono_runtime_set_shutting_down before suspending the
23396         threads.
23397
23398         Fixes bug #74693. And now xsp is happier when exiting.
23399
23400 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23401
23402         * loader.c (mono_stack_walk): Fix #74690.
23403
23404 2005-04-22  Martin Baulig  <martin@ximian.com>
23405
23406         * mono-debug.h (MonoDebugMethodJitInfo): Added
23407         `MonoDebugMethodJitInfo *jit'.
23408
23409         * mono-debug.c (mono_debug_read_method): Cache the
23410         MonoDebugMethodJitInfo in `address->jit'.
23411         (mono_debug_free_method_jit_info): New public method.
23412
23413 2005-04-22  Martin Baulig  <martin@ximian.com>
23414
23415         * class.c (mono_class_is_assignable_from): Disallow
23416         type parameter -> interface.
23417
23418 2005-04-21  Dick Porter  <dick@ximian.com>
23419
23420         * threads.c (mono_thread_create): Turn an assertion into an error.
23421
23422 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23423
23424         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23425         
23426         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23427         Fix some gcc 4.0 warnings.
23428
23429 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23430
23431         * file-io.c: fix alt dir separator char on unix systems
23432         and cleanup (fixes bug #71214).
23433
23434 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23435
23436         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23437         a call to a remote domain, since the method may be an
23438         interface method in the client domain. This fixes bug #74192.
23439
23440 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23441
23442         * threadpool.c: recv/send are now performed before going back to managed
23443         code to save one transition.
23444
23445 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23446
23447         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23448
23449         * metadata/threadpool.c: removed hack to workaround the bug above.
23450
23451         Fixes bug #74618.
23452
23453 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23454
23455         * reflection.c reflection.h: Fix handling of parameter defaults in
23456         dynamic methods. Also fixes handling of parameter attributes.
23457         Fixes #74609.
23458
23459         * mono-debug.c (mono_debug_close_image): Fix warning.
23460
23461 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23462
23463         * socket-io.h: replaced old unused field with new 'blocking'.
23464         * threadpool.c: restore socket blocking state on windows(tm).
23465
23466 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23467
23468         * icall.c: don't return the codebase in the AssemblyName[] returned by
23469         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23470         * object-internals.h: Removed FIXME (fields were presents) and fixed
23471         versioncompat declaration.
23472
23473 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23474
23475         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23476         not closed, so don't cleanup when it happens.
23477
23478 2005-04-13  Chris Toshok  <toshok@ximian.com>
23479
23480         * mono-debug-debugger.h: change prototype for
23481         mono_debugger_lookup_type.
23482
23483         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23484         this function, although it should probably be named
23485         mono_debugger_init_type.
23486
23487 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23488
23489         * threadpool.c: fix non-AIO case.
23490
23491 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23492
23493         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23494         the built-in profiler to measure just JIT compilation times.
23495
23496 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23497
23498         * threadpool.c: the epollfd might be closed by another thread at
23499         any time, so ignore EBADF at treat it as a "we're closing" sign.
23500
23501 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23502
23503         * threadpool.c: release the semaphores with a count equals to the number
23504         of working threads in both IO and regular pools. Fixed typo that messed
23505         up the count of IO pool threads. Don't initialize the pipe handles if
23506         we're using epoll.
23507
23508 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23509
23510         * threadpool.c: some systems don't like a NULL when deleting the socket
23511         from epoll.
23512
23513 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23514
23515         * threadpool.c: fix semaphore allocation.
23516
23517 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23518
23519         * threadpool.c: added epoll() based implementation for asynchronous IO
23520         that is used instead of the default poll() when available.
23521         It can be disabled by setting MONO_DISABLE_AIO.
23522
23523 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23524
23525         * threadpool.c: windows needs 'closesocket' and instead of returning
23526         0 when the stream is closed while in select, it returns -1. Fixes bug
23527         #74573.
23528
23529 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23530
23531         * class.c (class_compute_field_layout): Fix the regression caused by
23532         the previous try.
23533
23534 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23535
23536         * threadpool.c: separate pool for socket async. IO.
23537         * threadpool.h: mono_max_worker_threads is not a global any more.
23538
23539 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23540
23541         * class.c (class_compute_field_layout): Fix #74549.
23542
23543 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23544
23545         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23546         use 2 connected sockets instead.
23547
23548 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23549
23550         * mono-config.c: Add new entry point for mkbundle
23551         mono_config_parse_memory. 
23552
23553 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23554
23555         * threadpool.c: removed another unused function.
23556
23557 2005-04-08  Ankit Jain  <radical@corewars.org>
23558
23559         * reflection.c (get_default_param_value_blobs): Add 'types'
23560         parameter to get the types encoded in the constant table.
23561         (mono_param_get_objects): Use the type from the constant table,
23562         not the type of the parameter, when creating default values.
23563         Handle null default values correctly.
23564
23565 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23566
23567         * file-io.c:
23568         * file-io.h:
23569         * threadpool.c:
23570         * threadpool.h:
23571         * icall.c:
23572         * socket-io.c: removed dead code for async IO.
23573
23574 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23575
23576         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23577
23578         * threadpool.c: intercept socket async. calls and pass them to a thread
23579         that is polling and dispatching the job items to the threadpool as
23580         socket become ready. Fixes bugs #71217, #71933.
23581
23582         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23583         between char and short/ushort arrays.
23584
23585         * socket-io.c: remove dead code.
23586
23587 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23588
23589         * locales.c,
23590           icall.c : removed InternalToUpper_Comp() and
23591           InternalToLower_Comp().
23592
23593 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23594
23595         * char-conversions.h : The tables were incorrectly generated. Should
23596           be generated against invariant culture.
23597
23598 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23599
23600         * object.c (mono_runtime_invoke_array): Fix return value when 
23601         passing pre-created valuetype objects to ctors.
23602
23603         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23604         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23605         Fixes #74338.
23606
23607 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23608
23609         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23610         only used with --security and hides the wrong corlib version error.
23611
23612 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23613
23614         * class.c: Changed mono_class_name_from_token so that types
23615         outside of a namespace don't have an initial period.  Improved
23616         the g_warning message used in _mono_class_get when loading
23617         fails.
23618         * assembly.c: In mono_assembly_load_reference, when an assembly
23619         can't be found, "No such file or directory" is misleading and
23620         unhelpful because a few paths were checked for the presence of
23621         the assembly.  When that happens (ENOENT), display a nicer
23622         message indicating the directories that were searched.  In all
23623         cases, the warning is made easier to read for non-hackers.
23624
23625 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23626
23627         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23628         project/solution.
23629         * appdomain.h|domain.c: Removed inline from functions.
23630         * appdomain.c: Reduced warnings when compiling on windows.
23631         * icall.c: Fixed output_debug declaration to gunichar2*.
23632         * mono-config.c: Reduced warnings when compiling on windows.
23633         * rand.c: Added missing "windows.h". Added missing return value.
23634         * rawbuffer.c: Added missing winsock2.h for windows.
23635         * sysmath.h: Added mono-compiler.h header to allow/ease 
23636         compilation with non-GCC compilers.
23637         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23638         Removed cast warnings.
23639
23640         Adapted from the work of J Lothian (for VC6).
23641
23642 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23645         from default_path.
23646
23647 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23648
23649         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23650         the 2.0 profile.
23651
23652 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23653
23654         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23655         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23656         stuff, and it would probably use $(prefix)/share rather than
23657         $(prefix)/lib.
23658
23659 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23660
23661         * console-io.c: added 2 includes that might be missing.
23662
23663 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23664
23665         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23666         profile.
23667
23668         * reflection.c (create_custom_attr): Allocate the params array using
23669         alloca so it gets GC tracking.
23670
23671 2005-03-23  Chris Toshok  <toshok@ximian.com>
23672
23673         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23674         out some spew.
23675
23676 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23677
23678         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23679         changes to pick up any changes in prefix, etc.
23680
23681 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23682
23683         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23684         
23685         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23686         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23687
23688 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23689
23690         * class-internals.h object-internals.h class.c reflection.c: Extend the
23691         mono_lookup_dynamic_token () function to return the class of the
23692         token as well. 
23693
23694         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23695         well. Fixes #73848.
23696
23697 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23698
23699         * security-manager.c: Skip inheritance checks for intra-corlib
23700         class inheritance and method overrides. This skips a lot of checks
23701         and (anyway) permissions cannot work until corlib is loaded.
23702
23703 2005-03-23  Martin Baulig  <martin@ximian.com>
23704
23705         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23706         MONO_TYPE_GENERICINST.  
23707
23708 2005-03-23  Martin Baulig  <martin@ximian.com>
23709
23710         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23711
23712 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23713
23714         * class.c: added locking comments to some functions.
23715         Cache the interface offsets arrays (saves about 20 KB
23716         of runtime memory in a typical app).
23717         Reduce the time overhead in mono_class_setup_supertypes ().
23718
23719 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23720
23721         * icall.c: speedup and fix leaks in GetMethodsByName and
23722         GetPropertiesByName.
23723
23724 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23725
23726         * reflection.c: some locking fixes.
23727
23728 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23729
23730         * metadata.c: added missing break in case statement.
23731
23732 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23733
23734         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23735         typedbyref return values. Fixes #73941.
23736
23737 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23738
23739         * security-manager.c|h: Added demandunmanaged method and 
23740         suppressunmanagedcodesecurity class to MonoSecurityManager.
23741         Renamed aptc class to allowpartiallytrustedcallers.
23742
23743 2005-03-17  Martin Baulig  <martin@ximian.com>
23744
23745         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23746
23747 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23748
23749         * file-io.c: disabled file async. IO using aio_*. It uses the
23750         threadpool now. Workaround for bug #73718.
23751
23752 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23753
23754         * assembly.h, mono-config.c: added code to deal with bundled configs
23755         for bundled assemblies.
23756
23757 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23758
23759         * *.c, private.h: cleanup, removing old private.h header file.
23760
23761 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23762
23763         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23764         and throw_on_unmappable_char attributes.
23765
23766 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23767
23768         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23769         _ProcessName_internal.
23770
23771 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23772
23773         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23774         #73631.
23775
23776         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23777         are no longer used.
23778
23779 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23780
23781         * object.c (compute_class_bitmap): Add support for generics. Fixes
23782         #73527.
23783
23784 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23785
23786         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23787
23788 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23789
23790         * filewatcher.c: commented out the code for windows watcher, as we don't
23791         use it (we use the managed implementation instead).
23792
23793 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23794
23795         * object-internals.h (MonoThread): Remove 'unused1' field.
23796
23797         * appdomain.c: Bump corlib version.
23798
23799         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23800
23801         * reflection.c (mono_reflection_create_runtime_class): Remove the
23802         AssemblyBuilder.Save optimization since it causes too many problems.
23803
23804 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23805
23806         * exception.c|h: Added mono_get_exception_reflection_type_load to
23807         create a ReflectionTypeLoadException object.
23808         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23809         to return NULL is a InheritanceDemand fails during reflection. Updated
23810         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23811         ReflectionTypeLoadException if an InheritanceDemand fails during 
23812         reflection. Added icall mapping for GetLinkDemandSecurity.
23813         * security-manager.c|h: Added ves_icall_System_Security_
23814         SecurityManager_GetLinkDemandSecurity internal call to return the
23815         class and methods permissions set for a LinkDemand. Removed unused
23816         fields in MonoSecurityManager.
23817
23818 2005-03-10  Martin Baulig  <martin@ximian.com>
23819
23820         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23821         it's a generic instance.
23822
23823 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23824
23825         * reflection.c (mono_get_object_from_blob): Applied patch from
23826         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23827
23828         * class.c (mono_class_is_assignable_from): Another try at fixing 
23829         #73469 without breaking anything.
23830
23831 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23832
23833         * class.c: (mono_class_is_assignable_from): Revert the last changes
23834         since they don't work with generics.
23835         
23836         * class.c (mono_class_is_assignable_from): Fix build bustage.
23837
23838         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23839         the managed IsAssignableFrom method. Fixes #73469.
23840
23841         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23842         function.
23843
23844 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23845
23846         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23847         memory when the remoting callback does not sets the out arguments.
23848         Fixes #73007.
23849
23850         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23851         by mistake.
23852
23853         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23854
23855         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23856
23857         * appdomain.c: Bump corlib version.
23858
23859 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23860
23861         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23862         function.
23863
23864         * threads.c (mono_thread_attach): Detect threads which are not started
23865         by the GC pthread wrappers.
23866
23867 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23868
23869         * icall.c: Added new icall for RNG.
23870         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23871         single handle on Linux to access /dev/urandom and fix #73183.
23872
23873 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23874
23875         * object.c: setting the new vtable in a transparent proxy object must
23876         not change the GC descriptor.
23877
23878 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23879
23880         * object.c: fixed compilation without GCJ support.
23881         * reflection.c: for runtime-created types ensure klass->has_references
23882         is correct (bug #73215).
23883
23884 2005-03-02  Martin Baulig  <martin@ximian.com>
23885
23886         * class.c (mono_class_is_assignable_from): Make this work if
23887         `oklass' is a generic instance; fixes #72831.
23888
23889 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23890
23891         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23892         with hasthis set.
23893         
23894         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23895
23896         * marshal.c: Reorganize native->managed marshalling code to also use
23897         the emit_marshal_... functions.
23898
23899 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23900
23901         * object.c: typed allocs have issues with bitmap sizes > 30,
23902         so check for max_set >= 30.
23903
23904 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23905
23906         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23907         managed code. Fixes #73012.
23908
23909         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23910
23911         * metadata.c reflection.c: Load/Emit elem_mult as well.
23912         
23913         * metadata.h (MonoMarshalSpec): Add comment.
23914
23915         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23916
23917         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23918         num_elem to -1 if not given.
23919
23920         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23921
23922         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23923         given values.
23924
23925 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23926
23927         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23928
23929 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23932
23933         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23934
23935 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23936
23937         * object.c: generalized the reference bitmap creation
23938         and added hooks for the new GC.
23939         * class-internals.c: removed the gc_bitmap field from MonoClass.
23940
23941 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23942
23943         * domain.c: help the compiler to produce better code
23944         in mono_jit_info_table_find ().
23945
23946 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
23947
23948         * object.c: make all allocations look typed.
23949
23950 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
23951
23952         * socket-io.c: load Mono.Posix if it's not loaded already
23953         (fixes bug#73033).
23954
23955 2005-02-24  Martin Baulig  <martin@ximian.com>
23956
23957         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
23958         * reflection.c (dup_type): Likewise.
23959
23960 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
23961
23962         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
23963         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
23964
23965 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
23966
23967         * domain.c, threads.c, object-internals.h: make the critical thread
23968         local vars use the fast access mode (even when we're compiled in
23969         a lib). Provide accessors to be used by the jit during codegen.
23970
23971 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23972
23973         * appdomain.c: Changed hook functios behavior to include
23974         support for the reflection only assemblies. Some icalls were changed
23975         to support the mentioned assemblies too. Signatures of static methods
23976         try_assembly_resolve and real_load now have an additional parameter:
23977         refonly.
23978
23979         * assembly.c: General changes to mono_assembly_ methods to support
23980         reflection only api. Functions mono_assembly_open, mono_assembly_load,
23981         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
23982         suffix, to support an additional gbool parameter to specify whether
23983         the assembli is reflection only or not. Created some new hook functions 
23984         to add support for reflection only assemblies. Signatures of static 
23985         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
23986         have now an additional parameter: refonly.
23987
23988         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
23989         indicating whether the assembly is reflection only or not.
23990
23991         * exception.c: Add mono_get_exception_invalid_operation.
23992
23993         * icall.c: Throw an InvalidOperationException when trying to invoke
23994         a property/method/event, or trying to set/get the value of a field.
23995         Also add an icall to retrieve the ref_only flag to the
23996         MonoReflectionAssembly.
23997
23998 2005-02-23  Chris Toshok  <toshok@ximian.com>
23999
24000         Part of fix for #72827.
24001         * mono-debug.c (mono_debug_add_method): add lexical block data to
24002         the info we write.  Kind of a hack at the moment - we copy the
24003         lexical block info from the MonoDebugMethodInfo to the
24004         MonoDebugMethodJitInfo here, before writing it.
24005         (mono_debug_read_method): read the lexical block info.
24006
24007         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
24008
24009         * debug-mono-symfile.h: add lexical block support.
24010
24011         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
24012         support.
24013
24014 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24015
24016         * loader.c (mono_lookup_pinvoke_call): Fix warning.
24017
24018         * object.c (mono_runtime_free_method): Call mono_free_method () and
24019         put the TODOs there.
24020
24021         * loader.c (mono_free_method): Free up most memory allocated for 
24022         dynamic methods.
24023
24024 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24025
24026         * reflection.c: properly flag a Type argument to a
24027         named custom attr value (bug #72248).
24028
24029 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24030
24031         * reflection.c: reduce code duplication in named custom
24032         attribute encoding.
24033
24034 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
24035
24036         * reflection.c: properly encode custom attrs of type object
24037         (bug #72649).
24038
24039 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24040
24041         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
24042
24043 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
24044
24045         * socket-io.c: load System.dll if it's not loaded already
24046         (bug #72850 and #70477).
24047
24048 2005-02-21  Martin Baulig  <martin@ximian.com>
24049
24050         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
24051         generic instances.
24052
24053 2005-02-21  Martin Baulig  <martin@ximian.com>
24054
24055         * reflection.c (mono_image_build_metadata): We also need to
24056         "fixup" the MethodImpl table after we computed the final method
24057         indices.  Call fixup_methodimpl() to do that.
24058         (fixup_methodimpl): New private method.
24059
24060 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24061
24062         * assembly.c: special case mscorlib.dll (bug#72536),
24063         patch from Carlos Alberto Cortez.
24064
24065 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
24066
24067         * threads-types.h threads.c: Fix build bustage.
24068
24069         * threads.c: Use a union for long<->double conversions.
24070
24071         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
24072         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
24073
24074         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
24075         containing the checkpoint call with NOT_TAKEN.
24076         
24077         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
24078         checkpoint before pushing the arguments, so they won't have to be
24079         spilled to stack.
24080
24081 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24082
24083         * domain.c, assembly.c, domain-internals.h: make some data
24084         const and relocation-free.
24085
24086 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
24087
24088         * object.c, appdomain.c, class-internals.h: introduce the
24089         MonoClassRuntimeInfo structure to hold the info needed to
24090         use a class at runtime. Made mono_class_vtable() lock-free
24091         for all the appdomains.
24092
24093 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
24094
24095         * metadata-internals.h, image.c: introduce a per-image mempool to
24096         be used for memory that has the same lifetime as the image.
24097
24098 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
24099
24100         * domain.c: In mono_init_internal(), instead of selecting the first
24101         runtime version supported by an executable, get a list of all
24102         supported versions and select the one for which an mscorlib exists
24103         (since even if the runtime supports a given version, it doesn't mean
24104         that the framework for that version is installed).
24105         Modified get_runtimes_from_exe to support this behavior.
24106         In supported_runtimes, added information about additional system
24107         assembly versions.
24108         
24109         * assembly.c: Added support for more than one system assembly version
24110         per runtime version. Updated the assembly list.
24111         In mono_assembly_remap_version, removed the initial version check,
24112         since we don't know to which version we need to compare until we
24113         get the version set on which the assembly is based.
24114         Moved the code for loading corlib into the new method
24115         mono_assembly_load_corlib(), so it can be used by the initialization
24116         code.
24117         
24118         * domain-internals.h: Updated data structures and added declaration
24119         for mono_assembly_load_corlib.
24120
24121 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24122
24123         * reflection.c (resolve_object): Fix the creation of the signature in 
24124         the SignatureHelper case.
24125
24126         * assembly.c (mono_assembly_remap_version): Fix binary search.
24127         
24128 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
24129  
24130         * class.c: Added inheritance check when a method is overloaded (from a
24131         virtual method or when implementing an interface) and when a class is
24132         inherited. Added functions to set a failure for a class and to 
24133         retreive the exception from a failure.
24134         * class-internals.h: Added fields to MonoClass to keep the exception
24135         information status for inheritance (or other exceptions) to be thrown
24136         later (i.e. not at load time).
24137         * object.c: Throw the inheritance SecurityException when a type is to 
24138         be created with either class or method inheritance violations.
24139         * reflection.c|h: Fix when getting declsec from a class. Removed 
24140         unrequired code for class. Improved sanity in parameter naming.
24141         * security-manager.c|h: Added functions to check for class and method
24142         inheritance.
24143
24144 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24145
24146         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
24147         and has_finalize in dynamic types as well.
24148
24149 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
24150
24151         * culture-info-table.h : fixed currency format for en-GB (and so on).
24152
24153 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
24154
24155         * gc.c: ensure the GC handles never have 0 as a value.
24156
24157 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24158
24159         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24160         a pointer to a struct to unmanaged code. Fixes #72625.
24161
24162 2005-02-16  Martin Baulig  <martin@ximian.com>
24163
24164         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24165
24166 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24167
24168         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24169
24170 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24171
24172         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24173
24174         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24175         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24176         etc. Fixes #71471.
24177
24178         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24179
24180         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24181
24182 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24183
24184         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24185         changes to make the current context a field in MonoThread.
24186
24187 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24188
24189         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24190         the last change.
24191         
24192         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24193         extracted from mono_marshal_get_native_wrapper.
24194
24195         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24196         to create wrappers around native functions.
24197
24198         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24199         delegates for arbitrary function pointers. Fixes #71472.
24200
24201 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24202
24203         * threads.c: cleaned up the code a little.
24204
24205 2005-02-15  Martin Baulig  <martin@ximian.com>
24206
24207         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24208         the data table.
24209
24210         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24211         allocate larger chunks if needed.
24212
24213 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24214
24215         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24216         in by mistake.
24217
24218 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24219
24220         * domain.c: keep the domains in an array and ensure the domain ids
24221         are kept small, so they can be used as indexes to domain-specific data
24222         with a small memory overhead.
24223
24224 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24225
24226         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24227
24228 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24229
24230         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24231
24232 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24233
24234         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24235
24236         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24237         values.
24238
24239         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24240         
24241 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24242
24243         * domain-internals.h: add the hashtable here.
24244
24245         * class-internals.h: Remove `info' from MonoMethod
24246
24247         * domain.c: Add a new hashtable, jit_trampoline_hash
24248
24249 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24250
24251         * object.c: don't set the value of static fields
24252         (fixes bug#72494).
24253
24254 2005-02-11  Martin Baulig  <martin@ximian.com>
24255
24256         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24257         (mono_debug_add_method): Silently ignore the method if it's too big.
24258         (mono_debug_add_type): Likewise.
24259
24260 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24261
24262         * threads.c, appdomain.c: remove #ifdefs from the code.
24263
24264 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24265
24266         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24267         common security informations. This allows us to stay in unmanaged code
24268         when doing LinkDemand and it's special cases (except for the first 
24269         time for initialization). The flags a very much used with --security.
24270         * reflection.c|h: Added code to get declarative security attributes 
24271         for LinkDemand and InheritanceDemand. This required to refactor the
24272         existing code for Demand.
24273         * security-manager.c|h: Added new method fields for the special cases
24274         of LinkDemand.
24275
24276 2005-02-10  Martin Baulig  <martin@ximian.com>
24277
24278         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24279         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24280
24281 2005-02-10  Martin Baulig  <martin@ximian.com>
24282
24283         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24284         debugging code; this is almost a complete rewrite.
24285
24286         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24287
24288 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24289
24290         * domain.c, object.h: expose mono_string_equal () and 
24291         mono_string_hash ().
24292         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24293         it's implemented in managed code.
24294
24295 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24296
24297         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24298         lo leak objects between appdomains.
24299
24300 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24301
24302         * assembly.c: old compilers compilation fix from 
24303         robertj@gmx.net (Robert Jordan).
24304
24305 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24306
24307         * class-internals.h: Little reminder for the future.
24308
24309         * debug-helpers.c: Fix up wrapper_type_names
24310
24311 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24312
24313         * image.c, metadata-internals.h: when loading an image from a file,
24314         mmap all of it and use the same codepaths as when using a
24315         in-memory image: the code is simpler and we use less memory
24316         (both writable and readonly).
24317
24318 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24319
24320         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24321         API to alloc runtime data structures that need to be tracked by the
24322         GC and contain pointers.
24323         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24324         make the code more readable and eventually use a different GC.
24325
24326 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24327
24328         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24329         for out arguments.
24330         
24331 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24332
24333         * object.c: In release_type_locks(), don't release the cctor lock
24334         if it has already been released. This fixes a crash in the
24335         thread5 test.
24336
24337 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24338
24339         * gc.c, marshal.c, icall.c: register a delegate for finalization
24340         only when the native function pointer has been allocated for it.
24341
24342 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24343
24344         * object.c: cleaned up some code, allocate objects that are
24345         pointer free with the atomic malloc variant. Allocate memory
24346         for static data from the mempool if it's pointer-free.
24347         Allocate the bounds array at the end of the array data, when needed.
24348         * object-internals.h, object.h: move a private function in a private
24349         header.
24350         * class.c: handle missing case in tracking references in fields.
24351
24352 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24353
24354         * class.c, class-internals.h: keep track if a type has
24355         reference fields in either the instance or static fields.
24356
24357 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24358
24359         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24360         and renamed to MonoRuntimeInfo. Added fields to store the expected
24361         framework assembly version. Changed mono_get_framework_version and
24362         mono_get_runtime_version for a single mono_get_runtime_info method.
24363         
24364         * assembly.c: Added method to remap system assembly versions to the
24365         current executing runtime version. Removed old mapping code.
24366         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24367         
24368         * icall.c, reflection.c: Track api changes.
24369
24370 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24371
24372         * loader.c (method_from_memberref): Improve error reporting,
24373         produce the class name instead of the typeref/typedef index. 
24374
24375 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24376
24377         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24378
24379 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24380
24381         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24382         stdcall and charset name mangling.  Reorganize the code and add
24383         some tracing stuff.
24384
24385 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24386
24387         * monodiet.c: More iters!
24388
24389         * marshal.c: Iter usage.
24390
24391         * icall.c: Iter usage.
24392
24393         * object.c: Use iters.
24394
24395         * debug-helpers.c: More iters
24396
24397 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24398
24399         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24400         under win32.
24401
24402 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24403
24404         * mono-debug-debugger.c: use iters
24405
24406         * class.c, class-internals.h: mono_class_setup_events is static
24407         now
24408
24409         * All callers: use iters
24410
24411 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24412
24413         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24414         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24415
24416 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24417
24418         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24419
24420         * marshal.h: Add prototypes for ldfld/stfld_remote.
24421
24422         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24423         this is called during startup.
24424         
24425 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24426
24427         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24428         MonoThreadsSync struct private in monitor.c. Changed the way
24429         MonoThreadsSync is allocated so it's faster and there is no
24430         need to keep track of it with a finalizer and it uses less memory.
24431         This also finally allows us to allocate mono objects as ptrfree when
24432         there are no reference fields.
24433
24434 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24435
24436         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24437         disappearing link to the GC interface and use them to simplify
24438         the gchandles code.
24439
24440 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24441
24442         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24443         stfld_remote which call mono_load/store_field_new. This allows methods
24444         calling ldfld/stfld wrappers to be AOTed.
24445
24446         * console-io.c: Include sys/filio.h under solaris.
24447         
24448         * console-io.c: Include curses.h if needed correctly.
24449
24450 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24451         
24452         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24453         method->klass as well.
24454
24455         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24456
24457         * class.c (mono_class_init): Switch on lazy initialization of 
24458         methods.
24459
24460         * class.c (mono_class_get_finalizer): Handle the case when the 
24461         finalizer is inherited.
24462
24463 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24464
24465         * console-io.c: <curses.h> is needed by term.h on solaris.
24466
24467 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24468
24469         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24470         mono_class_setup_properties where possible. Remove this ftn from
24471         the header file, and make it static.
24472
24473 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24474
24475         * loader.c: Add missing setup_... call.
24476
24477         * class.c: Add missing setup_... calls.
24478
24479         * class.c (mono_class_init): Switch on lazy initialization of 
24480         the generic vtable.
24481         
24482         * class.c (mono_class_init): Fix generics broken by the recent changes.
24483
24484         * monodiet.c (handle_type): Add missing setup_... calls.
24485
24486         * class.c: Back out garbage in previous patch.
24487         
24488         * class.c: Add missing setup_... calls.
24489
24490         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24491         mono_class_setup_methods () if possible.
24492
24493         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24494
24495         * class-internals.h (MonoCachedClassInfo): New structure.
24496
24497         * class.c: Initialize properties and events fields of MonoClass lazily.
24498
24499         * class.c: Add infrastructure for lazily initializing the methods and
24500         vtable fields of MonoClass. Not yet used.
24501
24502         * class.c (mono_class_get_finalizer): New helper function.
24503
24504         * class.c: Add infrastructure for loading some class related data from
24505         an AOT file.
24506
24507         * object.c: Add infrastructure for initializing the vtable from data
24508         in the AOT file.
24509
24510         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24511
24512         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24513         appropriate initialization function before accessing parts of the
24514         MonoClass structure.
24515
24516         * marshal.c: Fix warnings.
24517         
24518         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24519
24520         * mono-debug-debugger.c (get_exception_message): Use 
24521         mono_class_get_method_from_name_flags ().
24522
24523 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24524
24525         * reflection.c, appdomain.c: Replace a few manual searches that
24526         Zoltan missed. (Paolo approved this part of my initial patch).
24527
24528 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24529
24530         * profiler.c: disable recording statistical events at report time.
24531
24532 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24533
24534         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24535         to byteswap arrays of enum values, too (bug #72080).
24536
24537 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24538
24539         * appdomain.c (set_domain_search_path): Allow this to be called if
24540         domain->setup is not yet set.
24541
24542         * loader.c (mono_method_get_index): New helper function.
24543
24544         * loader.c reflection.c: Use mono_method_get_index ().
24545
24546         * class.c (mono_class_get_method_from_name_flags): New helper method.
24547
24548         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24549         this.
24550
24551         * class.c (mono_class_get_cctor): New helper method.
24552
24553         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24554         mono_class_get_method () to look up methods.
24555
24556 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24557
24558         * console-io.c: Fix the build, this should work on Windows.
24559
24560 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24561
24562         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24563         be set to null to keep things valid
24564
24565 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24566
24567         * icall.c: added Console 2.0 icalls.
24568         * Makefile.am: added console-io.[ch]
24569         * console-io.[ch]: internal calls for Console 2.0 API.
24570
24571 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24572
24573         * class.c: make sure we consider all the interfaces
24574         when calculating max_interface_id (bug found by
24575         Jeroen Frijters running ikvm).
24576
24577 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24578
24579         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24580         valuetype fields to null.
24581
24582         * object.c (set_value): Ditto. Fixes #71669.    
24583
24584 2005-01-31  Martin Baulig  <martin@ximian.com>
24585
24586         * metadata.c (mono_metadata_has_generic_params): New public
24587         function; checks whether something is a generic method.
24588
24589 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24590
24591         * appdomain.c: fix infinite recursion when adding assemblies.
24592
24593 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24594
24595         * object.c: Fix small typo to return all items for Environment.
24596         GetCommandLineArgs.
24597
24598 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24599
24600         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24601         reflection.c: more domain and assembly-unload related fixes
24602         and memory leaks plugs.
24603
24604 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24605
24606         * 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.
24607
24608 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24609
24610         * loader.c (mono_method_signature): Make this method lazy
24611         (mono_get_method_from_token): Don't computate the signature here.
24612
24613         Doing this saves quite a bit of memory. I got 90 kb on starting up
24614         monodoc. It should also save some disk reads on startup.
24615
24616         * *: MonoMethod->signature might be NULL now. You *MUST* use
24617         mono_method_signature.
24618
24619 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24620
24621         * object.c (mono_runtime_get_main_args): Return an array from the
24622         current domain here. Fixes #71938.
24623
24624 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24625
24626         * monitor.c: formatting changes to comply with the
24627         mono coding style and remove #ifdefs from the code.
24628
24629 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24630
24631         * metadata.c, private.h: remove some unneeded data
24632         and use a more compact representation for table schemas.
24633
24634 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24635
24636         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24637         to get a better distribution in hash tables.
24638         * *.c: use mono_aligned_addr_hash() where appropriate.
24639         * assembly.c: make var static.
24640
24641 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24642
24643         * domain-internals.h: Put MonoJitInfo on a diet.
24644
24645         * domain.c: Fix a warning.
24646
24647 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24648
24649         * gc.c: rework the gc handles code to reuse handles
24650         when freed.
24651
24652 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24653
24654         * domain.c: fixed long standing bug in mono_string_equal() which
24655         was brought to light with the ldstr changes.
24656
24657 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24658
24659         * reflection.c: Remove warning by adding missing include for marshal.h
24660
24661 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24662
24663         * domain.c, object.c: change the ldstr_table to hold
24664         MonoString* as keys: makes the runtime isinterned lookup
24665         faster and simplifies memory management.
24666
24667 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24668  
24669         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24670         possible to add imperative security checks before calling the icall.
24671         * reflection.c: Return security attributes on the original MonoMethod
24672         (and not the wrapped one). This fix permissions on icalls.
24673
24674 2005-01-25  Dick Porter  <dick@ximian.com>
24675
24676         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24677         the check for mktime() support actually test the mktime() return
24678         value.  "Fixes" bug 71682, though the output is still different to
24679         MS.
24680
24681 2005-01-25  Martin Baulig  <martin@ximian.com>
24682
24683         * class.c (mono_class_is_assignable_from): Make this work for
24684         generic instances.
24685
24686 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24687
24688         * marshal.c (mono_string_utf8_to_builder)
24689         (mono_string_builder_to_utf16): We might not have ownership of the
24690         string. In thise case, we need to create a new buffer.
24691
24692         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24693         be null, in which case, use the default capacity.
24694
24695 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24696
24697         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24698         GC events to the profiler.
24699
24700 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24701
24702         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24703         if you don't want the GC to run.
24704
24705 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24706
24707         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24708         start providing a GC API and keeping different implementations in
24709         their own file.
24710         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24711
24712 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24713
24714         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24715         mmap rather than allocating a huge buffer.
24716         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24717         above.
24718
24719 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24720
24721         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24722         and CheckExecutionRights.
24723         * reflection.c|h: Keep the index of the declarative security to be 
24724         used, instead of the pointer, when AOT compiler is used. Also add 
24725         class initialization when requesting demands.
24726         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24727         CheckExecutionRights. Both properties are now FALSE by default, and
24728         unmodifiable, unless the --security option is used.
24729
24730 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24731
24732         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24733         reflection.c: properly refcount images and assemblies, many leaks fixed.
24734
24735 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24736
24737         * threadpool.c: increase the timeout for threads in the thread pool to
24738         10s.  Fixes bug #67159.
24739
24740 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24741
24742         * class-internals.h: Sun's compiler insists on explicit
24743         signed on bit fields to handle then correctly.
24744
24745 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24746
24747         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24748         Make the size of the array fit only the number of invalid path
24749         chars that we have.
24750
24751         * class.c (_mono_class_get): Improve the error reporting when a
24752         class referenced is not found, to assist debugging. 
24753
24754 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24755
24756         * threads.c: fix off-by-one error.
24757         * domain.c: free data allocated in the domain.
24758
24759 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24760
24761         * reflection.c (mono_method_body_get_object): Fill out exception info
24762         as well.
24763
24764         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24765         structure.
24766         
24767 2005-01-19  Martin Baulig  <martin@ximian.com>
24768
24769         * loader.c (mono_get_method_constrained): Make this work again.
24770
24771 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24772
24773         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24774         guint16 to match the managed side.
24775
24776         * reflection.c (mono_reflection_body_get_object): Fill out local
24777         variables array.
24778
24779         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24780         as well.
24781
24782         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24783         'local_var_sig_token'.
24784
24785 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24786
24787         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24788         System.Drawing.
24789
24790         * reflection.c (mono_method_body_get_object): Handle abstract and
24791         runtime methods.
24792
24793 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24794
24795         * marshal.c, loader.c, class-internals.h, reflection.c:
24796         store the emthod data for a wrapper in an array instead of a list.
24797
24798 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24799
24800         * marshal.c: change the code to allocate memory more
24801         conservatively for method wrappers.
24802
24803 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24804
24805         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24806         fields from MonoClass to the marshal info structure where they belong.
24807
24808 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24809
24810         * class.c, object.c, class-internals.h, marshal.c: rearrange
24811         some fields and tweak some types to lower memory usage.
24812
24813 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24814
24815         * threads.c (signal_thread_state_change): Handle the case when the
24816         target thread is the current thread.
24817
24818         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24819
24820         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24821         emit_ptr_to_object_conv. 
24822
24823         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24824         marshalling. Fixes #71352.
24825
24826 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24827
24828         * metadata.h, blob.h: move table enum to blob.h so it can be included
24829         in any header.
24830         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24831         cut the size of MonoImage/MonoDynamicImage.
24832
24833 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24834
24835         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24836
24837 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24838
24839         * reflection.c, reflection.h, icall.c: add a function to check
24840         if an attribute type is defined for a metadata object.
24841
24842 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24843
24844         * object-internals.h: Added some needed fields from StringBuilder class.
24845         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24846
24847 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24850         threads before shutting down the runtime.
24851
24852         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24853
24854 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24855
24856         * object-internal.h, threads.c: implement stacksize and 
24857         parameterized thread start functionality (requires
24858         matching corlib). Marked broken code for later removal.
24859
24860 2005-01-12  Martin Baulig  <martin@ximian.com>
24861
24862         * class-internals.h (MonoGenericClass): Moved the `initialized'
24863         flag to MonoDynamicGenericClass, removed `init_pending'.
24864         (MonoGenericInst): Added `is_reference' flag.
24865
24866 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24867
24868         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24869         inside the MSDOS header. Fixes #71201.
24870
24871         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24872         gc thread.
24873         (mono_domain_finalize): Ditto.
24874
24875 2005-01-12  Martin Baulig  <martin@ximian.com>
24876
24877         * class.c (mono_get_shared_generic_class): Use the cache for
24878         non-dynamic generic classes.
24879
24880         * class-internals.h (mono_class_create_generic_2): Removed
24881         function prototype, this function is now static inside class.c.
24882
24883         * class.c (mono_class_create_generic_2): Made this static, only
24884         call it from mono_class_init() and mono_class_setup_parent().
24885         (collect_implemented_interfaces_aux): Call mono_class_init() on
24886         the interfaces we collect.
24887         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24888
24889 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24890
24891         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24892         it a real thread handle.
24893
24894         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24895         MonoJitExceptionInfo, since each catch clause needs its own variable.
24896         
24897 2005-01-11  Dick Porter  <dick@ximian.com>
24898
24899         * image.c (mono_pe_file_open): New variant on mono_image_open()
24900         that does not set up the CLI metadata; used for FileVersionInfo so
24901         it can get the data for windows binaries too.
24902         
24903         * process.c (process_read_string_block): Don't read off the end of
24904         the StringTable block.
24905
24906         These both fix bug 70766.
24907
24908 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24909
24910         * gc.c: set some fields to NULL at GC cleanup time.
24911         * threads.c: if we quit the main thread, call exit ().
24912
24913 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24914
24915         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24916
24917 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24918
24919         * threads.h, threads.c, object.c: added accessor and settor for
24920         main_thread. Handle it specially when exiting from it: wait
24921         for other foreground threads to exit.
24922
24923 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24924
24925         * process.c, verify.c: remove some bloat.
24926
24927 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24928
24929         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24930         the calling convention to cdecl under win32.
24931
24932 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24933
24934         * object.c (mono_object_get_size): New function to get the size of
24935         an object instance.
24936
24937         * profiler.c (simple_allocation): Use above.
24938
24939 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24940
24941         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
24942         ves_icall_System_AppDomain_getRootDomain (as it's not required to
24943         get an appdomain by it's id and we can't assume the root's id is 0).
24944         * domain-internals.h: Change the function prototype to match.
24945         * icall.c: Change the icall table for AppDomain.
24946
24947 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
24948
24949         * locales.c (string_invariant_compare_char): Only compute
24950         GUnicodeTypes in the case where we need them.  Test for ordinality
24951         first and return if so.
24952
24953         From the commit:
24954
24955                 /*
24956                  * FIXME: here we must use the information from c1type and c2type
24957                  * to find out the proper collation, even on the InvariantCulture, the
24958                  * sorting is not done by computing the unicode values, but their
24959                  * actual sort order.
24960                  */
24961
24962 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24963
24964         * loader.c: for P/Invoke methods, allow the "Internal" shared
24965         library name to refer to the calling process symbol namespace.
24966
24967 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
24968
24969         * Makefile.am: Add the security manager to the build.
24970         * security-manager.c|h: New. Initialization of the security manager.
24971
24972 2005-01-07  Dick Porter  <dick@ximian.com>
24973
24974         * threads.c: 
24975         * monitor.c: Update thread state during Monitor and WaitHandle
24976         waits.  Fixes bug 71031.
24977
24978 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
24979
24980         * reflection.c (property_encode_signature): Correctly handle when the
24981         property has no methods.
24982
24983 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
24984
24985         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
24986         
24987         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
24988         fields from mb, not rmb. Fixes #71017.
24989
24990         * marshal.c (emit_ptr_to_str_conv): Add support for 
24991         ByValTStr -> string conversion. Fixes #71015.
24992
24993         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
24994
24995         * mempool.c (mono_mempool_contains_addr): New helper function.
24996
24997 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
24998
24999         * metadata.c (mono_metadata_compute_size): Fix size calculation of
25000         HasSematics encoded fields.
25001         
25002         * metadata.c (mono_type_to_unmanaged): Improve error message for 
25003         invalid string marshalling.
25004
25005         * metadata.c: Fix warnings.
25006         
25007 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
25008
25009         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
25010         profiler support.
25011
25012 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25013
25014         * domain.c object.c domain-internals.h: Revert part of r38077 since the
25015         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
25016         tests.
25017
25018 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
25019
25020         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
25021         so methods containing these can be AOTed.
25022
25023 2005-01-03  Martin Baulig  <martin@ximian.com>
25024
25025         * loader.c (find_method): Removed the hack for generic instances.
25026         (method_from_memberref): If our parent is a generic instance, pass
25027         its generic type definition to find_method() and then inflate the
25028         method.
25029         (mono_get_method_constrained): Pass the generic type definition to
25030         find_method() and inflate the method later.
25031
25032         * class-internals.h (MonoStats): Added `generic_class_count'.
25033
25034         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
25035         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
25036
25037         * reflection.c (mono_custom_attrs_from_params): Don't ignore
25038         generic type definitions.
25039
25040 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
25041
25042         * loader.c icall.c: Fix warnings.
25043
25044 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
25047         blittable types. Fixes #70864.
25048
25049 2004-12-29  Martin Baulig  <martin@ximian.com>
25050
25051         * icall.c
25052         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
25053
25054         * reflection.c (mono_method_get_object): Create a
25055         "System.Reflection.MonoGenericMethod" for inflated methods; don't
25056         call mono_get_inflated_method().
25057
25058         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
25059
25060 2004-12-27  Martin Baulig  <martin@ximian.com>
25061
25062         * class-internals.h (MonoMethod): Added `is_inflated' flag.
25063         (MonoMethodInflated): Added `inflated' field.
25064
25065         * class.c (mono_class_inflate_generic_method): Don't really
25066         inflate the method here; just set the `is_inflated' flag in the
25067         MonoMethod.
25068         (mono_class_get_inflated_method): Actually inflate the method here
25069         if it's not already inflated; we use the MonoMethodInflated's new
25070         `inflated' field as a cache.
25071
25072 2004-12-26  Martin Baulig  <martin@ximian.com>
25073
25074         * class.c
25075         (inflate_generic_class): Moved some code out of inflate_generic_type().
25076         (mono_class_inflate_generic_method): If we're already inflated,
25077         inflate the context and use the declaring method; ie. make sure
25078         the declaring method of an inflated method is always the generic
25079         method definition.
25080         (mono_class_create_from_typedef): Create
25081         `class->generic_container->context->gclass'.
25082
25083 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
25084
25085         * metadata-internals.h, marshal.c, reflection.c: More
25086         MonoGHashTable->GHashTable.
25087
25088         * domain-internals.h, class.c: Change MonoGHashTable's into
25089         GHashTables for some cases where no gc stuff is used
25090
25091         All users: update apis
25092
25093 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
25094
25095         * metadata.c (builtin_types): Make this `const'. Makes this get
25096         put into the shareable section.
25097         (mono_metadata_init): Casts to make gcc happy.
25098
25099 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
25100
25101         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
25102
25103 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
25104
25105         * icall.c: Added an internal call to retrieve the position and length
25106         of assembly-level declarative security attributes (RequestMinimum, 
25107         RequestOptional and RequestRefuse). This is used by the Assembly class
25108         to re-create the corresponding permission sets.
25109
25110 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
25111
25112         * marshal.c: fix the stelemref wrapper to be type correct
25113         (and faster).
25114
25115 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
25116
25117         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
25118         to do key & 0x7fffffff. Hashtable already does this. It just
25119         results in longer code.
25120
25121 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
25122
25123         * appdomain.c: Bump corlib version.
25124         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
25125         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
25126         * reflection.c|h: Add functions to get declarative security infos
25127         (blob position and length) for assemblies, classes and methods.
25128
25129 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
25130
25131         * reflection.c: sort the constant table (bug #70693).
25132
25133 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
25134
25135         * object-internals.h, threads.c, domain.c: add accessors for
25136         the MonoThread and MonoDomain tls keys.
25137
25138 2004-12-18  Martin Baulig  <martin@ximian.com>
25139
25140         * class.c (inflate_generic_type): If we're inflating a generic
25141         instance, set `ngclass->context->container = context->container';
25142         ie. the container we inflated into.
25143
25144         * metadata.c (mono_metadata_parse_generic_param): Reflect above
25145         inflate_generic_type() changes.
25146
25147 2004-12-17  Martin Baulig  <martin@ximian.com>
25148
25149         * class-internals.h
25150         (MonoGenericClass): Replaced `MonoType *generic_type' with
25151         `MonoClass *generic_class'.  Removed `dynamic_info'; if
25152         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
25153         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
25154
25155 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25156
25157         * exception.c (mono_exception_from_token): New helper function.
25158
25159 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25160
25161         * assembly.c (mono_assembly_load_with_partial_name): Call 
25162         mono_assembly_loaded before invoking the preload hooks. Fixes
25163         #70564.
25164
25165         * object-internals.h (MonoThread): Change culture_info and 
25166         ui_culture_info into an array.
25167
25168         * threads.c: Cache culture info objects from more than one appdomain.
25169
25170         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25171         current UI culture.
25172
25173 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25174
25175         * threads.h threads.c appdomain.c: Clear the culture_info field of
25176         all threads during unloading if they point to an object in the dying
25177         appdomain.
25178
25179 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25180
25181         * culture-info.h (TextInfoEntry): New struct
25182         * object-internals.h: sync with managed
25183         * locales.c: fill the `text_info_data' field
25184         * culture-info-tables.h: update
25185
25186 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25187
25188         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25189         collector.
25190
25191 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25192
25193         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25194         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25195
25196 2004-12-12  Martin Baulig  <martin@ximian.com>
25197
25198         * mono-debug-debugger.c (write_type): If we're an enum and the
25199         builtin types have already been initialized, call mono_class_init().
25200
25201 2004-12-11  Martin Baulig  <martin@ximian.com>
25202
25203         * metadata.c (mono_metadata_load_generic_params): Added
25204         `MonoGenericContainer *parent_container' argument; automatically
25205         compute `container->is_method'; pass the correct owner to
25206         get_constraints().      
25207
25208         * reflection.c (compare_genericparam): Sort the GenericParam table
25209         according to increasing owners. 
25210
25211 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25212
25213         * profiler.c: allow disabling the default profiler.
25214
25215 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25216
25217         * decimal.c, icall.c: allow disabling System.Decimal support.
25218
25219 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25220
25221         * reflection.c: Add support for null attribute arguments.
25222
25223 2004-12-09  Martin Baulig  <martin@ximian.com>
25224
25225         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25226         names to get rid of compiler warnings.
25227
25228 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25229
25230         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25231         mono_marshal_load_type_info (). Fixes #69625.
25232         (mono_marshal_get_ptr_to_struct): Likewise.
25233
25234 2004-12-08  Martin Baulig  <martin@ximian.com>
25235
25236         * mono-debug.h: Bumped version number to 47.
25237
25238         * mono-debug-debugger.c
25239         (mono_debugger_event_handler, mono_debugger_event): Take two
25240         guint64 arguments insteed of a gpointer and a guint32.  
25241
25242 2004-12-08  Martin Baulig  <martin@ximian.com>
25243
25244         * debug-mono-symfile.h
25245         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25246         `address' to `native_offset'.
25247
25248 2004-12-08  Martin Baulig  <martin@ximian.com>
25249
25250         * class.c (mono_class_create_from_typespec): Only inflate if we
25251         either have `context->gclass' or `context->gmethod'.
25252
25253 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25254
25255         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25256
25257         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25258
25259         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25260
25261         * reflection.c (mono_assembly_get_object): Remove the workaround put
25262         in for the release.
25263         
25264         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25265
25266         * appdomain.c: Bump corlib version.
25267
25268         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25269         be visible in other appdomains.
25270
25271 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25272
25273         * threads.c: Interlocked inc and dec for longs were messed up,
25274         use a KISS based impl for this. Fixes 70234
25275
25276 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25277
25278         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25279
25280 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25281
25282         * icall.c: fix to follow policy not to allow struct
25283         arguments in icalls.
25284
25285 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25286
25287         * process.c: make the patch that handles spaces in file paths work
25288         on mono/windows too.
25289
25290 2004-12-06  Martin Baulig  <martin@ximian.com>
25291
25292         * class.c (mono_class_create_generic): Call
25293         mono_class_setup_supertypes() if we're dynamic.
25294         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25295
25296 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25297
25298         * object-internals.h: Add new fields to MonoThread.
25299
25300         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25301
25302         * icall.c threads-types.h threads.c: Add new icalls.
25303
25304         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25305
25306         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25307         managed side.
25308
25309         * appdomain.c: Bump corlib version.
25310
25311         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25312         internal assemblies. Fixes #69181.
25313
25314 2004-12-05  Martin Baulig  <martin@ximian.com>
25315
25316         * class.c (mono_class_inflate_generic_signature): Make this a
25317         no-op if `context' is NULL or we don't have any type parameters;
25318         also copy `sentinelpos'.        
25319
25320 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25321
25322         * image.c: Add unbox_wrapper_cache.
25323
25324         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25325
25326         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25327         function generator.
25328         
25329         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25330         Fixes #70173.
25331
25332         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25333         
25334 2004-12-04  Martin Baulig  <martin@ximian.com>
25335
25336         * loader.c (mono_method_get_signature_full): New public function;
25337         like mono_method_get_signature(), but with an additional
25338         `MonoGenericContext *' argument.
25339
25340         * class.c (mono_class_inflate_generic_signature): Formerly known
25341         as inflate_generic_signature(); make this public.
25342
25343 2004-12-04  Martin Baulig  <martin@ximian.com>
25344
25345         * metadata.c
25346         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25347         instead of a `MonoGenericContainer *'.  
25348         (mono_metadata_parse_array_full): Likewise.
25349         (mono_metadata_parse_signature_full): Likewise.
25350         (mono_metadata_parse_method_signature_full): Likewise.
25351         (mono_metadata_parse_generic_inst): Likewise.
25352         (mono_metadata_parse_generic_param): Likewise.
25353         (mono_metadata_parse_mh_full): Likewise.
25354         (mono_type_create_from_typespec_full): Likewise.
25355
25356 2004-12-03  Martin Baulig  <martin@ximian.com>
25357
25358         * class-internals.h (MonoGenericContainer): Replaced the
25359         `MonoGenericContext * pointer with a `MonoGenericContext'
25360         structure and made it the first element.
25361
25362 2004-12-03  Martin Baulig  <martin@ximian.com>
25363
25364         * class.c
25365         (inflate_generic_type): Set the `context->container' when creating
25366         a new MonoGenericContext.
25367         (mono_class_inflate_generic_method): Likewise.
25368         (mono_class_create_from_typespec): Just use `context->container'
25369         to get the container.
25370
25371         * loader.c (method_from_methodspec): Set `context->parent' from
25372         `context->container' - and if that's a method container, use its
25373         parent.  Also set the `context->container' when creating a new
25374         MonoGenericContext.
25375         (mono_get_method_from_token): Use just `context->container' to get
25376         the container.
25377
25378         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25379         `gclass->context->container'.
25380
25381         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25382         the `context->container' when creating a new MonoGenericContext.
25383
25384 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25385
25386         * reflection.c (compare_genericparam): Sort params with identical
25387         owner by their number. Fixes gen-111 on sparc.
25388
25389 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25390
25391         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25392         around the domain changes.
25393
25394         * appdomain.c (mono_domain_unload): Handle the case when the thread
25395         calling Unload is itself being aborted during unloading. Fixes #70022.
25396
25397         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25398
25399         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25400         checkpoint_func as an icall so it gets a wrapper.
25401         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25402         in the cross-appdomain wrappers too.
25403
25404         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25405
25406         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25407
25408         * reflection.c: Fix some memory leaks.
25409         
25410 2004-12-02  Martin Baulig  <martin@ximian.com>
25411
25412         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25413
25414         * metadata.c (generic_class_cache): New static hashtable.
25415         (mono_metadata_lookup_generic_class): New public method.
25416
25417 2004-12-02  Martin Baulig  <martin@ximian.com>
25418
25419         * class.c (mono_class_create_from_typedef): Call
25420         mono_class_setup_parent() and mono_class_create_mono_type() before
25421         parsing the interfaces.
25422
25423 2004-12-02  Martin Baulig  <martin@ximian.com>
25424
25425         * metadata.c (generic_inst_cache): New static hashtable.
25426         (mono_metadata_lookup_generic_inst): New public function.
25427         (mono_metadata_inflate_generic_inst): New public function.
25428         (mono_metadata_parse_generic_inst): New public function.
25429         (do_mono_metadata_parse_generic_class): Use the new
25430         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25431         since this'll also use the cache.
25432
25433         * reflection.c (mono_reflection_bind_generic_method_parameters):
25434         Use mono_metadata_lookup_generic_inst() to use the new cache.
25435
25436         * class.c (inflate_mono_type): Use
25437         mono_metadata_inflate_generic_inst() to inflate a generic
25438         instance; this'll also use the new cache.
25439
25440         * loader.c (method_from_methodspec): Use
25441         mono_metadata_parse_generic_inst() and
25442         mono_metadata_inflate_generic_inst() rather than parsing it
25443         manually, so we can use the new cache.
25444
25445 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25446
25447         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25448         the wait times out.
25449
25450 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25451
25452         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25453         iter->args based on whether parameters are passed in registers (i.e.
25454         MONO_ARCH_REGPARMS is defined)
25455
25456 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25457
25458         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25459         the exception message. Fixes #70070.
25460         (method_from_methodspec): Fix warnings.
25461
25462 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25463
25464         * process.c: (complete_path) return the path quoted
25465
25466 2004-12-01  Martin Baulig  <martin@ximian.com>
25467
25468         * class-internals.h (MonoGenericInst): New structure.
25469         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25470         `is_open' with `MonoGenericInst *inst'.
25471         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25472         `is_open' with `MonoGenericInst *inst'.
25473
25474 2004-11-30  Martin Baulig  <martin@ximian.com>
25475
25476         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25477
25478         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25479         to `generic_class_cache'.
25480
25481         * metadata.c
25482         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25483         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25484         (mono_generic_inst_is_valuetype): Renamed to
25485         mono_generic_class_is_valuetype().
25486
25487         * class-internals.h
25488         (MonoGenericInst): Renamed to MonoGenericClass.
25489         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25490         (MonoClass): Renamed `generic_inst' to `generic_class'.
25491         (MonoGenericContext): Renamed `ginst' to `gclass'.
25492
25493         * object-internals.h
25494         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25495
25496         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25497         mono_reflection_generic_class_initialize().
25498
25499         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25500         now known as "System.Reflection.MonoGenericClass".
25501         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25502
25503 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25504
25505         * class-internals.h: Added a flag field to MonoClass to cache the
25506         declarative security attributes actions associated with the class.
25507         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25508         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25509         applicable to the JITted method.
25510         * reflection.c|h: Added functions to extract (as flags) which security
25511         actions are available (declaratively) for a method, class or assembly.
25512         * metadata.c|h: Added functions to search the declarative security
25513         table in the metadata.
25514         
25515 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25516
25517         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25518         EXPORTEDTYPES are already in the class name cache, so there is no
25519         need to add extra code here to look at them. Just removes a bit of
25520         cruft.
25521
25522         (ves_icall_System_Environment_get_TickCount): No need for #if
25523         WINDOWS. We already have the code in io-layer.
25524
25525 2004-11-28  Martin Baulig  <martin@ximian.com>
25526
25527         * loader.c
25528         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25529         Fixes gen-112.cs.
25530
25531 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25532
25533         * assembly.c (do_mono_assembly_open): Instead of having a
25534         conditional WITH_BUNDLE, incorporate support for bundles here, by
25535         having a global `bundles' variable holding a pointer to the actual
25536         bundles. 
25537
25538         (mono_register_bundled_assemblies): New API call used by the
25539         bundle code. 
25540
25541         See mkbundle.1 for details.
25542         
25543 2004-11-27  Martin Baulig  <martin@ximian.com>
25544
25545         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25546         the vtable for generic methods.
25547
25548 2004-11-26  Martin Baulig  <martin@ximian.com>
25549
25550         * metadata.c
25551         (mono_metadata_generic_method_hash): New public function.
25552         (mono_metadata_generic_method_equal): Likewise.
25553
25554         * class-internals.h
25555         (MonoGenericContainer): Added `GHashTable *method_hash'.
25556
25557         * reflection.c (ReflectionMethodBuilder): Added
25558         `MonoGenericContainer *generic_container'.
25559         (reflection_methodbuilder_to_mono_method): Don't create a new
25560         MonoGenericContainer each time we're called.
25561         (mono_reflection_bind_generic_method_parameters): Use
25562         `container->method_hash' to cache the results so we don't create a
25563         different method if we're called several times with the same
25564         arguments.
25565
25566         * loader.c (method_from_methodspec): Use the new
25567         `container->method_hash' here, too.
25568
25569 2004-11-26  Martin Baulig  <martin@ximian.com>
25570
25571         * class.c (inflate_generic_signature): Correctly compute
25572         `res->has_type_parameters'.
25573         (mono_class_vtable): Use the `has_type_parameters' flag to
25574         determine whether we're a generic method.
25575
25576         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25577
25578 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25579
25580         * object.c (mono_runtime_run_main): Fix a small memory leak.
25581
25582 2004-11-25  Martin Baulig  <martin@ximian.com>
25583
25584         * class.c (set_generic_param_owner): Fixed the loop.
25585
25586 2004-11-25  Martin Baulig  <martin@ximian.com>
25587
25588         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25589         generic methods.
25590
25591 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25592
25593         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25594         names. Fixes #69787.
25595
25596 2004-11-24  Martin Baulig  <martin@ximian.com>
25597
25598         * class.c (mono_class_create_generic_2): If we don't have a
25599         `ginst->parent', inflate `gklass->parent' to get our parent.
25600
25601 2004-11-24  Martin Baulig  <martin@ximian.com>
25602
25603         * reflection.c (compare_genericparam): Correctly sort the
25604         GenericParam table; fixes #69779.
25605
25606 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25607
25608         * reflection.c: When writing a PE file, don't create a huge
25609         buffer in memory. Just write the arrays we have to the file.
25610         This reduces memory usage.
25611
25612         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25613         globally.
25614
25615 2004-11-17  Martin Baulig  <martin@ximian.com>
25616
25617         * class.c (mono_class_init): Don't setup `class->parent' for
25618         dynamic instances; moved this to mono_class_generic_2().
25619         (mono_class_create_generic): Also set `klass->inited' for dynamic
25620         generic instances.
25621         (mono_class_create_generic_2): Don't do anything for dynamic
25622         generic instances.  Set `klass->parent' here and also call
25623         mono_class_setup_parent() here. 
25624
25625         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25626         `MonoType *parent' argument; set `ginst->parent' before calling
25627         mono_class_create_generic_2(), so we set the correct parent.
25628
25629 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25630
25631         * reflection.c: allow getting attributes from ModuleBuilder
25632         (used by ikvm).
25633
25634 2004-11-17  Martin Baulig  <martin@ximian.com>
25635
25636         * class.c (mono_class_create_from_typedef): If a type parameter is
25637         inherited from an outer class, set its owner to that class.
25638
25639 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25640
25641         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25642           for (int*) written size. This fixes bug #69592.
25643
25644 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25645
25646         * icall.c: Added IsAuthenticodePresnet internal call.
25647         * image.c|h: New function that check a MonoImage for an Authenticode
25648         signature in the certificate PE data directory.
25649         * security.c|h: New internal call to ask the runtime if an 
25650         Authenticode signature seems referenced in the PE header.
25651
25652 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25653
25654         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25655
25656         * reflection.c (mono_image_create_pefile): Free the assembly streams
25657         after writing out the assembly file.
25658
25659         * object.c (mono_runtime_run_main): Fix small memory leak.
25660
25661         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25662         property access modifiers. Fixes #69389.
25663
25664 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25665
25666         * domain.c, object.c, object-internals.h, domain-internals.h,
25667         object.h, marshal.c: keep dynamic code info per domain.
25668
25669 2004-11-15  Martin Baulig  <martin@ximian.com>
25670
25671         * class.c (mono_type_get_name_recurse): Put type arguments in
25672         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25673         see bug #68387.
25674
25675 2004-11-15  Martin Baulig  <martin@ximian.com>
25676
25677         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25678         (mono_class_setup_vtable): When computing `the_cname' for a
25679         generic instance, don't include the namespace since we'd otherwise
25680         add it twice.
25681
25682 2004-11-15  Martin Baulig  <martin@ximian.com>
25683
25684         * class.c (mono_class_create_generic): Changed return type to void.
25685         (mono_class_create_generic_2): New public function; setup
25686         `class->method', `class->field' and `class->interfaces' here
25687         instead of in mono_class_init().
25688
25689         * class.h (mono_class_create_generic): Moved to class-internals.h.
25690
25691 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25692
25693         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25694         rather than writing to memory, write to this file. Right now,
25695         we are just writting into a buffer, and copying that. However
25696         we can avoid the buffer later.
25697
25698         (mono_dynamic_stream_reset): new function
25699
25700         * icall.c, object-internals.h: update for the above.
25701
25702 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25703
25704         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25705         have been using gc'd memory. First it is slower, unlikely
25706         the comment in the source code said, secondly, it increases
25707         our footprint to do it in the gc.
25708
25709         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25710         the method so that it does not have to copy to managed code.
25711
25712 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25713
25714         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25715
25716 2004-11-12  Martin Baulig  <martin@localhost>
25717
25718         * reflection.c (mono_image_create_token): Allow generic method
25719         definitions here, since they may appear in an `.override'; see
25720         gen-98/gen-99 for an example.
25721
25722 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25723
25724         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25725         #69365.
25726
25727         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25728         descriptive.
25729
25730 2004-11-11  Martin Baulig  <martin@ximian.com>
25731
25732         * class.c (mono_class_setup_vtable): In an explicit interface
25733         implementation, the method name now includes the arity.
25734
25735 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25736
25737         * object.c (mono_array_full_copy): Fix warning.
25738
25739 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25740
25741         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25742         mono_class_get_method_from_name() instead.
25743         
25744         * class-internals.h: Added two new types of wrappers. 
25745         Added MonoRemotingTarget enum. Added new trampoline function type, which
25746         takes an additional MonoRemotingTarget value as parameter, so it is
25747         possible to request a trampoline for a specific target.
25748         
25749         * class.c: Added new mono_class_get_method_from_name() method.
25750         
25751         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25752         general remoting sinks and one specific for cross domain calls.
25753         
25754         * debug-helpers.c: Added new wrapper names.
25755         
25756         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25757         of a remote class.
25758         
25759         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25760         
25761         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25762         with several other methods (mono_marshal_get_xappdomain_dispatch,
25763         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25764         and others) can generate a fast remoting wrapper for cross domain calls.
25765         More information can be found in docs/remoting.
25766         Other changes: Removed mono_find_method_by_name, and used
25767         mono_class_get_method_from_name instead.
25768         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25769         is stored in the remoting invoke hashtable.
25770         
25771         * marshal.h: published the new method for getting the xdomain wrapper,
25772         and also added a method for getting the adequate wrapper for a given
25773         method and target.
25774         
25775         * object-internals.h, object.c: Added a couple of methods for capying and
25776         cloning arrays.
25777         Modified mono_install_remoting_trampoline, which takes the new remoting
25778         trampoline that has a remoting target as parameter.
25779         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25780         will return the most suitable vtable for the target.
25781         Added mono_remote_class_vtable, which returns the vtable of a remote class
25782         (which can be the normal remoting vtable or the xdomain vtable).
25783         
25784         * threads.c: the xdomain invoke and dispatch wrappers must also be
25785         protected against interruptions.
25786
25787 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25788
25789         * icall.c: use memmove in BlockCopyInternal when the source and
25790         destination arrays are the same.
25791
25792 2004-11-09  Martin Baulig  <martin@ximian.com>
25793
25794         * class-internals.h (MonoGenericContainer): Removed `method' and
25795         `signature', replaced them with `is_method' and `is_signature'
25796         flags.  Added `context'.
25797
25798         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25799         instead of a `MonoGenericContainer *'.
25800
25801         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25802         for dynamic type parameters.
25803         (mono_metadata_load_generic_params): Setup `container->context'.
25804
25805         * reflection.c (mono_reflection_setup_generic_class): Setup
25806         `tb->generic_container->context'.
25807         (do_mono_reflection_bind_generic_parameters): Use
25808         mono_class_inflate_generic_type() to correctly inflate types,
25809         rather than using our own hack just for MONO_TYPE_VAR.
25810
25811 2004-11-09  Martin Baulig  <martin@ximian.com>
25812
25813         * class.c (mono_class_inflate_generic_method): Small fix; don't
25814         crash here.
25815
25816         * icall.c
25817         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25818         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25819         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25820         (ves_icall_Type_BindGenericParameters): Likewise.
25821         (ves_icall_Type_get_IsGenericInstance): Likewise.
25822         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25823         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25824         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25825         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25826
25827 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25828
25829         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25830         assembly versions and public key tokens. Fixes #69113.
25831
25832 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25833
25834         * metadata.c: fix bug introduced with the type cache changes
25835         on 2004-11-06.
25836
25837 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25838
25839         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25840         the MonoClass pointer instead of the token in exception clauses.
25841         * reflection.c: updates for the above and make the code not depend
25842         on the structure of MonoExceptionClause.
25843
25844 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25845
25846         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25847         Add support for dynamic assemblies. Fixes #69114.
25848
25849         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25850
25851 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25852
25853         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25854         since most only those methods use it. the code member of
25855         MonoMethodPInvoke was dead, so that can be removed too. Also,
25856         remove inline_count (again, not used), and move slot so that it
25857         can share bits with some other flags. This saves 8 bytes in the
25858         structure and gives us about 50 kb back for mcs helloworld.cs
25859
25860         * *.[ch]: Do naming changes for the above.
25861
25862         * loader.c (mono_method_get_header): Lazily init the header
25863         on first access.
25864         (mono_get_method_from_token): don't init the header here
25865         (mono_free_method): the header may never be allocated
25866
25867         Overall, this saves 150 kb of unmanaged allocations
25868         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25869         memory at runtime.
25870         
25871         * loader.c, loader.h (mono_method_get_header): new accessor.
25872
25873         * *.[ch]: use the above method. Prepares us to lazily load
25874         the header.
25875
25876         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25877         three warnings, which are actual bugs (see 69206).
25878
25879         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25880         unused. Saves a cool 4 bytes / method.
25881
25882 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25883
25884         * metadata.c (builtin_types): Add types for System.Object here.
25885         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25886         for a class or valuetype from klass->this_arg or klass->byval_arg.
25887
25888         On mcs for a hello world, this gets us down from 21836 MonoType's
25889         to 14560.
25890
25891         (mono_metadata_free_type): Account for the above change.
25892
25893 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25894
25895         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25896         exception instead of asserting if name is null.
25897         (ves_icall_System_AppDomain_GetData): Ditto.
25898
25899 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25900
25901         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25902         EnumBuilder.
25903
25904         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25905         Return NULL when the domain does not have entry_assembly set.
25906
25907         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25908         Add a 'resource_modules' argument.
25909         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25910
25911         * reflection.c (mono_reflection_create_runtime_class): Move setting
25912         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25913         for enums too.
25914
25915         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25916         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25917         Throw an ArgumentNullException if 'ptr' is null.
25918
25919         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25920         assemblies here. Fixes #69020.
25921
25922 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25923
25924         * reflection.c (build_compressed_metadata): Fix the previous patch for
25925         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25926         the stack.
25927
25928 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25929
25930         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25931         the cultures is false. Fixes #69090.
25932
25933         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25934         detected by valgrind.
25935         
25936         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25937         TypeResolve multiple times for the same type. Fixes #65577.
25938
25939 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25940
25941         * marshal.c: Avoid using ldftn to call managed functions. It is
25942         much slower than just a call.
25943
25944         * reflection.c (mono_module_get_object): free the basename we
25945         allocate here from glib.
25946         
25947         * reflection.c (ensure_runtime_vtable): make sure to free
25948         overrides.  Also, we were allocating an array of MonoMethod not an
25949         array of MonoMethod*.
25950
25951         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
25952
25953         * image.c (mono_image_close): free image->guid here.
25954
25955 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
25956
25957         * reflection.c: Fix some spec conformance issues with the PE file
25958         structures so mcs compiled apps run on the Net 2.0 beta.
25959
25960 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
25961
25962         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
25963         Implement this. Fixes #67264.
25964
25965         * debug-helpers.h debug-helpers.c marshal.c: Move 
25966         mono_find_method_by_name to debug-helpers.c.
25967
25968 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
25969
25970         * object.c (mono_release_type_locks): type_initialization_hash is
25971         a GHashTable.
25972
25973         * reflection.c object.c object-internals.h: Fix warnings.
25974
25975         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
25976         without accessors. Fixes #61561.
25977
25978         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
25979         application base from the root domain if not set. Fixes #65641.
25980         (mono_runtime_init): Fix warning.
25981
25982 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25983
25984         * appdomain.c: call mono_thread_pool_init.
25985         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
25986         of worker threads based on the number of CPUs and the environment
25987         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
25988         for non-windows (windows) systems.
25989
25990 2004-10-27  Chris Toshok  <toshok@ximian.com>
25991
25992         * mono-debug-debugger.c (write_class): don't call mono_class_init
25993         here, as even with the check for (!klass->init_pending), we get
25994         into a situation where we're hitting cycles in class
25995         initialization.  Fixes #68816.
25996
25997 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
25998
25999         * image.c: Avoid overwriting values in the loaded_images_hash when an
26000         assembly is loaded multiple times. Fixes #61152.
26001
26002         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
26003         so multiple satellite assemblies for the same name can be loaded.
26004         Fixes #68259.
26005
26006         * mono_domain_assembly_preload: Actually return the loaded assembly, 
26007         not NULL.
26008
26009         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
26010         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
26011
26012         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
26013         pending finalizers are not invoked after the appdomain has been 
26014         unloaded. Fixes #67862.
26015
26016 2004-10-22  Martin Baulig  <martin@ximian.com>
26017
26018         * mono-debug-debugger.c
26019         (mono_debugger_runtime_invoke): Don't box valuetypes.
26020
26021 2004-10-22  Chris Toshok  <toshok@ximian.com>
26022
26023         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
26024         don't hide private methods.
26025
26026 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
26027
26028         * icall.c: Allows the runtime to "share" (when known) the public key
26029         token of an assembly. This avoid the need to recalculate the token 
26030         (from the public key) in managed code.
26031
26032 2004-10-21  Chris Toshok  <toshok@ximian.com>
26033
26034         * debug-helpers.c (append_class_name): argh, revert last patch.
26035         
26036 2004-10-21  Chris Toshok  <toshok@ximian.com>
26037
26038         * debug-helpers.c (append_class_name): use '+' as the delimiter,
26039         not '/', so that it matches what the debugger uses to look up
26040         methods.
26041
26042 2004-10-21  Martin Baulig  <martin@ximian.com>
26043
26044         * mono-debug-debugger.c (mono_debugger_throw_exception): New
26045         public method; this is called each time an exception is thrown and
26046         allows the debugger to use exception catch points.
26047
26048 2004-10-21  Martin Baulig  <martin@ximian.com>
26049
26050         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
26051         the stack pointer and the exception object in some struct and pass
26052         that to the debugger.
26053
26054 2004-10-21  Chris Toshok  <toshok@ximian.com>
26055
26056         * mono-debug-debugger.c (do_write_class): add instance/static
26057         event support.  We don't expose "raise" or "other" yet.
26058         (event_is_static): new method.
26059
26060 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
26061
26062         * mono-debug-debugger.c
26063         (mono_debugger_handle_exception): Remove
26064         bogus return value for fussy compilers.
26065
26066 2004-10-20  Martin Baulig  <martin@ximian.com>
26067
26068         * mono-debug-debugger.c
26069         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
26070         (mono_debugger_handled_exception): Likewise.
26071
26072 2004-10-20  Martin Baulig  <martin@ximian.com>
26073
26074         * mono-debug-debugger.h (MonoDebuggerEvent): Added
26075         MONO_DEBUGGER_EVENT_EXCEPTION.
26076
26077         * mono-debug-debugger.c (mono_debugger_handle_exception): New
26078         public function to send the debugger a notification for an
26079         exception and inform it about a catch/finally clause.
26080
26081 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
26082
26083         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
26084         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
26085         fix 2.95 build. 
26086
26087         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
26088
26089 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
26090
26091         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
26092         marshalled as [In,Out]. Fixes #58325.
26093
26094 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
26095
26096         * reflection.c (mono_method_body_get_object): Implement some fields.
26097
26098 2004-10-12  Martin Baulig  <martin@ximian.com>
26099
26100         * reflection.c (mono_reflection_bind_generic_parameters): Small
26101         fix, correctly retrieve our parent from a generic instance.
26102
26103 2004-10-12  Martin Baulig  <martin@ximian.com>
26104
26105         * metadata.c (mono_metadata_generic_param_equal): We always have
26106         an owner.
26107
26108         * class.c
26109         (mono_class_from_generic_parameter): We need to have an owner.
26110         (my_mono_class_from_generic_parameter): Likewise.
26111
26112         * reflection.c (mono_reflection_setup_generic_class): Renamed to
26113         mono_reflection_create_generic_class() and added a new
26114         mono_reflection_setup_generic_class().  
26115         (mono_reflection_initialize_generic_param): If we're a nested
26116         generic type and inherited from the containing class, set our
26117         owner to the outer class.
26118
26119 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
26120
26121         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
26122
26123         * reflection.c (mono_method_body_get_object): New function to create
26124         a MethodBody object.
26125
26126         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
26127
26128 2004-10-11  Martin Baulig  <martin@ximian.com>
26129
26130         * metadata.c (_mono_metadata_type_equal): Renamed to
26131         do_mono_metadata_type_equal() and made static.
26132
26133 2004-10-11  Martin Baulig  <martin@ximian.com>
26134
26135         * appdomain.c: Bump corlib version number to 28.
26136
26137 2004-10-10  Martin Baulig  <martin@ximian.com>
26138
26139         * class-internals.h
26140         (MonoGenericInst): Added `MonoGenericContainer *container'.
26141         (MonoGenericMethod): Likewise.
26142         (MonoGenericContext): Likewise.
26143         (MonoGenericParam): Added `MonoGenericContainer *owner'.
26144
26145         * metadata.c
26146         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
26147         (do_mono_metadata_parse_generic_inst): Likewise.
26148         (mono_metadata_parse_type_full): New public method.  This is the actual
26149         mono_metadata_parse_type() implementation - with an additional
26150         `MonoGenericContainer *' argument.
26151         (mono_metadata_parse_array_full): Likewise.
26152         (mono_metadata_parse_signature_full): Likewise.
26153         (mono_metadata_parse_method_signature_full): Likewise.
26154         (mono_metadata_parse_mh_full): Likewise.
26155         (mono_type_create_from_typespec): Likewise.
26156         (mono_metadata_interfaces_from_typedef_full): New public method;
26157         this is similar to the other _full() methods, but we take a
26158         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26159         (mono_metadata_parse_generic_param): Take an additional
26160         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26161         from that container.
26162         (mono_metadata_generic_param_equal): New static method to compare
26163         two type parameters.
26164         (_mono_metadata_type_equal): New static method; takes an
26165         additional `gboolean signature_only' argument - if true, we don't
26166         compare the owners of generic parameters.
26167         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26168         with a TRUE argument - do a signature-only comparision.
26169
26170         * loader.c: Use the new _full() methods and pass the
26171         MonoGenericContainer to them.
26172
26173         * object-internals.h (MonoReflectionTypeBuilder): Added
26174         `MonoGenericContainer *generic_container' field.
26175         (MonoReflectionMethodBuilder): Likewise.
26176
26177 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26178
26179         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26180         case initial images of dynamic assemblies.
26181
26182         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26183
26184         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26185
26186         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26187         length of event->other array.
26188         (typebuilder_setup_events): Ditto.
26189
26190         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26191         'assembly_by_name' and add an 'assemblies' list.
26192
26193         * assembly.h assembly.c: Add a new search hook for determining whenever
26194         an assembly is already loaded. Use this instead of searching in the
26195         loaded_assemblies list.
26196
26197         * domain.c appdomain.c: Implement the new search hook so loaded 
26198         assemblies are now scoped by appdomain. Fixes #67727.
26199
26200 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26201
26202         * threads.c (mono_thread_attach): Initialize synch_lock field so
26203         mono_thread_detach works again.
26204
26205         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26206         'lib' too. Fixes #63130.
26207
26208 2004-10-06  Jackson Harper  <jackson@ximian.com>
26209
26210         * culture-info-tables.h: regenerated.
26211
26212 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26213
26214         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26215         implemented by other interfaces in the result. Fixes #65764.
26216         
26217         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26218         Handle unloadable modules without crashing.
26219
26220         * image.c (load_modules): Revert the previous patch since modules must
26221         have a fixed index inside the array.
26222         
26223         * image.c (load_modules): Don't include native modules in the modules
26224         array.
26225
26226 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26227
26228         * reflection.h: Add param_defaults field.
26229
26230         * reflection.c: Add support for parameter defaults in dynamic methods.
26231         Fixes #64595.
26232
26233         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26234         an empty string when a type has no namespace. Fixes #64230.
26235
26236 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26237
26238         * tabledefs.h: Added "internal" security actions to support non-CAS
26239         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26240         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26241
26242 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26243
26244         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26245         constructor of abstract class. Fixes #61689.
26246
26247 2004-10-04  Martin Baulig  <martin@ximian.com>
26248
26249         * class-internals.h (MonoGenericContainer): New type.
26250         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26251         `MonoGenericContainer *generic_container'.
26252         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26253         `MonoGenericContainer *generic_container'.
26254
26255         * metadata.c (mono_metadata_load_generic_params): Return a
26256         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26257         removed the `num' argument.
26258
26259 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26260
26261         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26262         for dynamic images.
26263
26264         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26265         machine fields.
26266
26267         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26268
26269         * reflection.c: Save pe_kind and machine values into the generated
26270         image file.
26271
26272         * appdomain.c: Bump corlib version number.
26273
26274         * object-internals.h: Reorganize layout of LocalBuilder.
26275
26276         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26277         New helper function.
26278
26279         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26280         created MonoType for dynamic types. Fixes #66180.
26281
26282 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26283
26284         * threadpool.c: the ares hashtable needs a critical section around it.
26285         this prevents some nasty segfaults
26286
26287 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26288
26289         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26290         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26291         bug 67324).
26292         
26293 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26294
26295         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26296         
26297 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26298
26299         * image.c: Always canonicalize image file names, to avoid loading
26300         the same assembly twice when referenced using a relative path.
26301
26302 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26303
26304         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26305
26306         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26307
26308         * marshal.c: Fix warnings.
26309
26310 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26311
26312         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26313         attempting to marshal the delegate_trampoline as the method_addr.
26314         This patch has a static hashtable of marshalled delegates so that 
26315         we can map delegate_trampoline addresses back to delegates.  This
26316         allows a delegate passed to managed code to be passed back into native
26317         code.  Fixes #67039
26318
26319 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26320
26321         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26322
26323         * reflection.c (method_encode_code): Align method headers properly.
26324         Fixes #66025.
26325
26326 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26327
26328         * marshal.c: In the runtime invoke wrapper, reset the abort
26329         exception if it is cached. This avoids the automatic rethrowal of 
26330         the exception after the catch of the wrapper. Also check for pending
26331         interruptions before calling the managed method. This is done using
26332         the new method emit_thread_force_interrupt_checkpoint, since the
26333         normal checkpoint method is ignored when running the invoke wrapper.
26334         * object.c: If the abort exception is rethrown, set the abort_exc
26335         field of the thread, so it will be rethrown aftere every catch.
26336         * threadpool.c: Only run an interruption checkpoint if what has been
26337         requested is a stop of the thread (aborts will be ignored).
26338         * threads.c: By default, a thread will now never be interrumped while
26339         running the runtime invoke wrapper (this ensures that runtime_invoke
26340         will always return to the caller if an exception pointer is provided).
26341         There is a new special method mono_thread_force_interruption_checkpoint()
26342         to force an interruption checkpoint even if running a protected
26343         wrapper, which is used by the same runtime invoke wrapper to do a check
26344         at a safe point.
26345
26346 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26347
26348         * object.c, object-internals.h: Implemented mono_release_type_locks,
26349         which releases the cctor locks held by a thread.
26350         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26351         by a thread. Added mono_thread_exit() method to be used to safely stop
26352         a thread.
26353
26354 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26355
26356         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26357         Move null check before dereference.  Avoid indexing beyond the end
26358         of the 'modules' array.
26359
26360 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26361
26362         * metadata-internals.h (MonoImage): Add module_count field.
26363         * image.c (load_modules): Set image->module_count.
26364         (mono_image_load_file_for_image): Use image->module_count.
26365         * reflection.c (mono_image_load_module): Append to image->modules array 
26366         of dynamic assembly.
26367         (mono_module_get_object): Fix loop to actually increment index.
26368         Use image->module_count.
26369         * assembly.c (mono_assembly_load_references): Use image->module_count.
26370         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26371         Likewise.
26372
26373 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26374
26375         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26376         Avoid assert on generic types.
26377
26378 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26379
26380         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26381
26382         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26383
26384         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26385         function to convert a MarshalSpec structure to its managed counterpart.
26386
26387         * reflection.c: Fix warnings.
26388         
26389         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26390         field.
26391
26392         * icall.c (mono_create_icall_signature): Fix build.
26393
26394 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26395
26396         * icall.c: Add MakePointType icall.
26397
26398         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26399         warnings.
26400
26401 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26402
26403         * threadpool.c: reuse allocated slots in the queue.
26404
26405 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26406
26407         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26408
26409         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26410
26411         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26412         previous change.
26413
26414         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26415         ThrowOnUnmappableChar.
26416
26417         * icall.c (ves_icall_Type_GetPacking): New icall.
26418
26419 2004-09-24  Martin Baulig  <martin@ximian.com>
26420
26421         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26422
26423 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26424
26425         * appdomain.c:
26426         (mono_domain_set): allow setting a domain that is being unloaded.
26427         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26428         being unloaded.
26429
26430 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26431
26432         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26433         the GetCustomAttributes icall.
26434
26435 2004-09-23  Martin Baulig  <martin@ximian.com>
26436
26437         * object-internals.h (MonoReflectionGenericParam): Replaced
26438         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26439         with `guint32 attrs'.
26440
26441 2004-09-23  Martin Baulig  <martin@ximian.com>
26442
26443         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26444
26445 2004-09-23  Martin Baulig  <martin@ximian.com>
26446
26447         * object-internals.h (GenericParameterAttributes): New enum.
26448
26449 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26450
26451         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26452         
26453         * class.c (init_events): Fill out event->other field.
26454
26455         * class.c: Fix warnings.
26456
26457         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26458
26459 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26460
26461         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26462         walk which doesn't supply the IL offset.
26463
26464 2004-09-22  Martin Baulig  <martin@ximian.com>
26465
26466         * reflection.c (mono_reflection_setup_internal_class): If we're
26467         System.ValueType, System.Object or System.Enum, set
26468         `klass->instance_size' and create the vtable.
26469         (mono_reflection_create_internal_class): If we're an enum type,
26470         get the base class from our current corlib.
26471
26472 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26473
26474         * reflection.h (MonoResolveTokenError): New type.
26475
26476         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26477         icall.
26478
26479         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26480
26481 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26482
26483         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26484         Support also calling constructors, but only for already allocated objects.
26485
26486 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26487
26488         * reflection.c (type_get_qualified_name): If the klass is null
26489         return the typename to avoid a NullRefEx.
26490         (encode_cattr_value): Get the qualified name of the boxed type,
26491         not the underlying enumtype.  Fixes #62984.
26492
26493 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26494
26495         * marshal.c: Fix problems with previous checkin.
26496
26497 2004-09-21    <vargaz@freemail.hu>
26498
26499         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26500         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26501
26502         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26503
26504 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26505
26506         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26507         should only return a type for pointers, arrays, and passbyref types.
26508         Fixes bug #63841.
26509
26510 2004-09-21  Martin Baulig  <martin@ximian.com>
26511
26512         * domain.c (mono_debugger_check_runtime_version): New public
26513         function.
26514
26515         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26516
26517 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26518
26519         * reflection.c: Added missing sort to the declarative security 
26520         attributes table. MS implementation stops seeing the attributes if the
26521         token number regress in the table (as shown by ildasm and permview).
26522
26523 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26524
26525         * object-internals.h (MonoReflectionModule): Add 'token' field.
26526         
26527         * reflection.c (mono_reflection_get_token): Add support for Module
26528         and Assembly.
26529         (mono_module_get_object): Set 'token' field.
26530         (mono_module_file_get_object): Set 'token' field.
26531
26532         * icall.c: Add new Assembly and Module icalls.
26533
26534         * appdomain.c: Bump corlib version.
26535
26536 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26537
26538         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26539         tokens of metadata objects.
26540
26541         * reflection.h reflection.c (mono_reflection_get_token): New function
26542         to obtain the token of a metadata object.
26543
26544         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26545
26546 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26547
26548         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26549         
26550         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26551
26552 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26553
26554         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26555         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26556         AssemblyBuilder to access the permissions set in the class lib.
26557         * reflection.c: Added security attributes encoding step in 
26558         mono_image_build_metadata.
26559         * tabledefs.h: Added new security actions defined in 2.0:
26560         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26561
26562 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26563
26564         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26565         macro parameter.
26566
26567 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26568  
26569         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26570           finalized. There where random SIGSEVs at program termination, when
26571           an object being finalized was trying to do a string comparison and
26572           the current culture was already finalized.
26573  
26574 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26575
26576         * threads.c: call thread_cleanup before finishing the thread if we get
26577         there.
26578
26579 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26580
26581         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26582         assemblies from the parent. Fixes #65665.
26583
26584 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26585
26586         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26587         modifiers.
26588
26589 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26590
26591         * reflection.h: add prototype for mono_get_dbnull_object
26592         * reflection.c: add prototypes for get_default_param_value_blobs 
26593         and mono_get_object_from_blob for fussier compilers
26594
26595 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26596  
26597         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26598         false deadlock checks in class initialization.
26599  
26600 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26601
26602         * image.c (mono_image_addref): Fix comment.
26603
26604         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26605         possible.
26606
26607 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26608
26609         * reflection.c (mono_param_get_objects): Modified to return
26610         ParameterInfo.DefaultValue object.
26611
26612         (get_default_param_value_blobs):
26613         (mono_get_object_from_blob):
26614         (mono_get_dbnull_object): New helper routines. 
26615
26616         * object.c (mono_get_constant_value_from_blob): New helper routine
26617         carved out from get_default_field_value ()
26618
26619         * object-internals.h (mono_get_constant_value_from_blob): Added
26620         function declaration.
26621
26622 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26623
26624         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26625         referenced assemblies. Fixes #62135.
26626
26627         * exception.h exception.c (mono_get_exception_file_not_found2): New
26628         helper function.
26629
26630 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26631
26632         * class.h class.c: Add mono_type_get_underlying_type ().
26633
26634 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26635
26636         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26637         Fix GetTypes() to support dynamically created assemblies.
26638
26639 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26640
26641         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26642         
26643         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26644         previous patch.
26645
26646         * reflection.h reflection.c loader.c: Allow dynamic construction of
26647         pinvoke methods. Fixes #65571.
26648         
26649         * reflection.c (mono_reflection_get_type): Revert previous change since
26650         it causes regressions.
26651
26652 2004-09-08  Martin Baulig  <martin@ximian.com>
26653
26654         * class.c (class_compute_field_layout): Don't call
26655         mono_class_layout_fields() for open generic instances.
26656
26657 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26658         * threads.c appdomain.c: fix typo in GC macro
26659
26660 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26661
26662         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26663         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26664
26665 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26666
26667         * image.c (mono_image_close): Applied patch from 
26668         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26669         assembly is loaded multiple times from data.
26670         
26671         * image.c (mono_image_open): Fix warning.
26672
26673 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26674
26675         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26676         once. Fixes #58334.
26677         
26678         * reflection.c (mono_reflection_create_runtime_class): Initialize
26679         klass->nested_classes. Fixes #61224.
26680
26681 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26682
26683         * threads.c: sched_yield() on exit, to allow threads to quit.
26684
26685 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26686
26687         * object.c (mono_unhandled_exception): Remove leftover debug code.
26688
26689 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26690
26691         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26692
26693 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26694
26695         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26696         
26697         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26698
26699 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26700
26701         * marshal.c (emit_marshal_array): Null terminate string arrays.
26702         
26703         * marshal.c (raise_auto_layout_exception): Fix warning.
26704
26705         * reflection.c (mono_param_get_objects): Initialize the default value
26706         with DBNull.Value, not null. Fixes #62123.
26707
26708 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26709
26710         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26711         throw an exception with a cute explanation.
26712
26713 2004-09-06  Dick Porter  <dick@ximian.com>
26714
26715         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26716         Close the new process's thread handle, as we don't use it.  The
26717         handle stays around forever otherwise.
26718
26719 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26720
26721         * object.c (arith_overflow): Fix warning.
26722
26723         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26724         calling conventions in method refs. Fixes #65352.
26725
26726         * reflection.c: Fix warnings.
26727
26728 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26729
26730         * icall.c: Add a new icall for Array.Clear
26731
26732 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26733
26734         * object.c: When allocating an array, we have to throw
26735         an overflow exception if any of the lengths are < 0.
26736
26737 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26738
26739         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26740         properly. Also move implementation of string array marshalling to 
26741         managed code. Fixes #42316.
26742
26743 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26744
26745         * assembly.c: provide more information when loading an assembly fails.
26746
26747 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26748
26749         * filewatcher.c: don't expect the development fam package to be
26750         installed.
26751
26752 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26753
26754         * marshal.c: Make a copy of the signature cookie since it will be
26755         freed by the caller.
26756         
26757         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26758
26759         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26760
26761         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26762         marshal specs.
26763
26764         * marshal.c: More refactoring.
26765         
26766         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26767         smaller functions.
26768
26769 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26770
26771         * object.c: In mono_message_invoke, fill the output parameter array after
26772           calling the managed method (it was done before the call). This fixes
26773           bug #59299.
26774
26775 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26776
26777         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26778         as well.
26779
26780 2004-09-02  Martin Baulig  <martin@ximian.com>
26781
26782         * class.c (mono_class_instance_size): Don't allow generic type
26783         definitions or open generic instances.
26784         (mono_class_array_element_size): If we're a value type, call
26785         mono_class_instance_size() on the original class.
26786
26787         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26788         handle generic instances.
26789
26790         * mono-debug-debugger.c (write_type): Handle generic instances
26791         like classes.
26792
26793 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26794
26795         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26796         the allocation request fails. Fixes #65089.
26797
26798         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26799         
26800         * object.c (mono_runtime_free_method): New function to free a dynamic
26801         method.
26802
26803         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26804         delegate trampoline.
26805
26806         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26807         with hasthis as dynamic,
26808
26809         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26810
26811         * domain.c (mono_jit_info_table_remove): New function to remove an
26812         entry from the jit info table.
26813
26814         * class-internals.h (MonoMethod): Add 'dynamic' field.
26815
26816         * loader.c: Fix warnings.
26817
26818 2004-09-01  Martin Baulig  <martin@ximian.com>
26819
26820         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26821         instead of mono_debugger_lock() because the latter one is a no-op
26822         unless running in the debugger.
26823
26824 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26825
26826         * class.c (class_compute_field_layout): Classes with auto-layout or
26827         reference fields are not blittable.
26828         
26829 2004-09-01  Dick Porter  <dick@ximian.com>
26830
26831         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26832         mono_image_get_filename() to get the assembly location.
26833
26834         * icall.c:
26835         * metadata.h: Fix compile warnings
26836
26837 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26838
26839         * class.c (class_compute_field_layout): System.Object is blittable.
26840
26841         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26842         as in/out. Fixes #59909.
26843
26844 2004-09-01  Martin Baulig  <martin@ximian.com>
26845
26846         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26847         mono_metadata_generic_inst_is_valuetype() if we're a generic
26848         instance to check whether our underlying type is a reference type.
26849
26850 2004-09-01  Martin Baulig  <martin@ximian.com>
26851
26852         * metadata.c (mono_type_size): If we're a generic instance, call
26853         mono_class_value_size() for value types.
26854
26855 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26856
26857         * marshal.c: Implement more custom marshalling functionality. Fixes
26858         #64915.
26859
26860 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26861
26862         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26863
26864 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26865
26866         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26867
26868         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26869
26870         * icall.c: Fix some warnings.
26871
26872         * threads.c (abort_appdomain_thread): Fix unref errors.
26873         (mono_thread_current): Fix THREAD_DEBUG define.
26874
26875 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26876
26877         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26878
26879         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26880
26881 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26882
26883         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26884         string arrays.
26885
26886 2004-08-28  Martin Baulig  <martin@ximian.com>
26887
26888         * metadata.c
26889         (mono_metadata_generic_inst_is_valuetype): New public function.
26890
26891         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26892         mono_metadata_generic_inst_is_valuetype() if we're a generic
26893         instance to check whether our underlying type is a valuetype.
26894
26895 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26896
26897         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26898         #63768.
26899
26900 2004-08-25  Martin Baulig  <martin@ximian.com>
26901
26902         * loader.c (mono_get_method_from_token): Abstract methods can also
26903         be generic and thus have type parameters.
26904
26905         * metadata-internals.h
26906         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26907
26908         * reflection.c (mono_image_get_generic_param_info): Don't create a
26909         metadata row, just add an entry to the `gen_params' array.
26910         (build_compressed_metadata): Sort the `gen_params' array and then
26911         actually create the metadata.
26912
26913 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26914
26915         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26916
26917 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26918
26919         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26920
26921 2004-08-24  Martin Baulig  <martin@ximian.com>
26922
26923         * class.cs (mono_class_is_subclass_of): Like an interface, a
26924         generic instance also derives from System.Object.
26925
26926 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26927
26928         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26929         custom modifiers to be in any order. Fixes #61990.
26930
26931 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26932
26933         * object.c: Register mono_object_new_fast icall.
26934         
26935         * object.c (mono_class_get_allocation_ftn): Return to calling
26936         mono_object_new_fast, since it seems faster to compute the object 
26937         size in unmanaged code than passing it as a parameter.
26938
26939         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26940
26941         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
26942         this function with Boehm as the oom handler, so we don't have to check
26943         the result of GC_malloc.
26944
26945         * object.c: Remove checks for oom.
26946
26947         * object.h object.c (mono_class_get_allocation_ftn): New function to
26948         return the icall which can be used to allocate an instance of a given
26949         class. 
26950
26951         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
26952
26953         * class-internals.h: Add 'enabled' field.
26954
26955 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
26956
26957         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
26958
26959 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
26960         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
26961         value 0x0010.
26962
26963 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
26964
26965         * appdomain.c: use the Tls function for appdomain too,
26966         at Zoltan's request. Actually return in mono_context_get
26967
26968         * appdomain.c, profiler.c, threads.c: use __thread
26969
26970 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
26971
26972         * appdomain.c threads.c: Call GC_CreateThread on windows.
26973
26974         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
26975         multiple libraries since this don't work on windows.
26976
26977 2004-08-18  Martin Baulig  <martin@ximian.com>
26978
26979         * class-internals.h
26980         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
26981         MonoMethodHeader.
26982
26983         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
26984         MonoMethodNormal since we also need it for abstract and interface
26985         methods.
26986
26987         * reflection.c
26988         (build_compressed_metadata): Sort the GenericParam table.
26989         (mono_image_create_token): Added `gboolean create_methodspec'
26990         argument; this is false when generating a MethodImpl token.
26991         (reflection_methodbuilder_to_mono_method): Abstract and interface
26992         methods may also have generic parameters.
26993
26994 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
26995
26996         * appdomain.c: thread local alloc
26997
26998 2004-08-17  Martin Baulig  <martin@ximian.com>
26999
27000         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
27001
27002         * icall.c
27003         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
27004         argument.
27005
27006         * class.c (mono_type_get_full_name): New public function.
27007         (mono_type_get_name): Don't include the type arguments.
27008
27009 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
27010
27011         * Makefile.am: Build static versions of libmetadata and libmonoruntime
27012         for inclusion into the mono executable.
27013
27014 2004-08-16  Martin Baulig  <martin@ximian.com>
27015
27016         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
27017         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
27018
27019 2004-08-14  Martin Baulig  <martin@ximian.com>
27020
27021         * class.c (dup_type): Also copy the `byref' field.
27022
27023 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
27024
27025         * reflection.c (create_dynamic_mono_image): Revert the last change 
27026         since it breaks bootstrap.
27027
27028 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
27029
27030         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
27031
27032         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
27033         not free them with g_free.
27034
27035 2004-08-11  Martin Baulig  <martin@ximian.com>
27036
27037         * reflection.c (mono_reflection_setup_internal_class): Also call
27038         mono_class_setup_mono_type() if we already have a `tb->type.type'.
27039
27040 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
27041
27042         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
27043         called during default (first) AppDomain creation. Keep track of
27044         Evidence when loading assemblies.
27045
27046 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27047
27048         * opcodes.c, opcodes.h: reduce runtime relocations.
27049
27050 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
27051
27052         * culture-info.h, locales.c: fixes and chages to sue the new
27053         optimized format of the locale data.
27054         * culture-info-tables.h: regenerated.
27055
27056 2004-08-06  Geoff Norton <gnorton@customerdna.com>
27057         
27058         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
27059
27060 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
27061
27062         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
27063         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
27064         * domain-internals.h: icall declaration.
27065         * icall.c: icall registration.
27066         * object-internals.h: New fields in MonoAssembly for CAS.
27067
27068 2004-08-05  Duncan Mak  <duncan@ximian.com>
27069
27070         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
27071         CEE_LDELEM_ANY.
27072
27073 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27074
27075         * reflection.c: fix to deal with object[] arrays in custom ctors
27076         (bug #62550).
27077
27078 2004-08-05  Martin Baulig  <martin@ximian.com>
27079
27080         * class.c (mono_class_array_element_size): Added support for
27081         generic instances and correctly handle "recursive" types.
27082
27083 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
27084
27085         * assembly.c: Fix warnings.
27086
27087 2004-08-04  Martin Baulig  <martin@ximian.com>
27088
27089         * class.c
27090         (mono_type_get_name_recurse): Added `gboolean include_arity'
27091         argument specifying whether or not we should include the generic
27092         arity in the type name.
27093         (_mono_type_get_name): New static function.
27094         (mono_class_setup_vtable): If we're a generic instance, don't
27095         include the generic arity in the names of explicit method
27096         implementations.        
27097
27098 2004-08-03  Martin Baulig  <martin@ximian.com>
27099
27100         * class.c (mono_type_get_name_recurse): Enclose the generic type
27101         arguments in `<', '>'.
27102
27103 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27104
27105         * gc.c: make GC warning messages use the trace API, they are just
27106         noise to most of the users.
27107
27108 2004-08-03  Martin Baulig  <martin@ximian.com>
27109
27110         * debug-mono-symfile.c (read_string): Correctly read the string.
27111
27112 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
27113
27114         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
27115         
27116         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
27117         icalls.
27118         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
27119
27120 2004-07-30  Martin Baulig  <martin@ximian.com>
27121
27122         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
27123         Reflect latest symbol writer changes.   
27124
27125 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27126
27127         * object.c: always create an object if null is passed
27128         to Invoke() where a valuetype is expected.
27129
27130 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
27131
27132         * marshal.c (mono_marshal_init): make managed
27133         signatures match native ones better for 64bits.
27134
27135 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27136
27137         * appdomain.c: hack to build correctly the private bin path on windows.
27138         Fixes bug #61991.
27139
27140 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
27141
27142         * assembly.c: Load mscorlib from the correct framework directory
27143           (mono/<version>/mscorlib.dll).
27144         * appdomain.h: Added prototypes for new functions.
27145         * internals.h: Added some prototypes.
27146         * domain.c: When initializing the runtime, get from the executable and
27147           the configuration files the runtime version that the app supports.
27148           Added support methods for reading app.exe.config. Added list of versions
27149           supported by the JIT. Added two new methods: mono_init_from_assembly,
27150           which initializes the runtime and determines the required version from
27151           the provided exe file, and mono_init_version, which initializes
27152           the runtime using the provided version.
27153         * icall.c: Get machine.config from version-specific directory.
27154         * reflection.c: When generating an image, embed the version number
27155           of the current runtime.
27156
27157 2004-07-28  Dick Porter  <dick@ximian.com>
27158
27159         * socket-io.c
27160         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27161         returned sockaddr size before creating the remote address object.
27162         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27163         61608.
27164
27165 2004-07-28  Dick Porter  <dick@ximian.com>
27166
27167         * locales.c (string_invariant_compare_char): Fix invariant char
27168         compares between upper and lower cases.  Fixes bug 61458.
27169
27170 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27171         
27172         * marshal.c: actually cache stelem.ref wrappers.
27173         
27174 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27175
27176         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27177         sections and remove the mono_cli_rva_map () function.
27178
27179 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27180
27181         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27182         by Geoff Norton (<gnorton@customerdna.com>).
27183
27184 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27185
27186         * class.c: fix class loads for pointer types (typeof(int) !=
27187         typeof(int*)).
27188
27189 2004-07-27  Martin Baulig  <martin@ximian.com>
27190
27191         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27192         reading the debugging information from an external ".mdb" file.
27193
27194 2004-07-24  Martin Baulig  <martin@ximian.com>
27195
27196         * reflection.c (mono_image_get_type_info): Only write a class
27197         layout entry if we actually have a size or a packing size.
27198
27199 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27200
27201         * reflection.c (type_get_fully_qualified_name): 
27202         insert cast to get type checking of ?: with non-gcc compilers
27203
27204 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27205
27206         * rand.c: use g_getenv for both lookups of
27207         MONO_EGD_SOCKET
27208
27209 2004-07-17  Martin Baulig  <martin@ximian.com>
27210
27211         * reflection.c (mono_reflection_bind_generic_method_parameters):
27212         Set `gmethod->reflection_info'.
27213
27214 2004-07-17  Martin Baulig  <martin@ximian.com>
27215
27216         * class.c (mono_class_create_from_typedef): Insert the newly
27217         created class into the hash table before computing the interfaces
27218         since we could be called recursively.
27219
27220 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27221
27222         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27223         function to implement stelem.ref in managed code
27224         * class-internals.h, debug-helpers.c: a new wrapper type
27225         for the above.
27226
27227 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27228
27229         * gc.c: allow GC handles to work even when no GC is compiled in.
27230         Fix part of bug #61134 (GetAddrOfPinnedObject).
27231
27232 2004-07-13  Peter Williams  <peter@newton.cx>
27233  
27234         * process.c (complete_path): Make sure we don't attempt to execute
27235         directories.
27236  
27237 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27238
27239         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27240           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27241           and will add/subtract the hour if needed
27242
27243 2004-07-12  Martin Baulig  <martin@ximian.com>
27244
27245         * reflection.c (mono_field_get_object): If we have
27246         `field->generic_info', take the attributes from
27247         `field->generic_info->generic_type'.    
27248
27249 2004-07-12  Martin Baulig  <martin@ximian.com>
27250
27251         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27252         This function must be called before initializing the runtime.
27253         (mono_debug_init_1): New function; call this after initializing
27254         the runtime, but before loading the assembly.  It tells the
27255         debugger to load corlib and the builtin types.
27256
27257         * mono-debug-debugger.c: Did some larger changes in the debugging
27258         code; support recursive class declarations, make sure we actually
27259         add all classes.
27260
27261 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27262
27263         * debug-helpers.c: undo my previous patch and fixed the real issue in
27264         ../mini/exceptions-x86.c
27265
27266 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27267
27268         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27269         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27270         called from other .cctors.
27271
27272 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27273
27274         * loader.c: Removed the mono_loader_wine_init hack now that we are
27275         doing a managed version of Windows.Forms.
27276
27277 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27278
27279         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27280         threadpool.c, threads.c: remove static data from rootset.
27281
27282 2004-07-09  Dick Porter  <dick@ximian.com>
27283
27284         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27285         Don't do any more processing if the matched length was 0.  It was
27286         increasing the size of the string before.  Fixes bug 61167.
27287
27288 2004-07-09  Dick Porter  <dick@ximian.com>
27289
27290         * socket-io.h:
27291         * socket-io.c
27292         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27293         Add support for SO_PEERCRED if its available.
27294
27295 2004-07-09  Peter Bartok <pbartok@novell.com>
27296         * loader.c: winelib.exe.so error message is now only displayed if
27297         MONO_DEBUG is set. To help us avoid questions when people are trying
27298         out the new Managed.Windows.Forms.
27299
27300 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27301
27302         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27303         for isinst and castclass wrappers.
27304
27305         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27306         to libmetadata from the JIT, so they could be used by the marshalling
27307         code and the interpreter.
27308
27309         * marshal.c: Register marshalling related JIT icalls here instead of
27310         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27311         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27312
27313         * metadata.h: Remove unneeded marshalling conversions.
27314
27315         * opcodes.c: Update for new opcodes.
27316         
27317 2004-07-08  Martin Baulig  <martin@ximian.com>
27318
27319         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27320         (mono_debug_get_domain_data): Make this function static.
27321
27322 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27323
27324         * gc.c, object.h: add nice GC handle API for embedders.
27325
27326 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27327
27328         * reflection.c: more changes for the new api
27329
27330         * object.c: When we reflect on a field w/ a constant value, it
27331         will not have a memory location, so we must access metadata. Also,
27332         allow easier reading of strings so that we can read them from
27333         the constant data.
27334
27335         * class.c (mono_class_layout_fields): no need for literal fields here.
27336
27337         * class-internals.h: api changes for const fields
27338
27339         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27340
27341 2004-07-06  Martin Baulig  <martin@ximian.com>
27342
27343         * mono-debug.h: Increment version number to 44.
27344
27345         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27346         now a gpointer, rewrote this whole method.
27347
27348         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27349         function.  Add information about the wrapper in a new "misc table".
27350
27351         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27352         for the new misc table.
27353
27354 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27355
27356         * metadata-internals.h image.c: Add a cache for helper signatures.
27357
27358         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27359
27360 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27361
27362         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27363         delegates from a delegate. Fixes #61033.
27364         
27365         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27366         marshalling of stringbuilder arrays. Fixes #59900.
27367
27368 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27369
27370         * icall.c: Add EnumBuilder:setup_enum_type icall.
27371
27372 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27373
27374         * icall.c: Added a new icall for the property version of
27375         OffsetOfStringData.
27376
27377 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27378
27379         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27380         it has a constant size across platforms.
27381
27382         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27383         stack trace.
27384
27385 2004-06-29  Martin Baulig  <martin@ximian.com>
27386
27387         * mono-debug.c (mono_debug_add_method): Protect the whole function
27388         in mono_debugger_lock(), not just parts of it.
27389
27390 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27391
27392         * reflection.c: make sure padding bytes in heaps are zeroed.
27393
27394 2004-06-24  David Waite  <mass@akuma.org>
27395
27396         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27397         image.c, loader.c, locales.c, marshal.c, metadata.c,
27398         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27399         string-icalls.c, threads.c: change to C90-style comments from C99 /
27400         C++ -style
27401
27402 2004-06-24  Dick Porter  <dick@ximian.com>
27403
27404         * threads.c
27405         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27406         return createdNew.  Fixes bug 60412.
27407
27408         * threads-types.h: 
27409         * icall.c: Add createdNew parameter to CreateMutex icall
27410
27411 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27412
27413         * reflection.c, object-internals.h: save default value in params.
27414
27415 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27416
27417         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27418         no need to build a new path combining that with the application base.
27419         Fixes bug #60442.
27420
27421 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27422
27423         * reflection.c: fixed minor standard compliance issues.
27424
27425 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27426
27427         * reflection.c: fixed issue with encoding some custom attributes
27428         (arrays in properties and fields, bug #60411).
27429
27430 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27431
27432         * reflection.c: fix start address when copying the public key token.
27433
27434 2004-06-23  Martin Baulig  <martin@ximian.com>
27435
27436         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27437         the `exc' object in a static object to put it into the GC's root set.
27438
27439 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27440
27441         * reflection.c: make mono_reflection_setup_internal_class ()
27442         callable a second time to setup a new parent class.
27443
27444 2004-06-23  Dick Porter  <dick@ximian.com>
27445
27446         * threads.c: Check for WAIT_IO_COMPLETION return values.
27447
27448 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27449
27450         * appdomain.c: Removed the g_free on the public key token. Now copy 
27451         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27452         * assembly.c: Added public key token string value when loading 
27453         assemblies. Fix bug #60439.
27454         * icall.c: Added missing informations (like public key) in 
27455         GetReferencedAssemblies. Fix #60519.
27456         * image.h: Changed definition for public key token from const char*
27457         public_tok_value to guchar public_key_token [17];
27458         * reflection.c: Updated for changes to public key token.
27459
27460 2004-06-22  Lluis Sanchez Gual
27461
27462         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27463         for the field in base classes.
27464
27465 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27466
27467         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27468         mark headers as not supported, they are installed only for use by the
27469         debugger.
27470
27471 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27472
27473         * *.c, *.h: avoid namespace pollution in public headers.
27474
27475 2004-06-21  Martin Baulig  <martin@ximian.com>
27476
27477         * exception.c (mono_get_exception_security): It's in
27478         "System.Security", not in "System".
27479
27480         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27481         the exception classes.
27482
27483 2004-06-21  Martin Baulig  <martin@ximian.com>
27484
27485         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27486         Protect the exception object from being finalized.
27487
27488 2004-06-21  Martin Baulig  <martin@ximian.com>
27489
27490         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27491         public function.
27492
27493 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27494
27495         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27496         if it was not loaded before. Fix parts of #60439.
27497
27498 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27499
27500         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27501         code that was broken since Ben's change: wrappers are now
27502         dependent on the method signature only again.
27503
27504 2004-06-21  Martin Baulig  <martin@ximian.com>
27505
27506         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27507         added interface support.
27508
27509 2004-06-21  Martin Baulig  <martin@ximian.com>
27510
27511         * class.c (mono_vtable_get_static_field_data): New public method.
27512
27513 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27514
27515         * filewatcher.c : Windows build fix to be compliant with API changes.
27516
27517 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27518
27519         * class.h, class.c: more accessors.
27520         * metadata.h, metadata.c: prepare for hiding MonoType and
27521         MonoMethodSignature: people should use the accessors from now on
27522         outside of the tree.
27523
27524 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27525
27526         * *.c, *.h: more API cleanups.
27527
27528 2004-06-18  Jackson Harper  <jackson@ximian.com>
27529
27530         * assembly.c: Trace loading assemblies.
27531         * loader.c: Trace loading native libraries.
27532         * mono-config.c: Trace loading config files.
27533         
27534 2004-06-18  Dick Porter  <dick@ximian.com>
27535
27536         * locales.c: Tell ICU the lengths of strings, it can cope with
27537         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27538
27539 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27540
27541         * image.c: swapped name/filename;
27542
27543 2004-06-18  Martin Baulig  <martin@ximian.com>
27544
27545         * mono-debug-debugger.c (write_class): Write the parent class at
27546         the end of the header.
27547
27548 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27549
27550         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27551
27552 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27553
27554         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27555         (bundle_obj): New conditional define.
27556         (BUILT_SOURCES): Remove.
27557         ($(bundle_srcs)): Make parallel-make safe.
27558         (libmonoruntime_la_LIBADD): Make unconditional.
27559         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27560         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27561
27562 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27563
27564         * culture-info-tables.h: It was inconsistent with the latest
27565           supp info files.
27566
27567 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27568
27569         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27570         be loaded.
27571
27572         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27573         with gcc 2.95.
27574
27575 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27576
27577         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27578         cleaned up public header threads.h.
27579
27580 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27581
27582         * Makefile.am, *.c, *.h: more API cleanups.
27583
27584 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27585
27586         * Makefile.am: removed monosn from compilation.
27587         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27588         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27589         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27590         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27591         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27592         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27593
27594 2004-06-15  Jackson Harper  <jackson@ximian.com>
27595
27596         * assembly.c: Make locales lower case when searching the GAC for
27597         assemblies. gacutil will always make locales lowercase when
27598         installing so this effectively makes them case insensitive.
27599         
27600 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27601
27602         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27603         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27604           parameter which allows to choose whether the wait can be interrupted or 
27605           not. Also added the method mono_monitor_enter(), which locks the monitor
27606           using an infinite wait and without allowing interruption.
27607           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27608           interrupted.
27609         * object.h: Added new fields in MonoThread. suspend_event holds the event
27610           used to susped/resume the thread. synch_lock is the lock object to use for
27611           modifying the thread state.
27612         * threads.c: Use the new synch_lock object for locking, instead of "this",
27613           which can generate deadlocks.
27614           Moved thread state change in Thread.Sleep and Thread.Join from managed
27615           to unmanaged code. This avoids a deadlock when the thread was suspended
27616           just after acquiring the thread lock.
27617           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27618           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27619           which is not fully implemented in the io-layer.
27620         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27621
27622 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27623
27624         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27625         threads-types.h: more API cleanups.
27626
27627 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27628
27629         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27630         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27631         threadpool.c, threads.c: first pass at the exported API cleanup.
27632
27633 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27634
27635         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27636
27637 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27638
27639         * icall.c: added internalGetHome.
27640
27641 2004-06-14  Dick Porter  <dick@ximian.com>
27642
27643         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27644         possible to return successfully when '.' or '..' were the only
27645         entries in a directory, but were skipped.  The MonoIOStat was not
27646         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27647         Fixes bug 59574.
27648
27649 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27650
27651         * reflection.c: make binaries run on .Net 1.1 by default.
27652
27653 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27654
27655         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27656
27657 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27658
27659         * marshal.c: keep track of struct size with explicit layout
27660         (bug #59979).
27661
27662 2004-06-12  Martin Baulig  <martin@ximian.com>
27663
27664         * mono-debug-debugger.c: Comment out a debugging g_message().
27665
27666 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27667
27668         * reflection.c, reflection.h: do not free custom attrs that are cached.
27669         * icall.c: use braces to make code clearer.
27670
27671 2004-06-11  Martin Baulig  <martin@ximian.com>
27672
27673         * class.h (MonoInflatedField): New type.
27674         (MonoClassField): Replaced `MonoType *generic_type' with
27675         `MonoInflatedField *generic_info'.
27676
27677         * icall.c
27678         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27679
27680 2004-06-11  Martin Baulig  <martin@ximian.com>
27681
27682         * reflection.c (mono_image_create_method_token): Correctly encode
27683         varargs methods.
27684
27685 2004-06-11  Martin Baulig  <martin@ximian.com>
27686
27687         * metadata.c (mono_metadata_parse_method_signature): When parsing
27688         a MethodDef which has VarArgs, also set sentinelpos if we don't
27689         have any parameters.
27690
27691 2004-06-11  Martin Baulig  <martin@ximian.com>
27692
27693         * verify.c (mono_method_verify): In CEE_CALL, use
27694         mono_method_get_signature() to get the method's signature, unless
27695         we're a PInvoke method.
27696
27697 2004-06-10  Jackson Harper  <jackson@ximian.com>
27698
27699         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27700         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27701         logical name as the supplied path is just a prefix to the gac not
27702         the direct path to it.
27703         
27704 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27705
27706         * reflection.c: make the token for a created method match
27707         the token of the MethodBuilder it was created from
27708         (IKVM requires this behaviour now).
27709
27710 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27711
27712         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27713         reflection.c, socket-io.c: leak fixes.
27714
27715 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27716
27717         * icall.c: handle sentinel pos in vararg methods in position different
27718         from 0.
27719
27720 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27721
27722         * culture-info-tables.h: freshly generated.
27723
27724 2004-06-09  Martin Baulig  <martin@ximian.com>
27725
27726         * loader.c (mono_get_method_constrained): Call `mono_class_init
27727         (constrained_class)'.   
27728
27729 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27730
27731         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27732         any methods. Fixes #59629.
27733
27734 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27735
27736         * culture-info-tables.h: reflecting locale-builder updates.
27737
27738 2004-06-08  Dick Porter  <dick@ximian.com>
27739
27740         * object.h:
27741         * locales.c: Fixed compile warnings, including a real bug in
27742         CompareInfo_internal_compare.
27743         
27744 2004-06-08  Dick Porter  <dick@ximian.com>
27745
27746         * locales.c
27747         (ves_icall_System_Globalization_CompareInfo_internal_index):
27748         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27749         Double-check the resuls of usearches, because ICU currently
27750         ignores most of the collator settings here.  Fixes bug 59720.
27751         
27752 2004-06-08  Dick Porter  <dick@ximian.com>
27753
27754         * locales.c
27755         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27756         Fix memory leak and segfault-causing typo.  No idea how this one
27757         lasted so long without being noticed.
27758
27759 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27760
27761         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27762         any methods. Fixes #59629.
27763
27764 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27765
27766         * assembly.c:
27767         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27768         own the critical section before). Removed dead code (that's done
27769         in the preload hook).
27770
27771         (mono_assembly_load_with_partial_name): call the preload hook.
27772
27773 2004-06-08  Martin Baulig  <martin@ximian.com>
27774
27775         * metadata.c (mono_metadata_signature_alloc): Default
27776         `sentinelpos' to -1.
27777
27778         * reflection.c (mono_image_get_array_token): Likewise.
27779
27780 2004-06-08  Martin Baulig  <martin@ximian.com>
27781
27782         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27783
27784         * metadata.c (mono_metadata_parse_method_signature): When parsing
27785         a MethodDef which has VarArgs, set sentinelpos.
27786
27787         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27788         `gint16' since we're using -1 for non-varargs methods.
27789
27790         * reflection.c
27791         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27792         (method_encode_signature): Added varargs support.
27793         (method_builder_encode_signature): Likewise.
27794         (mono_image_get_varargs_method_token): New static method.
27795         (mono_image_create_method_token): New public method; this is
27796         called via an icall instead of mono_image_create_token() when
27797         calling a varargs method.       
27798
27799 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27800
27801         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27802
27803 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27804
27805         * culture-info-tables.h : Reflecting the latest locale-builder that
27806           fixed empty array representation ({} to {0}).
27807
27808 2004-06-07  Jackson Harper  <jackson@ximian.com>
27809
27810         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27811         looking up extra gac paths. This allows MONO_GAC_PATH to act
27812         exactly like a prefix.
27813         
27814 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27815
27816         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27817         type name before modifying it. Fixes #59405.
27818
27819 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27820
27821         * culture-info.h: added fields for "all datetime patterns".
27822         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27823           _construct_datetime_format ()): fill xxx_patterns fields.
27824         * object.h: added fields for "all datetime patterns" to
27825           MonoDateTimeFormatInfo.
27826         * culture-info-tables.h: reflecting locale-builder updates.
27827
27828 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27829
27830         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27831         the event has no add and remove methods. Fixes #59629.
27832
27833 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27834
27835         * object.c: Fixed possible integer overflow when allocating large
27836         strings.
27837
27838 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27839
27840         * culture-info-tables.h: reflecting locale-builder updates.
27841
27842 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27843
27844         * culture-info-tables.h: reflecting locale-builder updates.
27845
27846 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27847
27848         * culture-info-tables.h: reflecting locale-builder updates.
27849
27850 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27851
27852         * threads.c: Made Thread.Sleep abortable.
27853
27854 2004-06-02  Martin Baulig  <martin@ximian.com>
27855
27856         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27857
27858         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27859
27860 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27861
27862         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27863
27864 2004-05-30  Jackson Harper  <jackson@ximian.com>
27865
27866         * reflection.c: Do not hardcode assembly versions or public key
27867         tokens anymore. All of this except the corlib section was dead
27868         code anyways.
27869         
27870 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27871
27872         * object.c (mono_runtime_invoke_array): Automatically create boxed
27873         objects for byref valuetypes if needed. Fixes #59300.
27874         
27875         * object.c (mono_method_return_message_restore): Handle 
27876         MONO_TYPE_OBJECT as well.
27877
27878 2004-05-28  Jackson Harper  <jackson@ximian.com>
27879
27880         * reflection.c: The modified type encoding was causing build
27881         problems. Reverted for now.
27882         
27883 2004-05-28  Jackson Harper  <jackson@ximian.com>
27884
27885         * reflection.c/h: Take an assembly ref so that we dont create
27886         fully qualified names when encoding types in the same assembly as
27887         the custom attribute being emitted.
27888         * appdomain.c: Increment version number.
27889         
27890 2004-05-26  Duncan Mak  <duncan@ximian.com>
27891
27892         * icall.c
27893         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27894         Set the full version number (major, minor, build, revision).
27895
27896 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27897
27898         * marshal.c (emit_struct_conv): increment src/dst after blit
27899         (mono_marshal_get_managed_wrapper,
27900         mono_marshal_get_native_wrapper): make sure we have marshalling
27901         info before marshalling params (info computation affects
27902         blittable)
27903
27904         * class.c (class_compute_field_layout): correctly deal with
27905         blittable
27906         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27907         value types (as per what windows dows by default)
27908         (mono_class_setup_mono_type): System.ValueType is blittable
27909         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27910         blittable
27911
27912         * marshal.c (mono_marshal_load_type_info): flag types  as
27913         non-blittable if the native layout doesn't match the managed
27914         layout
27915
27916 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27917
27918         * appdomain.c: don't add stuff in the private search path that is
27919         above the application base. If application base is not set, there's
27920         no private search path.
27921
27922 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27923
27924         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27925         byref struct arguments in native->managed marshalling.
27926
27927 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27928
27929         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27930         cache methods using signature (special case for methods
27931         that are value type or string class)
27932         
27933         * image.c (mono_image_close): clean up allocated GSList's
27934         in runtime_invoke_cache.
27935
27936 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27937
27938         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27939         there's no MONO_CFG_DIR environment variable defined.
27940
27941 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27942
27943         * threads.c: windows version must be >= 0x0500 to include OpenThread.
27944
27945 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
27946
27947         * threadpool.c: Really wait for 500ms after the async call, even if the wait
27948           is interrumped.
27949         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
27950           before waiting for it, and call CloseHandle after the wait to unref it.
27951           This will make sure that handles are not disposed too early.
27952
27953 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27954
27955         * appdomain.c:
27956         * appdomain.h:
27957         * icall.c: removed
27958         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
27959         needed now.
27960
27961         * object.c: se the application_base only for the domain that runs
27962         Main. Fixes bug #59216,
27963
27964 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27965
27966         * appdomain.c:
27967         * object.c: only the domain in which Main is run have
27968         SetupInformation.ConfigurationFile set, so moved a few lines from
27969         appdomain.c to object.c.
27970
27971 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27972
27973         * appdomain.c: we tried to load [name].(dll|exe), but according
27974         to bug #57710, we must also try [culture]/[name].(dll|exe) and
27975         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
27976         There's a test case attached to bug #58922.
27977
27978 2004-05-27  Dick Porter  <dick@ximian.com>
27979
27980         * icall.c:
27981         * file-io.c: Implemented icalls for locking and unlocking regions
27982         in a file.
27983         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
27984         FALSE on error (fixes both compiler warning and real bug.)
27985
27986 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
27987
27988         * culture-info-tables.h: reflecting locale-builder updates.
27989
27990           (Added missing ChangeLog entry for 05/26)
27991
27992 2004-05-27  Jackson Harper  <jackson@ximian.com>
27993
27994         * locales.c: Fix some cut and paste errors.
27995         
27996 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27997
27998         * mono-config.c: set the correct path for config. directory on windows.
27999
28000 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28001
28002         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
28003           on win32.
28004
28005 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28006
28007         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
28008         from pinvoke functions.
28009         
28010         * marshal.c (mono_ftnptr_to_delegate): Implement this.
28011
28012 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28013
28014         * culture-info-tables.h: reflecting locale-builder updates.
28015
28016 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28017
28018         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
28019         #59086.
28020
28021 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
28022
28023         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
28024         * icall.c: Modified icalls for RNG.
28025         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
28026         Windows (CryptoAPI).
28027
28028 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28029
28030         * locales.c: Fix build.
28031
28032 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
28033
28034         * culture-info-tables.h: reflecting locale-builder updates.
28035
28036 2004-05-25  Jackson Harper  <jackson@ximian.com>
28037
28038         * locales.c: When creating the current culture use the $LANGs
28039         specific culture. So DateTimeFormat and NumberFormat entries are created.
28040         
28041 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28042
28043         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
28044         a char array as parameter.
28045
28046 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
28047
28048         * image.c: In mono_image_open(), always use an absolute path name to
28049           look for already loaded images.
28050
28051 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
28052
28053         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
28054         missing in the windows build (like older cygwin include files).
28055
28056 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
28057
28058         * icall.c: Fixed check for possible integer overflow in Buffer_
28059         BlockCopy icall. Replaced comments style // by /* */.
28060
28061 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
28062
28063         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
28064         
28065         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
28066         check after MONO_VTADDR. Fixes pinvoke2.exe.
28067
28068         * marshal.h marshal.c metadata.h: Add beginnings of support for
28069         ftnptr -> delegate marshalling.
28070
28071 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
28072
28073         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
28074         * threads.c: Fix warnings.
28075
28076 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
28077
28078         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
28079         * icall.c: Registered icalls for Suspend and Resume.
28080         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
28081           Thread.Abort.
28082         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
28083         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
28084         * process.c: Use WaitForSingleObjectEx.
28085         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
28086           checkpoints.
28087         * threads.c, threads.h: Make use of new Ex wait methods. Improved
28088           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
28089           for Suspend and Resume. Added new mono_thread_stop, used for stoping
28090           background threads. Added basic support for Abort in Windows.
28091           Start new threads using a managed delegate invoke wrapper. This wrapper
28092           has an interruption checkpoint that is needed since an interruption
28093           can be requested before the thread leaves the unmanaged code that starts 
28094           the thread.
28095         * marshal.c: Added interruption checkpoint after every native call, and
28096           also before managed calls for wrappers called from unmanaged code to
28097           go into managed code.
28098         * object.h: Added new field in MonoThread to keep track of interruption
28099           requests.
28100
28101 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
28102
28103         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
28104         calls.
28105
28106 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28107
28108         * appdomain.c:
28109         * assembly.c:
28110         * gc.c:
28111         * locales.c:
28112         * mono-config.c:
28113         * rand.c: getenv -> g_getenv (windows!)
28114
28115         * process.c: complete_path is also used on non-windows platforms.
28116
28117 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28118
28119         * icall.c: new signature for Process_Start.
28120
28121         * process.[ch]: new signature for Process_Start. If we're on windows
28122         and UseShellExecute is false, we have to search for the program by
28123         ourselves if we don't get a full path.
28124
28125 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
28126
28127         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
28128         marshalling and call CleanUpNativeData if needed. Fixes #58646.
28129
28130 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28131
28132         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
28133         Fixes bug #58373.
28134
28135 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28136
28137         * process.c: use double quotes to quote program name and arguments on
28138         windows. Fixes bug #58575.
28139
28140 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28141
28142         * file-io.c: don't return "." and ".." when using windows Find*File.
28143
28144 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
28145
28146         * marshal.c: Don't pass wrappers to message init because method 
28147         addressed used to lookup metadata. part of remoting[2|3] fix.
28148
28149 2004-05-15  Jackson Harper  <jackson@ximian.com>
28150
28151         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
28152         path is essentially the same as MONO_PATH except that it points to
28153         GACs instead of lib directories.
28154         * loader.h: The user gac is gone so we dont need function to
28155         enable/disable it.
28156         * mono-config.c: user gac option is now gone.
28157         
28158 2004-05-15  Jackson Harper  <jackson@ximian.com>
28159
28160         * culture-info.h: Make defines more consistent, add calendar data
28161         to the culture info table.
28162         * culture-info-tables.h: Add basic calendar data. Basically
28163         everyone gets default gregorian until all the data is
28164         updated.
28165         * locales.c: Use the new consistent defines. Set calendar data for
28166         culture info objects.
28167         * object.h: add a field for calendar data to CultureInfo
28168         
28169 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28170
28171         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28172         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28173         a signature.
28174         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28175         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28176         an extra param that is the pointer of the method to invoke. The IL for
28177         the invoke method is no longer specific to the method, but to the
28178         signature of the method. Thus, we can share the same code for multiple
28179         methods. This reduces the number of methods that have to be compiled.
28180
28181 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28182
28183         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28184
28185         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28186
28187         * icall.c: Optimize Buffer.BlockCopy.
28188
28189 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28190
28191         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28192         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28193         quote). Changed them to "MMMM yyyy".
28194
28195 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28196
28197         * rand.c
28198         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28199
28200 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28201
28202         * reflection.h: Updated after changes to managed structures.
28203
28204         * appdomain.c: Bump corlib version.
28205
28206 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28207
28208         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28209         windows.
28210
28211 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28212
28213         * Makefile.am: link to ../os/libmonoos.la on windows.
28214
28215         * assembly.c:
28216                 -If MONO_DEBUG, warn about non-existing directories in
28217                 MONO_PATH.
28218                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28219                 compile time variable.
28220                 -Removed init_default_path and call mono_set_rootdir from
28221                 libmonoos.a instead (windows only).
28222
28223         * assembly.h: declare mono_assembly_getrootdir().
28224
28225         * domain.c:
28226         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28227
28228         * loader.c: s/getenv/g_getenv/
28229
28230 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28231
28232         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28233
28234         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28235
28236         * metadata.h: Add new marshalling conversions.
28237
28238         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28239         function.
28240
28241         * reflection.c (mono_reflection_get_type): Lookup the type in all
28242         modules of a multi-module assembly. Fixes #58291.
28243
28244 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28245
28246         * threads.c: Before aborting a background, set the StopRequested
28247         state.  This avoids throwing the Abort exception.
28248         In mono_thread_manage, don't continue with the shutdown until all
28249         aborted threads have actually stopped.
28250
28251 2004-05-10  Jackson Harper  <jackson@ximian.com>
28252
28253         * locales.c: Remove the modifier from culture names.
28254         
28255 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28256
28257         * Makefile.am: monosn is not installed any more. It has been deprecated
28258         in favor of sn.
28259
28260 2004-05-07  Jackson Harper  <jackson@ximian.com>
28261
28262         * locales.c
28263         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28264         Fix array construction, add bailout if the length is 0.
28265
28266 2004-05-07  Dick Porter  <dick@ximian.com>
28267
28268         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28269         machine doesn't have a DNS entry.  Patch by Urs Muff
28270         (umuff@quark.com), fixes bug 57928.
28271
28272 2004-05-06  Jackson Harper  <jackson@ximian.com>
28273
28274         * reflection.c: Handle null PublicTokens properly. alloc mem for
28275         assembly names culture so we dont crash when freeing it.
28276         
28277 2004-05-06  Jackson Harper  <jackson@ximian.com>
28278
28279         * assembly.c: Check the usergac when loading with partial names.
28280         
28281 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28282
28283         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28284         does nothing for now (not required for Linux/Windows) but the class
28285         library can call it (and a newer or modified runtime could need it).
28286         * icall.c: Registred icall.
28287
28288 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28289
28290         * loader.c: prints a message on module loading error we set MONO_DEBUG
28291         environment variable.
28292
28293 2004-05-05  Jackson Harper  <jackson@ximian.com>
28294
28295         * appdomain.c: Handle PublicKeyToken=null properly.
28296         
28297 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28298
28299         * environment.c|h: Added icall ves_icall_System_Environment_
28300         GetOSVersionString to get the current OS version as a string.
28301         * icall.c: Registred icall.
28302
28303 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28304
28305         * object.c: in mono_object_get_virtual_method(), take into account that
28306         non-virtual methods don't have a slot in the vtable. Check needed when
28307         the object is a proxy.
28308
28309 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28310
28311         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28312         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28313
28314         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28315
28316         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28317         passed when a valuetype is expected.
28318
28319         * object.c (mono_unhandled_exception): Only set the exit code if the
28320         exception happens in the main thread. Fixes thread5.exe.
28321
28322         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28323         invalid names. Fixes #58047.
28324
28325 2004-05-03  Jackson Harper  <jackson@ximian.com>
28326
28327         * assembly.c: This line was committed accidently and is unneeded.
28328         
28329 2004-05-03  Jackson Harper  <jackson@ximian.com>
28330
28331         * icall.c: Add new icall for Assembly::LoadWithPartialName
28332         * assembly.c/.h: new function that probes the GAC to load partial
28333         assembly names by Paolo Molaro.
28334         
28335 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28336
28337         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28338         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28339         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28340         full type name.
28341
28342 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28343
28344         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28345         * reflection.c: fix bug when parsing a full type name and Version is not
28346         the last thing in the string.
28347
28348 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28349
28350         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28351         crashes when it is freed.
28352
28353 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28354
28355         * assembly.c: print the compat warning to stderr.
28356
28357 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28358
28359         * assembly.c (mono_assembly_load_references): Add a compatibility
28360         hack to run old applications that might be still referencing the
28361         3300-based assemblies, only do this for System.xxx.
28362
28363 2004-05-01  Jackson Harper  <jackson@ximian.com>
28364
28365         * appdomain.c: If the culture is neutral we set it to "".
28366         
28367 2004-04-29  Jackson Harper  <jackson@ximian.com>
28368
28369         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28370
28371 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28372  
28373         * string-icalls.c: added low overhead function for copying chars
28374         * icall.c: added needed icall for the above function
28375  
28376 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28377
28378         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28379         Environment.GetLogicalDrives.
28380
28381 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28382
28383         * rand.c: try and talk to egd or prngd
28384         for random bytes if opening devices fail.
28385
28386 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28387
28388         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28389         alignment for the type using the native alignment of its members 
28390         instead of using klass->min_align.
28391
28392         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28393
28394 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28395
28396         * file-io.c:
28397         * socket-io.c: added check for sys/aio.h.
28398
28399 2004-04-28  Dick Porter  <dick@ximian.com>
28400
28401         * threads.c: Don't abort a thread thats already aborting, when
28402         terminating everything.
28403
28404 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28405
28406         * icall.c: added 2 new async calls for Socket.
28407
28408         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28409         IO on *nix systems.
28410
28411         * threadpool.c: removed unused variable.
28412
28413 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28414
28415         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28416
28417 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28418
28419         * locales.c: put back string_invariant_tolower () and
28420         string_invariant_toupper ().
28421
28422 2004-04-26 David Waite <mass@akuma.org>
28423
28424         * file-io.h:
28425         * socket-io.h:
28426         * threads.h:
28427         * unicode.h: remove comma from end of enumeration declarations
28428
28429 2004-04-26 David Waite <mass@akuma.org>
28430
28431         * debug-mono-symfile.h:
28432         * decimal.c:
28433         * mono_debug.h:
28434         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28435
28436
28437 2004-04-26  Jackson Harper  <jackson@ximian.com>
28438
28439         * appdomain.c: Increment version number.
28440         
28441 2004-04-26  Jackson Harper  <jackson@ximian.com>
28442
28443         * appdomain.c: Set assembly references public token value when
28444         PublicKeyToken is specified, not the hash_value. Free public token
28445         values when free assembly name data. Previously the public key
28446         token was hex decoded, however we are using hex encoded public key
28447         tokens, so this is not neccasary.
28448         * assembly.c: Lookup assemblies in the gac if their public token
28449         value is set. Add function to allow enabling user gac
28450         lookups. Specify whether or not the assembly was loaded from the
28451         GAC. Compare full assembly names when checking the cache for
28452         assemblies (Temporarily disabled see comment in code). Remove
28453         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28454         specifies trace-loader they get extra info to stdout on the
28455         loading of assemblies.
28456         * image.h: Add a field for an assembly references public token
28457         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28458         whether an assembly has been loaded from the GAC.
28459         * image.c: Remove a corlib -> mscorlib name mapping.
28460         * loader.h: Add function to enable/disable the user gac.
28461         * mono-config.c: Check if the usergac is enabled in the config
28462         file.
28463         * icall.c: New icall to determine whether or not an assembly has
28464         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28465         * tabldefs.h: Add constant for assemblyref flag that specifies a
28466         full public key is used instead of a public token.
28467         * reflection.c: Remove mscorlib -> corlib mappings. Set
28468         PublicTokenValue instead of hash value. This value is a hex
28469         string so it does not need to be expanded.
28470
28471 2004-04-26  Martin Baulig  <martin@ximian.com>
28472
28473         * mono-debug-debugger.c (mono_debugger_initialize): Set
28474         `mono_debugger_initialized' before calling mono_debug_lock().
28475
28476 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28477
28478         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28479           InternalToUpper/InternalToLower.
28480         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28481           removed invariant culture shortcut.  This is now done in managed code.
28482         * locales.c: (string_invariant_toupper/tolower) removed.
28483
28484 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28485
28486         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28487         Added Poll internal call.
28488
28489         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28490         call for Poll. Select was too heavy for polling a single socket.
28491
28492         * threadpool.[ch]: added mono_threadpool_cleanup.
28493         * threads.c: use it. Don't use Thread_Abort on windows.
28494
28495 2004-04-23  Martin Baulig  <martin@ximian.com>
28496
28497         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28498
28499 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28500
28501         * icall.c: Registred new icalls for key pair protection and added an
28502         icall for Environment.GetFolderPath on Windows.
28503         * security.c|h: Added new icalls for key pair protection.
28504
28505 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28506
28507         * socket-io.c: don't display the non-supported family warning for known
28508         families. Now this is not displayed on windows when checking support
28509         for IPv4/IPv6.
28510
28511 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28512
28513         * class.c: don't display the layout warning for static fields.
28514
28515 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28516
28517         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28518         * locales.c, locales.h: Added new icalls for culture-specific
28519         Char.ToLower and Char.ToUpper.
28520
28521 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28522
28523         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28524         by David Waite.
28525
28526 2004-04-20  Martin Baulig  <martin@ximian.com>
28527
28528         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28529         of the type name before passing it to mono_reflection_type_from_name().
28530
28531 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28532
28533         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28534         encodings here. Fixes #56965.
28535
28536 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28537
28538         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28539         fix test on strstr result not that I can see anything that
28540         relies on the result.
28541
28542 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28543
28544         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28545         Fixes #57081.
28546
28547         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28548
28549         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28550         function to determine which marshalling to use for strings. Fixes
28551         #56965.
28552
28553         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28554
28555         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28556
28557 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28558
28559         * icall.c: #include mono-config.h
28560
28561 2004-04-15  Jackson Harper  <jackson@ximian.com>
28562
28563         * culture-info-tables.h: Fix date formats for en-US culture.
28564         
28565 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28566
28567         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28568         ThreadPool.SetMinThreads.
28569         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28570         ThreadPool.SetMinThreads.
28571
28572 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28573
28574         * mono-config.c: also load the .config file in the directory
28575         where the assembly was found.
28576
28577 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28578
28579         * assembly.c: load per-assembly config files.
28580         * icall.c: decrapified code to get the config dir and moved to
28581         mono-config.c.
28582         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28583         per-assembly config files. When doing a dll map lookup give precedence
28584         to the per-assembly data.
28585
28586 2004-04-14  Martin Baulig  <martin@ximian.com>
28587
28588         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28589         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28590         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28591
28592         * mono-debugger-debugger.c: While the debugger is locked, remember
28593         whether the symbol tables have changes and send one single
28594         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28595
28596 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28597
28598         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28599
28600         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28601         function.
28602
28603         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28604         account when marshalling string arrays. Fixes #56965.
28605
28606 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28607
28608         * icall.c: Add new icalls mapping for security.
28609         * security.c|h: Add internal calls for WindowsIdentity,
28610         WindowsImpersonationContext and WindowsPrincipal.
28611
28612 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28613
28614         * class.c: Added comment to ensure the System.MonoDummy class
28615         is removed when no longer necessary
28616
28617 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28618
28619         * appdomain.c: Pass arguments to the bootstraping exceptions to
28620         minimize JITed methods at boot
28621
28622         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28623         second string to be null.
28624
28625         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28626         Change the protocol to minimize the JIT methods at startup.  Now
28627         it Returns the internal codepage, if the value of "int_code_page"
28628         is 1 at entry, and we can not compute a suitable code page
28629         number, returns the code page as a string.
28630
28631 2004-04-13  Jackson Harper  <jackson@ximian.com>
28632
28633         * culture-info-tables.h: Fix number of decimal digits for all
28634         english locales.
28635
28636 2004-04-13  Jackson Harper  <jackson@ximian.com>
28637
28638         * icall.c: Clairfy out of sync error message. It is not always
28639         your corlib that is out of sync.
28640
28641 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28642
28643         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28644         properties when only the set accessor is overriden. Fixes #55874.
28645
28646 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28647
28648         * assembly.c (mono_assembly_load_references): Make this thread safe.
28649         Fixes #56327.
28650
28651 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28652
28653         * monosn.c: Add missing initialization calls.
28654
28655 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28656
28657         * locales.c:
28658         ves_icall_System_Globalization_CultureInfo_construct_number_format
28659         Fix g_assert so it compiles on fussier compilers re int/ptr
28660         mismatch
28661
28662 2004-04-08  Dick Porter  <dick@ximian.com>
28663
28664         * socket-io.h:
28665         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28666         53992.  Also rearrange the code so that the internal calls return
28667         an error value and exceptions are thrown from managed code.
28668
28669         * icall.c: Add type info to the socket icalls.
28670
28671 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28672
28673         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28674         owes me a beer.
28675
28676 2004-04-07  Martin Baulig  <martin@ximian.com>
28677
28678         * class.c (mono_class_from_generic_parameter): Don't default
28679         `klass->parent' to `mono_defaults.object_type'.
28680
28681 2004-04-07  Martin Baulig  <martin@ximian.com>
28682
28683         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28684         `param->pklass->reflection_info'.       
28685
28686 2004-04-07  Jackson Harper  <jackson@ximian.com>
28687
28688         * culture-info-tables.h: Fix date separator symbol.
28689         
28690 2004-04-07  Martin Baulig  <martin@ximian.com>
28691
28692         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28693         from System.Type to System.MonoType.
28694
28695 2004-04-07  Martin Baulig  <martin@ximian.com>
28696
28697         * reflection.h
28698         (MonoReflectionGenericParam): Added `has_reference_type' and
28699         `has_value_type' fields.
28700
28701         * reflection.c (mono_image_get_generic_param_info): Encode the
28702         correct flags if we have the `class' or `struct' constraint.
28703
28704 2004-04-07  Martin Baulig  <martin@ximian.com>
28705
28706         * reflection.h
28707         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28708
28709 2004-04-07  Jackson Harper  <jackson@ximian.com>
28710
28711         * appdomain.c: Revert extra patches, just wanted to bump the
28712         version number.
28713         
28714 2004-04-07  Jackson Harper  <jackson@ximian.com>
28715
28716         * Makefile.am: Add culture-info private headers.
28717         * icall.c: Add new icalls for contructing locales.
28718         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28719         * locales.h: Declare new culture info construction methods.
28720         * object.h: Add new fields used to avoid the CultureMap to
28721         MonoCultureInfo.
28722         * culture-info.h: Definition of structs used in the culture info
28723         tables.
28724         * culture-info-tables.h: Autogenerated tables that contain culture
28725         info data. This file was generated with the locale-builder tool.
28726         * appdomain.c: Incement corlib version number.
28727         
28728 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28729
28730         * appdomain.c: (mono_runtime_init) move mono_thread_init
28731         to before mono_object_new calls so critical sections
28732         are initialized before use.
28733
28734 2004-04-07  Martin Baulig  <martin@ximian.com>
28735
28736         * icall.c
28737         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28738         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28739         (ves_icall_MonoGenericParam_initialize): Removed.
28740         (monogenericparam_icalls): Removed.
28741         (generictypeparambuilder_icalls): Added new table for
28742         System.Reflection.Emit.GenericTypeParameterBuilder.
28743
28744         * reflection.c
28745         (mono_reflection_define_generic_parameter): Removed.
28746         (mono_reflection_initialize_generic_parameter): This is now called
28747         from GenericTypeParameterBuilder's .ctor.
28748
28749 2004-04-06  Martin Baulig  <martin@ximian.com>
28750
28751         * class.c (mono_class_init): Don't inflate nested classes in a
28752         generic instance.
28753         (mono_type_get_name_recurse): Include the generic arguments for
28754         generic instances and generic type declarations.
28755         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28756         (_mono_class_get_instantiation_name): Removed.
28757         (mono_class_create_generic): Always use `gklass->name' as our name.
28758
28759         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28760
28761         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28762         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28763         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28764         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28765         closed generic methods here.
28766
28767         * reflection.c
28768         (mono_reflection_generic_inst_get_nested_types): Removed.
28769         (inflate_mono_method): Copy the generic parameters from the
28770         MonoMethodHeader into out MonoGenericMethod.
28771
28772 2004-04-06  Martin Baulig  <martin@ximian.com>
28773
28774         * row-indexes.h
28775         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28776
28777         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28778
28779         * reflection.c (build_compressed_metadata): If we have any entries
28780         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28781         set the header version to 1.1.
28782
28783 2004-04-06  Martin Baulig  <martin@ximian.com>
28784
28785         * class.c (mono_class_init): If we're a generic instance,
28786         initialize our nested classes, too.
28787         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28788         suffix. 
28789
28790 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28791
28792         * process.c: quote the argument passed to the shell on windows.
28793
28794 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28795
28796         * threads.c (mono_alloc_special_static_data): Allow this to be
28797         called during startup.
28798
28799 2004-04-02  Martin Baulig  <martin@ximian.com>
28800
28801         * icall.c
28802         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28803
28804 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28805
28806         * icall.c: Fix build.
28807
28808 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28809
28810         * Makefile.am: Added security.c|h.
28811         * icall.c: Added icall for get_UserName;
28812         * security.c: New file for security related icalls. Added function
28813         get_UserName for System.Environment (fix #56144).
28814         * security.h: New. Header file for security.c
28815
28816 2004-04-02  Dick Porter  <dick@ximian.com>
28817
28818         * icall.c: Deleted the icalls that were obsoleted some time ago
28819         by the ICU string code, and which were mixed into the icall
28820         rearranging.  Fixes bug 55969.
28821
28822         * string-icalls.h: 
28823         * string-icalls.c: Deleted the code that those icalls reference.
28824
28825 2004-04-01  Martin Baulig  <martin@ximian.com>
28826
28827         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28828
28829         * class.c (mono_class_from_generic_parameter): Don't set 
28830         TYPE_ATTRIBUTE_INTERFACE.
28831         (my_mono_class_from_generic_parameter): Likewise.
28832
28833 2004-04-01  Martin Baulig  <martin@ximian.com>
28834
28835         * loader.c (find_method): Added an optional `MonoClass *ic'
28836         argument to search in a specific interface.
28837         (mono_get_method_constrained): New public function.
28838
28839 2004-04-01  Martin Baulig  <martin@ximian.com>
28840
28841         * reflection.c (mono_image_get_generic_field_token): Use the
28842         `handleref' cache here.
28843
28844 2004-04-01  Martin Baulig  <martin@ximian.com>
28845
28846         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28847
28848         * reflection.c (create_generic_typespec): Use the `typespec' hash
28849         here, not the `typeref' one.    
28850
28851 2004-04-01  Martin Baulig  <martin@ximian.com>
28852
28853         * class.c (mono_class_inflate_generic_type): Moved the
28854         functionality into a new static inflate_generic_type() which
28855         returns NULL if it didn't do anything.  Only increment the
28856         `mono_stats.inflated_type_count' if we actually inflated
28857         something.
28858         (mono_class_get_full): Check the classes type to see whether we
28859         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28860
28861 2004-04-01  Jackson Harper  <jackson@ximian.com>
28862
28863         * reflection.c: Set culture for assembly references.
28864         
28865 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28866
28867         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28868
28869 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28870
28871         * assembly.c:
28872         (do_mono_assembly_open): the critical section also covers
28873         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28874
28875 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28876
28877         * threads.c:
28878         (mono_manage_threads): abort the background threads when finishing.
28879         Fixes bug #47232.
28880
28881 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28882
28883         * gc.c: only close the done_event handle if there was no timeout.
28884         C-ified comments.
28885
28886 2004-03-30  Martin Baulig  <martin@ximian.com>
28887
28888         * icall.c (icall_entries): It's called "System.Activator", not
28889         "System.Activation".    
28890
28891 2004-03-30  Martin Baulig  <martin@ximian.com>
28892
28893         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28894         (mono_class_create_from_typespec): Likewise.
28895
28896 2004-03-30  Martin Baulig  <martin@ximian.com>
28897
28898         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28899         `has_ctor_constraint' and `initialized'.
28900
28901 2004-03-30  Martin Baulig  <martin@ximian.com>
28902
28903         * reflection.c (encode_new_constraint): New static function to add
28904         the constructor constraint attribute to a type parameter.
28905         (encode_constraints): Call encode_new_constraint() if necessary.
28906
28907         * reflection.h
28908         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28909
28910         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28911         
28912 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28913
28914         * reflection.c, icall.c: add support for pinning variables. 
28915
28916 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28917
28918         * marshal.c (mono_marshal_get_managed_wrapper):
28919         init bool local with zero rather than null.
28920
28921 2004-03-29  Martin Baulig  <martin@ximian.com>
28922
28923         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28924         the "official" behavior here.
28925         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28926
28927 2004-03-29  Martin Baulig  <martin@ximian.com>
28928
28929         * icall.c: Reflect latest API changes.
28930
28931 2004-03-29  Martin Baulig  <martin@ximian.com>
28932
28933         * loader.c (mono_get_method_from_token): Also call
28934         mono_metadata_load_generic_params () for abstract and interface
28935         methods; replace the type arguments in the method signature with
28936         the ones which are loaded from the metadata.
28937
28938 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28939
28940         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
28941         of the lock is not the current thread. MS.NET don't do it, in spite of
28942         what the documentation says. See bug #56157.
28943
28944 2004-03-28  Martin Baulig  <martin@ximian.com>
28945
28946         * class.c (mono_class_init): Don't call init_properties() and
28947         init_events() for generic instances; set `prop->parent' when
28948         inflating properties.
28949
28950         * reflection.c (mono_generic_inst_get_object): Call
28951         `mono_class_init (ginst->klass)'.
28952         (mono_type_get_object): Only create a MonoGenericInst if your
28953         generic type is a TypeBuilder.
28954         (do_mono_reflection_bind_generic_parameters): Only set
28955         `ginst->is_dynamic' if our generic type is a TypeBuilder.
28956
28957 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
28958
28959         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
28960         Fixes #56091.
28961
28962 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28963
28964         * icall.c: added Kill_internal icall.
28965         * process.[ch]: added Kill_internal icall.
28966
28967 2004-03-25  Martin Baulig  <martin@ximian.com>
28968
28969         * class.h (MonoStats): Added `generic_instance_count',
28970         `inflated_method_count', `inflated_type_count' and
28971         `generics_metadata_size'.       
28972
28973 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28974
28975         * reflection.c: no warnings now.
28976
28977 2004-03-25  Martin Baulig  <martin@ximian.com>
28978
28979         * class.c (mono_class_get_full): New public function; does a
28980         mono_class_get(), but also takes a `MonoGenericContext *'.
28981
28982         * loader.c (mono_field_from_memberref): Renamed to
28983         `field_from_memberref', made static and added `MonoGenericContext *'
28984         argument.
28985         (mono_field_from_token): Added `MonoGenericInst *' argument.
28986         (method_from_memberef): Likewise.
28987         (mono_get_method_from_token): Likewise.
28988         (mono_get_method_full): New public function; does a
28989         mono_get_method(), but also takes a `MonoGenericContext *'.
28990
28991         * verify.c (mono_method_verify): Get the method's generic context
28992         and pass it to mono_field_from_token(), mono_get_method_full() and
28993         mono_class_get_full().
28994
28995 2004-03-25  Martin Baulig  <martin@ximian.com>
28996
28997         * class.c (mono_class_inflate_generic_type): Take a
28998         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
28999         `MonoGenericMethod *'.
29000
29001 2004-03-25  Martin Baulig  <martin@ximian.com>
29002
29003         * loader.h (MonoMethodInflated): Store the MonoGenericContext
29004         instead of the MonoGenericMethod here.
29005
29006 2004-03-25  Martin Baulig  <martin@ximian.com>
29007
29008         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
29009         each time we create a new MonoGenericInst, we also create a new
29010         context which points back to us.
29011
29012         * class.c (inflate_method): Use `ginst->context' instead of
29013         creating a new context.
29014
29015         * loader.c (method_from_memberref): Use
29016         `klass->generic_inst->context' instead of creating a new context.
29017
29018 2004-03-25  Martin Baulig  <martin@ximian.com>
29019
29020         * class.h (MonoGenericContext): New struct.
29021         (MonoGenericMethod): Removed `generic_inst'.
29022
29023         * class.c (mono_class_inflate_generic_method): Take a
29024         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
29025
29026 2004-03-25  Martin Baulig  <martin@ximian.com>
29027
29028         * loader.h (MonoMethodInflated): New typedef.
29029
29030         * metadata.h (MonoMethodSignature): Removed `gen_method', make
29031         `generic_param_count' consume just 30 bits, added `is_inflated'
29032         and `has_type_parameters' flags (one bit each).
29033
29034         * class.c (mono_class_inflate_generic_method): Create a
29035         MonoMethodInflated instead of a MonoMethodNormal and set
29036         `is_inflated' in the method signature.
29037
29038         * class.h (MonoGenericMethod): Removed `generic_method'.
29039
29040 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
29041
29042         * image.c: Make sure the name of a MonoImage is always an absolute path.
29043           This fixes bug #54415.
29044
29045 2004-03-24  Martin Baulig  <martin@ximian.com>
29046
29047         * class.c (mono_class_setup_vtable): If we're a generic instance,
29048         use our generic type's vtable size.
29049
29050 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
29051
29052         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
29053         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
29054         problems.
29055
29056 2004-03-23  Martin Baulig  <martin@ximian.com>
29057
29058         * class.h (MonoDynamicGenericInst): Added `int count_events' and
29059         `MonoEvent *events'.
29060
29061         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
29062         (typebuilder_icalls): Added "get_event_info"; calls
29063         mono_reflection_event_builder_get_event_info(). 
29064
29065         * reflection.c (mono_reflection_generic_inst_initialize): Added
29066         `MonoArray *events'.
29067         (mono_reflection_event_builder_get_event_info): New function.
29068
29069 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
29070
29071         * object.h: add mono_type_initialization_init
29072
29073         * object.c (mono_runtime_class_init): 
29074         implement class constructor synchronization rules
29075         to cope with threading issues.  
29076         add mono_type_initialization_init
29077
29078         * appdomain.c (mono_runtime_init): call 
29079         mono_type_initialization_init
29080
29081         * class.h: removing initializing field from MonoVTable
29082
29083 2004-03-23  Martin Baulig  <martin@ximian.com>
29084
29085         * class.c (my_mono_class_from_generic_parameter): Use
29086         `param->name' if it's not NULL. 
29087
29088 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
29089
29090         * class.c: do not insert non-virtual methods in the vtable.
29091         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
29092         that means the method is non-virtual. This never would have
29093         happened before.
29094
29095 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
29096
29097         * profiler.c: Added lock for accessing coverage_hash.
29098
29099 2004-03-22  Martin Baulig  <martin@ximian.com>
29100
29101         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
29102         `method->method->signature->generic_param_count != 0' to make it
29103         work for interface methods.
29104
29105 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29106
29107         * process.c: quote the string passed to the shell using g_shell_quote.
29108
29109 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29110
29111         * threads.c:
29112         (mono_threads_manage): don't remove the finalizer thread and self
29113         from the threads hash table so that mono_thread_manage can be called
29114         more than once.
29115
29116 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29117
29118         * process.c: quote the arguments when UseShellExecute is true. Fixes
29119         bug #55790.
29120
29121 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29122
29123         * threads.c: set mono_thread_detach as a cleanup routine for every
29124         thread. This way it's always executed upon thread termination, either
29125         aborted or finished normally. No more xsp hangs!
29126
29127 2004-03-17  Martin Baulig  <martin@ximian.com>
29128
29129         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
29130         `int count_nested' and a `MonoType **nested'.
29131
29132         * reflection.c (mono_reflection_bind_generic_parameters): Moved
29133         most of the functionality into a new static
29134         do_mono_reflection_bind_generic_parameters() and don't take a
29135         `MonoType *nested_in' argument any more.  Don't compute nested
29136         types here.
29137         (mono_reflection_generic_inst_get_nested_types): New public method
29138         to get nested types.
29139
29140         * class.c (mono_class_create_generic): Set `klass->nested_in' if
29141         we're a nested class.
29142
29143         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
29144         mono_reflection_generic_inst_get_nested_types() to compute the
29145         nested types.
29146
29147 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29148
29149         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
29150         descriptive error message under windows.
29151         
29152 2004-03-17  Martin Baulig  <martin@ximian.com>
29153
29154         * class.c (dup_type): Added `const MonoType *original' argument;
29155         copy the attrs from the original type.
29156
29157 2004-03-17  Martin Baulig  <martin@ximian.com>
29158
29159         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29160         `m->generic_inst_cache' here.
29161
29162 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29163
29164         * exception.h exception.c: Add stack_overflow_exception.
29165
29166 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29167
29168         * threadpool.c:
29169         (overlapped_callback): call SetEvent *after* invoking the callback.
29170         No need to call CloseHandle.
29171
29172 2004-03-16  Martin Baulig  <martin@ximian.com>
29173
29174         * reflection.c (mono_image_get_fieldref_token): Take a
29175         `MonoReflectionField *' instead of a `MonoClassField *' and a
29176         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29177
29178 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29179
29180         * appdomain.c: don't add the culture to the filename we're looking for
29181         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29182
29183 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29184
29185         * locales.c: don't ignore symbols when doing case insensitive compares.
29186         Thanks Dick! Fixes bug #54046.
29187
29188         * threads.c: surround 'threads' usage with enter/leave in
29189         mono_thread_manage.
29190
29191 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29192
29193         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29194         implicitly marshalled as [Out]. Fixes #55450.
29195
29196         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29197         an exception.
29198
29199 2004-03-16  Martin Baulig  <martin@ximian.com>
29200
29201         * class.c (mono_class_from_generic_parameter): Use the actual
29202         parameter name. 
29203
29204 2004-03-16  Martin Baulig  <martin@ximian.com>
29205
29206         * reflection.c (type_get_signature_size): New static function.
29207         Compues the size of the type in a method signature.
29208         (method_get_signature_size): New static function; calls
29209         type_get_signature_size() to compute the actual size of the
29210         method's signature.
29211         (method_encode_signature): Use method_get_signature_size() to get
29212         the signature's size rather than using `nparams * 10'.
29213
29214 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29215
29216         * file-io.h: define here WapiOverlapped on windows. I don't want the
29217         regular OVERLAPPED one.
29218
29219         * file-io.c:
29220         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29221         Disabling AIO on windows.
29222
29223 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29224
29225         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29226         bug #55385.
29227
29228 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29229
29230         * appdomain.c: upgraded corlib version.
29231
29232         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29233         and BeginWrite. Allow opening files for asynchrnous operations.
29234
29235         * file-io.h: new struct that maps FileStreamAsyncResult.
29236         * icall.c: added new icalls.
29237         * process.[ch]: support setting child process environment variables
29238         and use the SHELL or COMSPEC when UseShellExecute is true.
29239
29240         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29241         callback for async. IO is here and also BindHandle.
29242
29243         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29244         from here.
29245
29246 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29247
29248         * reflection.c (create_custom_attr): Allow len == 0.
29249
29250         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29251         computation on big-endian machines.
29252
29253 2004-03-13  Martin Baulig  <martin@ximian.com>
29254
29255         * class.h (MonoGenericInst): Added `int count_ifaces'.
29256
29257         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29258         `ginst->count_ifaces' instead `klass->interface_count' since we
29259         may get called before the vtable is created.
29260
29261         * loader.c (mono_method_get_param_names): If we're a generic
29262         instance, return and don't initialize the class.
29263
29264         * reflection.c (mono_reflection_setup_generic_class): Don't call
29265         ensure_runtime_vtable().
29266         (mono_reflection_bind_generic_parameters): Set
29267         `ginst->count_ifaces'.
29268
29269 2004-03-11  Jackson Harper <jackson@ximian.com>
29270
29271         * icall.c:
29272         * unicode.c:
29273         * unicode.h: Remove unused System.Char icalls.
29274         
29275 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29276
29277         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29278         code when we P/Invoke the first library in Windows.Forms, instead
29279         of when we first open the assembly.
29280
29281         * assembly.c: Drop the lookup from here.
29282
29283 2004-03-10  Martin Baulig  <martin@ximian.com>
29284
29285         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29286         class for properties, fields and events.  Finally fixes #54945.
29287
29288 2004-03-10  Martin Baulig  <martin@ximian.com>
29289
29290         * metadata.c (mono_metadata_class_equal): New static function;
29291         checks whether two generic instances or two generic parameters are
29292         equal.
29293         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29294         compare classes.        
29295
29296 2004-03-10  Martin Baulig  <martin@ximian.com>
29297
29298         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29299
29300         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29301         argument and write it into the `reflection_info' field.
29302
29303         * icall.c
29304         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29305         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29306
29307 2004-03-09  Jackson Harper  <jackson@ximian.com>
29308
29309         * char-conversions.h: use 8 bits for numeric data its all we need
29310         * icall.c: numeric data is only 8 bits now.
29311
29312 2004-03-09  Martin Baulig  <martin@ximian.com>
29313
29314         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29315
29316         * class.c (init_properties, init_events): Initialize the new
29317         `parent' field.
29318
29319         * reflection.c (typebuilder_setup_properties): Likewise.
29320         (typebuilder_setup_events): Likewise.
29321
29322         * reflection.h (MonoEventInfo): Replaced `parent with
29323         `declaring_type' and `reflected_type'.
29324
29325         * icall.c (ves_icall_get_property_info): Distinguish between
29326         declaring and reflected type.
29327         (ves_icall_get_event_info): Likewise.
29328
29329 2004-03-09  Martin Baulig  <martin@ximian.com>
29330
29331         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29332         (ves_icall_Type_GetField): Correctly set field->klass.
29333
29334 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29335
29336         * loader.h: Fix warning.
29337
29338 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29339
29340         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29341         library routine if present.  Notice that it will still continue
29342         executing even if its missing, for those working on the Gtk#
29343         edition of Windows.Forms.
29344
29345         * assembly.c (do_mono_assembly_open): If loading the
29346         System.Windows.Forms call mono_loader_wini_init.
29347
29348 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29349
29350         * class.h: Added MonoRemoteClass struct.
29351         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29352         function for MonoStrings.
29353         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29354         Added internal call for getting the proxy type.
29355         * marshal.c: Get the type of transparent proxies from its remote_class.
29356         Added methods that generate the IL for type checks and casts:
29357         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29358         mono_marshal_get_proxy_cancast.
29359         * marshal.h: Declaration of the previous new methods.
29360         * object.c: Added new moethods for creating and updating MonoRemoteClass
29361         instances: mono_remote_class, mono_upgrade_remote_class, 
29362         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29363         * verify.c: FIx transparent_proxy_fields layout.
29364         * appdomain.c: Bump corlib version.
29365
29366 2004-03-04  Jackson Harper  <jackson@ximian.com>
29367
29368         * icall.c: Add icall to access char conversion tables.
29369         * char-conversions.h: Character conversion tables.
29370         * Makefile.am: Add char-conversions.h private header file.
29371         
29372 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29373
29374         * appdomain.c (unload_thread_main): Increase unloading timeout to
29375         10 sec as a temporary workaround for Nant problems.
29376
29377 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29378
29379         * gc.c: Add checks for GC_enable and GC_disable.
29380
29381         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29382         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29383         (bug #54988).
29384         
29385 2004-02-27  Martin Baulig  <martin@ximian.com>
29386
29387         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29388         `MonoReflectionType *' instead of a `MonoType *'.
29389
29390 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29391
29392         * gc.c (run_finalize): Avoid finalizing the object representing the
29393         finalizer thread.
29394         (finalizer_thread): Fix warning.
29395
29396 2004-02-25  Martin Baulig  <martin@ximian.com>
29397
29398         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29399         argument for nested types.
29400         (mono_class_create_generic): Added support for nested generictypes.
29401
29402         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29403         `GList *nested'.
29404
29405         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29406
29407         * reflection.c (method_encode_signature): Increase the minimum
29408         value of `size' from 10 to 11.
29409         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29410         and `MonoType **types' arguments instead of the `MonoArray
29411         *types'; added `MonoType *nested_in'.  Recursively instantiate
29412         nested classes. 
29413
29414 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29415
29416         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29417         stack_overflow_ex members which are used by exception handling.
29418
29419         * appdomain.c (mono_runtime_init): Initialize the new members.
29420
29421         * gc.c (mono_gc_enable): New helper function.
29422         * gc.c (mono_gc_disable): New helper function.
29423
29424 2004-02-23  Martin Baulig  <martin@ximian.com>
29425
29426         * icall.c: I must have been really stupid - make it actually work
29427         this time ;-)
29428
29429 2004-02-23  Martin Baulig  <martin@ximian.com>
29430
29431         * loader.c (method_from_memberref): Only inflate the method if
29432         it's in another klass.
29433
29434 2004-02-23  Martin Baulig  <martin@ximian.com>
29435
29436         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29437         (mono_class_init): If we're a generic instance and an interface,
29438         compute `class->interface_id'; also create `class->interfaces'
29439         here and inflate them.
29440
29441         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29442         `ginst->is_open'.
29443         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29444
29445         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29446
29447 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29448
29449         * reflection.c (method_encode_code): Improved the error message
29450         generated by the exception.
29451
29452 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29453
29454         * icall.c: Martin did not do what he said in the ChangeLog for
29455         2004-02-18, but put back the changes for properties and events.
29456         Commenting those changes out again and adding comment to bug #54518.
29457         
29458         * process.c: removed warning.
29459
29460 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29461
29462         * marshal.c (emit_struct_conv): Print an error message instead of
29463         asserting when a type does not have the StructLayout attribute.
29464
29465 2004-02-20  Martin Baulig  <martin@ximian.com>
29466
29467         * reflection.c (mono_type_get_object): Also use the cache for
29468         generic instances.
29469         (mono_reflection_bind_generic_parameters): Always compute
29470         `ginst->ifaces'.        
29471
29472 2004-02-20  Martin Baulig  <martin@ximian.com>
29473
29474         * class.h (MonoGenericMethod): Removed `klass'.
29475
29476         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29477         *klass' argument.
29478
29479 2004-02-20  Martin Baulig  <martin@ximian.com>
29480
29481         * reflection.c (method_encode_methodspec): Actually use the
29482         uninflated signature for the memberref.
29483
29484 2004-02-20  Martin Baulig  <martin@ximian.com>
29485
29486         * class.h (MonoGenericMethod): Removed `declaring'.
29487
29488         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29489         is NULL, compute it here.
29490
29491 2004-02-20  Martin Baulig  <martin@ximian.com>
29492
29493         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29494
29495         * metadata.c (mono_metadata_generic_inst_hash): New method.
29496         (mono_metadata_generic_inst_equal): New method.
29497
29498         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29499         `klass->image->generic_inst_cache' cache to avoid creating
29500         duplicate MonoGenericInst's.
29501
29502         * class.c (mono_class_inflate_generic_type): Use the cache.
29503
29504 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29505
29506         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29507
29508 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29509
29510         * icall.c: added Socket.WSAIoctl icall.
29511
29512         * socket-io.[ch]: implemented
29513         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29514
29515 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29516
29517         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29518
29519 2004-02-18  Urs C Muff  <umuff@quark.com>
29520
29521         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29522         this work on PPC and other big-endian architectures.
29523
29524         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29525         fields with an underscore to make sure they're only accessed by
29526         the read32() macro.
29527
29528 2004-02-18  Martin Baulig  <martin@ximian.com>
29529
29530         * icall.c: Put the klass->refclass changes back for methods and
29531         fields, but not for properties and events.  We're currently not
29532         distinguishing between DeclaringType and ReflectedType for
29533         properties and events, that's what caused the regressions.
29534
29535 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29536
29537         * object.c:
29538         (mono_async_result_new): the handle can be NULL.
29539
29540         * threadpool.c: Use an event instead of a semaphore, don't initialize
29541         it until needed. This saves quite a few semaphores from being created
29542         when using the threadpool.
29543
29544 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29545
29546         * object.c (mono_string_is_interned_lookup): Fix interning of long
29547         strings. Fixes #54473.
29548
29549         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29550
29551         * icall.c: Revert the klass->refclass changes since they introduce
29552         regressions (bug #54518).
29553
29554 2004-02-18  Martin Baulig  <martin@ximian.com>
29555
29556         * class.c (mono_class_init): If we're a generic instance and don't
29557         come from a TypeBuilder, inflate our members here.
29558         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29559         (mono_class_create_generic): New public method.
29560         (mono_class_initialize_generic): Removed.
29561         (get_instantiation_name): Renamed to
29562         _mono_class_get_instantiation_name() and made it public.
29563
29564 2004-02-18  Martin Baulig  <martin@ximian.com>
29565
29566         * class.c (mono_class_inflate_generic_type): Clear the new
29567         instance's `nginst->klass' when inflating a generic instance.
29568         (mono_class_is_subclass_of): Added (basic) support for generic
29569         instances.
29570
29571 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29572
29573         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29574         MonoMempool to hold compiled native code.
29575
29576 2004-02-17  Martin Baulig  <martin@ximian.com>
29577
29578         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29579         `properties'.
29580
29581         * reflection.c (mono_reflection_generic_inst_initialize): Added
29582         `MonoArray *properties' argument.
29583
29584         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29585
29586 2004-02-17  Martin Baulig  <martin@ximian.com>
29587
29588         * icall.c (ves_icall_Type_GetFields): Renamed to
29589         ves_icall_Type_GetFields_internal() and added a
29590         `MonoReflectionType *rtype' argument; pass it to
29591         mono_field_get_object() to set the field's "reflected" type.
29592         (ves_icall_Type_GetConstructors): Likewise.
29593         (ves_icall_Type_GetEvents): Likewise.
29594         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29595         argument; pass it to mono_method_get_object() to set the method's
29596         "reflected" type.       
29597
29598 2004-02-17  Martin Baulig  <martin@ximian.com>
29599
29600         * class.h (MonoDynamicGenericInst): New type.
29601         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29602
29603         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29604         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29605         (ves_icall_MonoGenericInst_GetFields): New interncall.
29606
29607         * class.c (mono_class_from_generic): Don't call
29608         mono_class_initialize_generic() if this is a dynamic instance;
29609         ie. it's being created from a TypeBuilder.
29610         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29611         `class->byval_arg.type'.
29612
29613         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29614         to `inflate_method' and made static.
29615         (mono_reflection_inflate_field): Removed.
29616         (mono_reflection_generic_inst_initialize): New public method.
29617
29618         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29619         `ctors' and `fields'; added `initialized'.
29620
29621 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29622
29623         * debug-helpers.c (mono_method_full_name): Fix output for empty
29624         namespaces.
29625
29626 2004-02-12  Martin Baulig  <martin@ximian.com>
29627
29628         * class.h (MonoClassField): Added `MonoType *generic_type'.
29629
29630         * reflection.c (mono_image_get_fieldref_token): Added support for
29631         instantiated generic types.
29632         (field_encode_inflated_field): Removed.
29633         (mono_image_get_inflated_field_token): Removed.
29634         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29635
29636         * reflection.h (MonoReflectionInflatedField): Removed.
29637
29638 2004-02-12  Martin Baulig  <martin@ximian.com>
29639
29640         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29641         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29642
29643         * reflection.c (mono_image_get_methodspec_token): Take a
29644         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29645         (mono_image_create_token): Check whether we have a
29646         `method->signature->gen_method' and call
29647         mono_image_get_methodspec_token() if appropriate.
29648         (inflated_method_get_object): Removed.
29649         (mono_reflection_bind_generic_method_parameters): Return a
29650         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29651         (mono_reflection_inflate_method_or_ctor): Likewise.
29652
29653         * reflection.h (MonoReflectionInflatedMethod): Removed.
29654
29655 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29656
29657         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29658         for custom valuetype marshalling.
29659
29660         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29661
29662 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29663
29664         * icall.c: fixed WSAGetLastError_internal name.
29665
29666 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29667
29668         * threads.c (mono_thread_attach): Allow this to be called multiple
29669         times for a thread.
29670         
29671         * threads.c (build_wait_tids): Do not wait for ourselves.
29672
29673         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29674         appdomain list is empty.
29675
29676         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29677         memory returned by mono_string_builder_to_utf16, since it points into
29678         managed memory. Thanks to Bernie Solomon for noticing this.
29679
29680         * icall.c: Add AppDomainSetup icalls.
29681
29682         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29683
29684         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29685         types.
29686
29687         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29688         custom attributes to the method_aux struct. Also fix array indexes etc.
29689
29690         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29691         
29692 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29693
29694         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29695         (both static and runtime) and reduce startup time.
29696
29697 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29698
29699         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29700         AsAny marshalling conversion instead of crashing.
29701
29702         * marshal.c: Fix warnings.
29703
29704 2004-02-09  Martin Baulig  <martin@ximian.com>
29705
29706         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29707
29708         * reflection.h (MonoReflectionInflatedMethod): Removed the
29709         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29710
29711         * reflection.c (method_encode_methodspec): Removed the `method'
29712         argument; we get it from `gmethod->declaring'.
29713         (inflated_method_get_object): Removed the `declaring' argument.
29714
29715 2004-02-09  Martin Baulig  <martin@ximian.com>
29716
29717         * class.h (MonoGenericMethod): New type.
29718         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29719         `generic_method'.
29720
29721         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29722         a `MonoGenericMethod *gen_method' one.
29723
29724         * class.c (mono_class_inflate_generic_type): Take an additional
29725         `MonoGenericMethod * argument.  This is only non-NULL if we're
29726         inflating types for a generic method.   
29727         (mono_class_inflate_generic_signature): Renamed to
29728         inflate_generic_signature() and made static; take a
29729         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29730         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29731         instead of a `MonoGenericInst *' one.
29732         (mono_class_inflate_generic_method): Likewise.
29733
29734         * reflection.c (encode_generic_method_sig): Take a
29735         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29736         (method_encode_methodspec): Likewise.
29737         (inflated_method_get_object): Likewise. 
29738
29739         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29740         field with a `MonoGenericMethod *gmethod' one.  
29741
29742 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29743
29744         * class.h (mono_class_has_parent): add parens to expansion
29745         so you can ! this.
29746
29747 2004-02-08  Martin Baulig  <martin@ximian.com>
29748
29749         * image.h (MonoImage): Removed `generics_cache'.
29750
29751         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29752         instead of a `MonoType *' argument; removed the `inflate_methods'
29753         argument.  Don't inflate methods here.
29754
29755         * loader.c (find_method): If it's a generic instance, call
29756         mono_class_init() on the `sclass->generic_inst->generic_type'.
29757
29758         * metadata.c (mono_type_size): Make this work on uninitialized
29759         generic instances; call it on the `ginst->generic_type's class.
29760
29761         * reflection.c (mono_reflection_bind_generic_parameters): Call
29762         mono_class_from_generic() to create the `ginst->klass'.
29763
29764 2004-02-08  Martin Baulig  <martin@ximian.com>
29765
29766         * class.h (MonoClass): Changed type of `generic_inst' from
29767         `MonoType *' to `MonoGenericInst *'.
29768
29769 2004-02-08  Martin Baulig  <martin@ximian.com>
29770
29771         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29772         mono_type_get_object(), this is now creating a `MonoGenericInst'
29773         for MONO_TYPE_GENERICINST.
29774         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29775         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29776
29777         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29778         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29779         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29780         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29781         and reflected type.
29782
29783         * reflection.h (MonoReflectionInflatedMethod): Removed
29784         `declaring_type' and `reflected_type'.
29785
29786 2004-02-08  Martin Baulig  <martin@ximian.com>
29787
29788         * class.h (MonoGenericInst): Added `MonoType *parent' and
29789         `MonoType **ifaces'.
29790
29791         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29792         `parent' and `interfaces'.
29793
29794         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29795         `MonoType *' argument and return a `MonoType *'.
29796
29797         * icall.c
29798         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29799         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29800
29801 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29802
29803         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29804         valuetype marshalling.
29805
29806 2004-02-06  Martin Baulig  <martin@ximian.com>
29807
29808         * class.c
29809         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29810         (my_mono_class_from_generic_parameter): Likewise.
29811
29812 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29813
29814         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29815         contents of the symbol files lazily.
29816
29817         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29818
29819         * threads.h threads.c icall.c: New icalls for getting and setting the
29820         threads name.
29821
29822 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29823
29824         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29825         Raise an exception when the domain is not found.
29826
29827 2004-02-03  Martin Baulig  <martin@ximian.com>
29828
29829         * reflection.c (mono_image_get_methodspec_token): Use the
29830         uninflated signature; fixes gen-33.
29831
29832 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29833
29834         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29835         the finalizer code can use thread functionality.
29836
29837         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29838         the finalizer thread.
29839
29840         * threads.c: Make some functions more robust.
29841
29842         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29843
29844         * metadata.h: Add new marshalling conventions.
29845
29846         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29847         stringbuilder marshalling. Fixes #53700.
29848
29849         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29850
29851         * reflection.c (mono_image_get_type_info): Save declarative security
29852         info.
29853
29854         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29855         unmanaged fields as well.
29856
29857         * appdomain.c: Bump corlib version.
29858
29859 2004-02-01  Martin Baulig  <martin@ximian.com>
29860
29861         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29862         method type arguments.  
29863
29864 2004-01-30  Duncan Mak  <duncan@ximian.com>
29865
29866         * marshal.h: Add prototype for
29867         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29868         and
29869         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29870         fix the build.
29871
29872 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29873
29874         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29875         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29876
29877 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29878
29879         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29880         custom marshalling of valuetypes.
29881
29882         * marshal.c: Fix some warnings.
29883
29884 2004-01-29  Martin Baulig  <martin@ximian.com>
29885
29886         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29887         for generic method parameters.
29888
29889         * reflection.c (method_encode_methodspec): Write the uninflated
29890         signature into the methodspec table.
29891         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29892         is always the uninflated method.
29893         (reflection_methodbuilder_to_mono_method): Copy the generic
29894         parameters from the MethodBuilder into `header->gen_params'.
29895
29896 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29897
29898         * class.c (mono_class_from_generic_parameter): Fix warning.
29899
29900 2004-01-27  Martin Baulig  <martin@ximian.com>
29901
29902         * class.c (mono_class_from_generic_parameter): Don't create
29903         `klass->methods' here.  
29904
29905 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29906
29907         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29908         extension since it does not work with libraries named lib<FOO>.dll.so.
29909
29910 2004-01-25  Martin Baulig  <martin@ximian.com>
29911
29912         * class.c (mono_class_inflate_generic_type): Added support for
29913         MONO_TYPE_GENERICINST.
29914
29915         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29916         inflate methods on open constructed types.      
29917
29918 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29919
29920         * object.c: fire ProcessExit event in the root AppDomain after running
29921         Main. Fixes bug #53299.
29922
29923 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29924
29925         * socket-io.c: include the new socket-wrappers.h header.
29926         Use the wrappers instead of the unix socket functions to make the code
29927         more clear.
29928
29929 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29930
29931         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29932
29933         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29934         Fixes #22532.
29935
29936 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29937
29938         * reflection.c (mono_image_create_pefile): Handle the case when the
29939         entry point is not a MethodBuilder.
29940
29941         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29942         field to ReflectionMethod since it is not allways a builder.
29943
29944         * reflection.c (type_get_fully_qualified_name): New helper function to
29945         return the fully qualified name of a type.
29946
29947         * reflection.c (encode_marshal_blob): Always emit the fully qualified
29948         type name for custom marshallers.
29949
29950         * reflection.c (mono_marshal_spec_from_builder): Ditto.
29951
29952         * class.c (mono_class_setup_vtable): If a parent class already 
29953         implements an interface, use the implementing methods from that class.
29954         Fixes #53148.
29955
29956 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29957
29958         * threadpool.c: just return instead of ExitThread to allow for thread
29959         clean up earlier.
29960
29961 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
29962
29963         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
29964         when closing resource modules.
29965
29966         * reflection.c (mono_image_create_pefile): Handle the case when the
29967         entry point is not a MethodBuilder.
29968
29969         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
29970         field to ReflectionMethod since it is not allways a builder.
29971
29972 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
29973
29974         * marshal.c (mono_marshal_get_managed_wrapper): 
29975         mono_marshal_alloc takes native int so CONV_I
29976         the arg for 64bits.
29977
29978 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
29979
29980         * reflection.c (fixup_cattrs): New function to fixup the methoddef
29981         tokens in the cattr table. Fixes #53108.
29982
29983 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29984
29985         * loader.c: don't trim ".dll" before looking up in the config file.
29986         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
29987
29988 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
29989
29990         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
29991         Return the module which contains the resource as well.
29992         (ves_icall_System_Reflection_Module_Close): New icall.
29993
29994         * appdomain.c: Bump corlib version number.
29995
29996         * image.c (mono_image_addref): New public function.
29997
29998         * assembly.c: Call mono_image_addref.
29999
30000         * reflection.c (mono_module_get_object): Increase reference count of 
30001         the image.
30002
30003         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
30004         Fixes #22532.
30005
30006         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
30007         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
30008         proper exceptions on DllImport problems.
30009
30010 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
30011
30012         * class.c, metadata.c: eliminate CSIZE macro.
30013
30014 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
30015
30016         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
30017         * object.h: Added async_callback field in MonoAsyncResult.
30018         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
30019         * verify.c: Added async_callback in MonoAsyncResult layout.
30020
30021 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
30022
30023         * reflection.c (mono_reflection_get_custom_attrs): Add support
30024         for Modules.
30025
30026 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30027
30028         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
30029         marshalling.
30030         (mono_marshal_method_from_wrapper): Add null pointer check.
30031
30032 2004-01-16  Martin Baulig  <martin@ximian.com>
30033
30034         * debug-mono-symfile.h: Set version number to 36 and reflect
30035         latest symbol writer changes.
30036
30037 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30038
30039         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
30040         multi-dimensional arrays.
30041         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
30042         (mono_class_from_mono_type): Use bounded_array_class_get.
30043         
30044         * class.c (mono_bounded_array_class_get): New function which takes
30045         a 'bounded' bool argument to distinguish vectors from one dimensional
30046         arrays.
30047
30048         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
30049         bounded_array_class_get if the array has bounds.
30050
30051         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30052         Search modules loaded using AssemblyBuilder:AddModule as well.
30053
30054 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30055
30056         * appdomain.c: increased corlib version.
30057         * filewatcher.c: removed g_print.
30058         * icall.c:
30059         (get_property_info): only allocate what is actually requested.
30060         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
30061
30062 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30063
30064         * Makefile.am: added filewatcher.[ch]
30065         * filewatcher.[ch]: FileSystemWatcher runtime support.
30066         * icall.c: added new FSW icalls.
30067
30068 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
30069
30070         * string-icalls.c: fix stringbuilder regression as suggested by
30071         Iain McCoy <iain@mccoy.id.au>.
30072
30073 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
30074
30075         * process.c (process_read_stringtable_block): Recognize '007f' as
30076         a language neutral stringtable block.
30077
30078 2004-01-12  Patrik Torstensson
30079
30080         * object.h (MonoStringBuilder) : Changed layout to support our
30081         new stringbuilder class.
30082         * marshal.c: Change marshalling to support the new layout of 
30083         string builder.
30084         * appdomain.c: increased version number because new layout of
30085         string builder.
30086
30087 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
30088
30089         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
30090         assembly name as an string instead of an AssemblyName, since it is
30091         easier to extract info from it.
30092
30093         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
30094         the culture subdirectories too. Fixes #52231.
30095
30096 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30097
30098         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
30099         It takes 2 new parameters with an optional name for the method to look
30100         for and case ignoring info.
30101
30102         * threadpool.c: removed unused variable.
30103
30104 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30105
30106         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
30107         It takes 2 new parameters with an optional name for the property to look
30108         for and case ignoring info.
30109         Fixes bug #52753.
30110
30111 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
30112
30113         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
30114         Fix #52451.
30115
30116 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30117
30118         * appdomain.c:
30119         * assembly.c: escape the uri before passing it to g_filename_from_uri.
30120         Fixes bug #52630.
30121
30122 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
30123
30124         * reflection.c: Add support for more than one unmanaged resource.
30125
30126         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
30127         in field->def_value, as done in all other cases.
30128
30129         * reflection.c (mono_reflection_get_custom_attrs): Add support for
30130         TypeBuilders.
30131
30132         * reflection.c (mono_reflection_create_runtime_class): Remove 
30133         errorneous assignment to klass->element_class, since it is already
30134         done in mono_reflection_setup_internal_class.
30135
30136 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30137
30138         * gc.c: added missing LeaveCriticalSection.
30139         * icall.c: indented a couple of lines.
30140         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
30141         if we call EndInvoke inside a callback. Fixes bug #52601.
30142
30143 2004-01-07  Martin Baulig  <martin@ximian.com>
30144
30145         * mono-debug-debugger.h
30146         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
30147
30148 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
30149
30150         * appdomain.c: Use messages in NotImplementedException.
30151
30152         * exception.c (mono_get_exception_not_implemented): Now this takes
30153         a message argument.
30154
30155         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30156         exception instead of g_asserting an aborting when something is not
30157         implemented.
30158
30159         Add some inline docs.
30160
30161 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30162
30163         * reflection.h: Update after changes to object layout.
30164
30165         * reflection.c: Implement saving of unmanaged aka win32 resources.
30166
30167         * appdomain.c: Bump version number.
30168
30169         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30170         Handle missing domains gracefully.
30171
30172 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30173
30174         * file-io.c : On Windows, there are much more invalid_path_chars.
30175
30176 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30177
30178         * class.h, object.c: prepare for GetType () speedup.
30179
30180 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30181
30182         * profiler.c: workaround for --profile null reference exception on
30183           cygwin. Patch by Patrik Torstensson.
30184
30185 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30186
30187         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30188         make work for unaligned access.
30189
30190 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30191
30192         * class.c: small cleanup (class->fields [i] -> field).
30193         * image.c: check address of metadata is valid.
30194
30195 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30196
30197         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30198         search the list of loaded assemblies.
30199
30200         * reflection.c (mono_reflection_type_from_name): Use 
30201         mono_assembly_loaded instead of mono_image_loaded.
30202
30203         * reflection.c: Fix warnings.
30204
30205 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30206
30207         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30208         is dynamic. This is needed since an assembly can contain both dynamic and
30209         non-dynamic images.
30210
30211         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30212         assembly->dynamic.
30213
30214         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30215
30216         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30217         to store modules loaded using AddModule.
30218
30219         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30220         on Modules.
30221
30222         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30223
30224         * reflection.c (mono_image_fill_export_table_from_module): New function to
30225         fill out the EXPORTEDTYPES table from a module.
30226
30227         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30228         into a separate function. Also handle loaded non-dynamic modules.
30229
30230         * reflection.c (mono_image_basic_init): Fix memory allocation.
30231
30232         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30233
30234         * assembly.c (mono_assembly_load_references): Make this public.
30235
30236 2003-12-19  Martin Baulig  <martin@ximian.com>
30237
30238         * class.c (mono_class_initialize_generic): Made this static, take
30239         a `MonoGenericInst *' instead of a `MonoClass *'.
30240         (mono_class_from_generic): Call mono_class_initialize_generic()
30241         unless we're already initialized or being called from
30242         do_mono_metadata_parse_generic_inst().
30243
30244         * class.h (MonoGenericInst): Added `initialized' and
30245         `init_pending' flags.
30246
30247         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30248         `mono_class_init (gklass)' or mono_class_initialize_generic()
30249         here; set `generic_inst->init_pending' while parsing the
30250         `type_argv'.
30251
30252 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30253
30254         * locales.c: include string.h for memxxx prototypes
30255
30256 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30257
30258         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30259         constructor when accessing literal fields.
30260
30261 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30262
30263         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30264
30265         * reflection.c (assembly_add_resource_manifest): New function to fill
30266         the MANIFESTRESOURCE table.
30267
30268         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30269
30270         * reflection.h: Update to changes in class layout.
30271
30272         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30273         Reenable call to mono_runtime_is_shutting_down ().
30274
30275         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30276         determine if the runtime is shutting down.
30277
30278 2003-12-16  Jackson Harper <jackson@ximian.com>
30279
30280         * icall.c: comment out call to mono_runtime_is_shutting_down to
30281         fix build.
30282         
30283 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30284
30285         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30286         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30287
30288 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30289
30290         * reflection.c: move definition of swap_with_size
30291         to before its first call
30292
30293 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30294
30295         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30296
30297         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30298         icall.
30299
30300         * object.c: Fix warnings.
30301
30302         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30303         members if FlattenHierarchy is set.
30304
30305         * reflection.c (mono_image_add_decl_security): New function to emit
30306         declarative security.
30307
30308         * reflection.h reflection.c: Add support for declarative security.
30309
30310         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30311         
30312 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30313
30314         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30315         
30316         * appdomain.c verify.c: Moved corlib version checking into its own
30317         function in appdomain.c since it needs to create vtables etc.
30318
30319 2003-12-13  Patrik Torstensson <p@rxc.se>
30320
30321         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30322         instead of unwrapped server.
30323
30324 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30325
30326         * verify.c (check_corlib): Fix field index.
30327
30328 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30329
30330         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30331         GetGacPath icall.
30332
30333 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30334
30335         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30336         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30337         cope with sizeof(size_t) != sizeof(guint32).
30338
30339 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30340
30341         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30342         in case of failure.
30343
30344 2003-12-10  Mark Crichton <crichton@gimp.org>
30345
30346         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30347         in managed code.
30348
30349         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30350
30351 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30352
30353         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30354         marked as deleted.
30355
30356 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30357
30358         * verify.c (check_corlib): Handle the case when the version field is 
30359         initialized by a static constructor.
30360
30361 2003-12-08  Patrik Torstensson  <p@rxc.se>
30362
30363     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30364
30365 2003-12-08  Martin Baulig  <martin@ximian.com>
30366
30367         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30368         a MonoReflectionGenericParameter, also take the parameter index
30369         and name as arguments.
30370         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30371         (ves_icall_MonoGenericParam_initialize): New interncall.
30372         (ves_icall_Type_make_byref_type): New interncall.
30373
30374         * reflection.h (MonoReflectionGenericParam): Derive from
30375         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30376         `index' fields.
30377
30378         * reflection.c (mono_reflection_define_generic_parameter): Create
30379         and return a new MonoReflectionGenericParam; don't initialize the
30380         constraints here.
30381         (mono_reflection_initialize_generic_parameter): New public method;
30382         initializes the constraints and creates the `param->pklass'.
30383
30384 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30385
30386         * reflection.h reflection.c: Use the new fields 'num_types', 
30387         'num_fields' and 'num_methods' to track the number of types etc.
30388
30389         * verify.c (check_corlib): Check corlib version number.
30390
30391 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30392
30393         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30394         function works on all methods.
30395
30396 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30397
30398         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30399         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30400         the custom_type_info flag of the transparent proxy.
30401         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30402         objects that supports IRemotingTypeInfo.
30403         * object.h: Added custom_type_info field in transparent proxy.
30404
30405 2003-12-06  Martin Baulig  <martin@ximian.com>
30406
30407         * class.c (mono_class_create_from_generic): Removed.
30408         (mono_class_from_generic): Check `ginst->klass' before doing
30409         anything else.  This is important to fully support "recursive"
30410         generic types.
30411
30412         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30413         empty `generic_inst->klass' before doing anything else.
30414
30415 2003-12-06  Dick Porter  <dick@ximian.com>
30416
30417         * verify.c: 
30418         * object.h:
30419         * icall.c:
30420         * locales.c: Use C structs to access class fields.  Don't do a
30421         conversion between MonoString and UChar because both are
30422         platform-endian UTF-16.  Compare now takes startindex and count
30423         parameters.  Add a char overload for IndexOf.  Speed up the
30424         invariant string IndexOf.
30425
30426 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30427
30428         * Makefile.am (monosn_LDADD): Fix parallel build.
30429
30430 2003-12-04  Martin Baulig  <martin@ximian.com>
30431
30432         * icall.c
30433         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30434         (ves_icall_Type_make_array_type): New interncall.       
30435
30436 2003-12-04  Martin Baulig  <martin@ximian.com>
30437
30438         * locales.c: also change it in the !HAVE_ICU case.
30439
30440 2003-12-04  Dick Porter  <dick@ximian.com>
30441
30442         * icall.c:
30443         * locales.c: construct_compareinfo is now in CompareInfo, not
30444         CultureInfo.
30445
30446 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30447
30448         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30449         image->files array.
30450
30451         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30452         table as well.
30453
30454         * assembly.c (mono_assembly_load_references): Only load references
30455         once.
30456
30457         * class.c (mono_class_from_name): Avoid linear search of the 
30458         EXPORTEDTYPE table.
30459
30460         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30461
30462 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30463
30464         * image.h (MonoImage): Add 'field_cache' field.
30465
30466         * loader.c (mono_field_from_token): Cache field lookups.
30467         
30468         * reflection.c (mono_module_get_object): Fix name property.
30469
30470         * icall.c (ves_icall_get_enum_info): Update after changes to 
30471         mono_metadata_get_constant_index ().
30472
30473         * icall.c: Get rid of get_type_info icall, use a separate icall for
30474         each type property to avoid needless memory allocations. Fixes #51514.
30475
30476         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30477         to avoid needless binary searches.
30478
30479         * class.c (class_compute_field_layout): Move the initialization of
30480         field->def_value to mono_class_vtable ().
30481
30482         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30483         non-corlib types.
30484
30485         * object.c (mono_object_allocate): Make it inline.
30486
30487         * object.c (mono_object_allocate_spec): Make it inline.
30488         
30489 2003-12-02  Dick Porter  <dick@ximian.com>
30490
30491         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30492         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30493
30494 2003-12-01  Dick Porter  <dick@ximian.com>
30495
30496         * threads.c: Fix signature and call in CreateMutex and
30497         CreateEvent.
30498
30499 2003-12-01  Dick Porter  <dick@ximian.com>
30500
30501         * icall.c: 
30502         * locales.c: Implement string compares and searching
30503
30504         * object.h: Add extra Thread field
30505
30506 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30507
30508         * reflection.c (fixup_method): Add support for MonoCMethod.
30509
30510 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30511
30512         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30513
30514         * reflection.c (assembly_name_to_aname): Allow extra characters in
30515         assembly names. Fixes #51468.
30516
30517 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30518
30519         * exception.c (mono_exception_from_name_domain): New helper function.
30520
30521         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30522         exception object in the correct domain.
30523
30524         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30525         formatting + make a copy a the input data.
30526
30527         * loader.c (mono_get_method_from_token): Methods which contain
30528         native code do not have entries in the ImplMap.
30529
30530         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30531         Thanks to Gonzalo for spotting this.
30532         
30533         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30534         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30535
30536         * assembly.h (mono_assembly_load_from): Split the second part of 
30537         assembly loading into a new public function.
30538
30539         * exception.h (mono_get_exception_bad_image_format): New function.
30540
30541 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30542
30543         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30544         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30545         
30546         * icall.c: Add new icall for creating dynamic methods.
30547
30548         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30549
30550         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30551
30552         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30553         create a dynamic method.
30554
30555         * reflection.c (resolve_object): New helper function.
30556
30557         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30558         which manipulate it so they can also work on dynamic methods.
30559
30560         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30561         creating the MonoReflectionMethodAux structure if it is not needed.
30562         
30563         * reflection.h verify.c: Update after changes to object layout.
30564
30565         * reflection.c (method_builder_encode_signature): Fix compilation on
30566         gcc 2.95.x.
30567
30568 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30569
30570         * appdomain.h: Added support for context static fields. Added static_data
30571           field to MonoAppContext and renamed thread_static_fields to a more
30572           generic special_static_fields in MonoAppDomain, since it can now contain
30573           context static fields.
30574         * domain.c: Updated hashtable name.
30575         * object.c: Replaced field_is_thread_static() for a more generic
30576           field_is_special_static() which also checks for context static attribute.
30577           In mono_class_vtable(), added support for static context fields.
30578         * threads.c: Changed methods that manage thread static fields to more
30579           generic methods so they can be reused both for thread and context static
30580           data.
30581         * threads.h: Declared some new methods.
30582
30583 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30584
30585         * reflection.h: Update after changes to the managed types.
30586
30587         * reflection.c (encode_custom_modifiers): New helper function.
30588
30589         * reflection.c (method_encode_signature): Emit custom modifiers.
30590
30591         * reflection.c (field_encode_signature): Emit custom modifiers.
30592
30593 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30594
30595         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30596
30597         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30598         implementation.
30599
30600         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30601         icall.
30602
30603         * object.c (mono_field_get_value_object): New function.
30604
30605         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30606         specific.
30607
30608 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30609
30610         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30611         return a preallocated out-of-memory exception instance.
30612
30613         * object.c (out_of_memory): Use the new function.
30614
30615         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30616         flag is before the custom modifiers. Fixes #49802.
30617
30618 2003-11-16  Martin Baulig  <martin@ximian.com>
30619
30620         * class.c (mono_class_is_open_constructed_type): Implemented the
30621         MONO_TYPE_GENERICINST case.
30622
30623 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30624
30625         * assembly.c (mono_assembly_fill_assembly_name): New function to
30626         fill out the MonoAssemblyName structure.
30627         (mono_assembly_open): Use the new function.
30628
30629         * icall.c (fill_reflection_assembly_name): New helper function.
30630
30631         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30632         new function.
30633
30634         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30635
30636 2003-11-15  Martin Baulig  <martin@ximian.com>
30637
30638         * class.c (mono_class_is_open_constructed_type): New public
30639         function; checks whether a type is an open constructed type,
30640         ie. whether it still contains type parameters.
30641         (mono_class_inflate_generic_type): If we're a type parameter and
30642         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30643         type.
30644
30645         * class.h (MonoGenericInst): Added `guint32 is_open'.
30646
30647         * loader.c (method_from_methodspec): Check whether we're an open
30648         or closed constructed type and set `ginst->is_open'.
30649
30650         * reflection.c (mono_reflection_bind_generic_parameters): Check
30651         whether we're an open or closed constructed type and set
30652         `ginst->is_open'.
30653         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30654         from open constructed types.
30655
30656 2003-11-15  Martin Baulig  <martin@ximian.com>
30657
30658         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30659         a generic instance (instead of a generic type declaration) with
30660         unbound generic parameters, bind them to our actual types.
30661
30662 2003-11-14  Martin Baulig  <martin@ximian.com>
30663
30664         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30665
30666         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30667         an interface type, populate `res->interfaces' with instantiated
30668         versions of all the interfaces we inherit.
30669
30670 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30671
30672         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30673         when MONO_PATH is set but doesn't contain the install dir.
30674
30675 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30676
30677         * icall.c:
30678         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30679         it's also implemented in base classes. Fixes bug #50927.
30680
30681 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30682
30683         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30684         if this method is called from a finalizer. Fixes #50913.
30685
30686 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30687
30688         * threads.c: Implement VolatileRead/VolatileWrite
30689
30690         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30691
30692 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30693
30694         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30695         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30696         2.95.3.
30697
30698         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30699         from Peter Ross (pro@missioncriticalit.com).
30700         
30701 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30702
30703         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30704
30705 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30706
30707         * assembly.c (mono_assembly_load_references): Disable check because it
30708         triggers on older corlibs which lots of people have.
30709
30710 2003-11-12  Jackson Harper  <jackson@ximian.com>
30711
30712         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30713         load corlib.dll if mscorlib.dll is not found.
30714         * assembly.h: Remove corlib name define.
30715         * class.c:
30716         * domain.c:
30717         * image.c: Change corlib name to mscorlib.
30718         
30719 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30720
30721         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30722
30723 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30724
30725         * appdomain.h: Added loader_optimization here to sync with the C#
30726         code, and add disallow_binding_redirects field.
30727
30728 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30729
30730         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30731
30732         * reflection.c (mono_image_build_metadata): Fix crash on modules
30733         with no types.
30734
30735         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30736
30737         * icall.c (ves_icall_get_method_info): Return callingConvention as
30738         well.
30739
30740         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30741         namespaces from the EXPORTEDTYPE table as well.
30742
30743         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30744         from all modules inside the assembly.
30745         
30746 2003-11-11  Martin Baulig  <martin@ximian.com>
30747
30748         * reflection.c (mono_reflection_bind_generic_parameters): Make
30749         this work for interfaces.
30750
30751 2003-11-11  Martin Baulig  <martin@ximian.com>
30752
30753         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30754
30755 2003-11-11  Martin Baulig  <martin@ximian.com>
30756
30757         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30758         "MonoInflatedMethod" and "MonoInflatedCtor".
30759
30760 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30761
30762         * reflection.c (resolution_scope_from_image): Use the assembly table
30763         from the manifest module, since other modules don't have it.
30764
30765         * debug-helpers.c (mono_type_full_name): New helper function.
30766
30767         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30768
30769         * image.c (mono_image_load_file_for_image): New public function which
30770         is a replacement for the load_file_for_image in class.c.
30771
30772         * assembly.c (mono_assembly_load_module): A wrapper for the function
30773         above which does assembly association and reference loading too.
30774
30775         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30776
30777 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30778
30779         * appdomain.c: not all of the attributes for the full assembly name
30780         are required and the order doesn't matter. Fixes bug #50787.
30781
30782 2003-11-10  Dick Porter  <dick@ximian.com>
30783
30784         * locales.c: Use platform-endian UTF16
30785
30786 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30787
30788         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30789         
30790 2003-11-10  Martin Baulig  <martin@ximian.com>
30791
30792         * metadata.c
30793         (mono_metadata_load_generic_params): Make this actually work.
30794
30795         * reflection.c (mono_reflection_bind_generic_parameters): If our
30796         parent is a generic instance, pass all the `types' to it, no
30797         matter whether it has the same number of type parameters or not.
30798
30799 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30800
30801         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30802
30803         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30804         assignment code to this function so it gets called recursively for all
30805         modules.
30806
30807         * image.c (load_modules): Remove the assembly assignment since it is
30808         now done by mono_assembly_load_references.
30809         
30810         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30811         Add 'module' argument.
30812         (mono_module_get_types): New helper function.
30813         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30814
30815 2003-11-08  Martin Baulig  <martin@ximian.com>
30816
30817         * class.c (mono_class_inflate_generic_method): Interface method
30818         don't have a header.
30819
30820         * reflection.c (mono_image_get_methodspec_token): Take an
30821         additional `MonoGenericInst *' argument instead of reading it from
30822         the header; this is necessary to support interfaces.
30823         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30824         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30825         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30826         argument.
30827
30828         * reflection.h (MonoReflectionInflatedMethod): Added
30829         `MonoGenericInst *ginst'.
30830
30831 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30832
30833         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30834
30835 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30836
30837         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30838
30839 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30840
30841         * reflection.c 
30842         (reflection_methodbuilder_from_method_builder):
30843         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30844         initialize a ReflectionMethodBuilder structure.
30845         (mono_image_get_methodbuilder_token):
30846         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30847         tokens which point to types in another module inside the same assembly.
30848
30849         * reflection.c: Use the new helper functions.
30850         
30851         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30852
30853         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30854         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30855
30856         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30857         neccesary.
30858
30859         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30860         current module. Emit the manifest only for the main module.
30861
30862         * reflection.c (mono_image_create_token): Add assertion when a 
30863         memberref needs to be created.
30864
30865         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30866
30867         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30868         larger buffer for the custom attribute blob. Fixes #50637.
30869         
30870 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30871
30872         * threadpool.c: notify listener on async processing handles after
30873         invoking the async callback. Thanks to Zoltan.
30874
30875 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30876
30877         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30878         avoid code duplication.
30879
30880         * reflection.h (MonoDynamicImage): New type which is currently unused,
30881         but will be used through the ref.emit code in place of 
30882         MonoDynamicAssembly.
30883
30884         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30885         object layout.
30886
30887         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30888         a MonoDynamicImage instead of just a MonoImage.
30889         
30890         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30891         icalls to ModuleBuilder but keep their semantics, so they will work
30892         with moduleb->assemblyb. This will change later.
30893         
30894 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30895
30896         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30897         object layout.
30898
30899         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30900         main module, since it is now done by the managed code.
30901
30902 2003-11-03  Martin Baulig  <martin@ximian.com>
30903
30904         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30905         `ginst->klass' here.
30906         (method_encode_methodspec): Don't use the `ginst->generic_method's
30907         klass if it's a generic instance, use `ginst->klass' in this case.
30908
30909 2003-11-03  Martin Baulig  <martin@ximian.com>
30910
30911         * reflection.c (mono_image_get_generic_method_param_info):
30912         Removed, use mono_image_get_generic_param_info() instead.
30913         (mono_image_get_type_info): Write the GenericParam table before
30914         the Method table.  This is neccessary because in the GenericParam
30915         table, type parameters of the class (ie. '!0' etc.) must come
30916         before the ones from its generic methods (ie. '!!0' etc).
30917
30918 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30919
30920         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30921
30922 2003-11-02  Martin Baulig  <martin@ximian.com>
30923
30924         * reflection.c (create_generic_typespec): Take a
30925         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30926         the generic parameters from it.
30927
30928 2003-11-02  Martin Baulig  <martin@ximian.com>
30929
30930         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30931         instead of a `MonoClassField *' since we just need the type.
30932         (create_generic_typespec): New static function.  Creates a
30933         TypeSpec token for a generic type declaration.
30934         (mono_image_get_generic_field_token): New static function.
30935         (mono_image_create_token): If we're a FieldBuilder in a generic
30936         type declaration, call mono_image_get_generic_field_token() to get
30937         the token.
30938
30939 2003-11-02  Martin Baulig  <martin@ximian.com>
30940
30941         * reflection.h
30942         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
30943         `MonoReflectionGenericInst *declaring_type' and
30944         `MonoReflectionGenericInst *reflected_type' fields.
30945
30946         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
30947         `MonoReflectionGenericInst *declaring_type' and a
30948         `MonoReflectionGenericInst *reflected_type' argument instead of a
30949         single `MonoReflectionGenericInst *type' one.  Set
30950         `res->declaring_type' and `res->reflected_type' from them.
30951         (mono_reflection_inflate_field): Likewise.      
30952
30953 2003-11-02  Martin Baulig  <martin@ximian.com>
30954
30955         * class.c (mono_class_setup_vtable): Don't store generic methods
30956         in the vtable.  
30957
30958 2003-11-02  Martin Baulig  <martin@ximian.com>
30959
30960         * reflection.h (MonoReflectionGenericInst): Added
30961         `MonoReflectionType *declaring_type'.
30962
30963         * reflection.c (mono_reflection_bind_generic_parameters): Use
30964         `if (tb->parent)' instead of `klass->parent'.
30965
30966 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
30967
30968         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
30969         with an empty ASSEMBLY table.
30970
30971         * reflection.c (mono_image_build_metadata): Avoid using the same loop
30972         variable in the inner and outer loops.
30973
30974 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
30975
30976         * metadata.h (mono_metadata_make_token): Put parentheses around macro
30977         argument.
30978
30979         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
30980         
30981         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
30982         icalls. Instead, do everything in managed code. This is needed since
30983         it is hard to restore the original domain etc. in unmanaged code in the
30984         presence of undeniable exceptions.
30985
30986         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
30987         New icalls to push and pop appdomain refs.
30988
30989 2003-10-31  Martin Baulig  <martin@ximian.com>
30990
30991         * class.c (inflate_generic_type): Renamed to
30992         mono_class_inflate_generic_type() and made it public.
30993
30994         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
30995         New interncall.
30996
30997         * loader.c (mono_field_from_memberref): Also set the retklass for
30998         typespecs.
30999
31000         * fielder.c (mono_image_get_inflated_field_token): New static
31001         method; creates a metadata token for an inflated field.
31002         (mono_image_create_token, fixup_method): Added support for
31003         "MonoInflatedField".
31004         (fieldbuilder_to_mono_class_field): New static function.
31005         (mono_reflection_inflate_field): New public function.
31006
31007         * reflection.h
31008         (MonoReflectionGenericInst): Added `MonoArray *fields'.
31009         (MonoReflectionInflatedField): New typedef.     
31010
31011 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
31012
31013         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
31014         for Solaris and other platforms without s6_addr16
31015
31016 2003-10-30  Martin Baulig  <martin@ximian.com>
31017
31018         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
31019         argument instead of two.
31020         (mono_class_inflate_generic_signature): Likewise.
31021         (inflate_generic_header): Likewise.
31022         (mono_class_inflate_generic_method): Likewise.  In addition, if
31023         `ginst->klass' is set, it becomes the new `method->klass'.
31024
31025         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
31026         field.
31027
31028         * reflection.c (encode_generic_method_sig): Write a 0xa as the
31029         first byte. [FIXME]
31030         (method_encode_methodspec): If we have generic parameters, create
31031         a MethodSpec instead of a MethodRef.
31032         (fixup_method): Added support for "MonoInflatedMethod" and
31033         "MonoInflatedCtor".
31034         (mono_image_create_token): Added support for "MonoInflatedMethod"
31035         and "MonoInflatedCtor".
31036         (inflated_method_get_object): New static function; returns a
31037         managed "System.Reflection.MonoInflatedMethod" object.
31038         (mono_reflection_bind_generic_method_parameters): Return a
31039         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
31040         (mono_reflection_inflate_method_or_ctor): Likewise.
31041         (mono_image_get_generic_method_param_info): Initialize unused
31042         fields to zero.
31043         (mono_image_get_generic_param_info): Likewise.
31044
31045         * reflection.h (MonoReflectionInflatedMethod): New public
31046         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
31047         "S.R.MonoInflatedCtor" classes.
31048
31049         * loader.c (method_from_memberref): If we're a TypeSpec and it
31050         resolves to a generic instance, inflate the method.
31051
31052 2003-10-28  Dick Porter  <dick@ximian.com>
31053
31054         * object.c (mono_runtime_run_main): Convert command-line arguments
31055         into utf8, falling back to the user's locale encoding to do so.
31056
31057 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
31058
31059         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
31060         at this time.
31061
31062         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
31063
31064         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
31065         up icalls at method definition time. Partially fixes #33569.
31066
31067 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
31068
31069         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
31070         marshalling of arrays. Fixes #50116.
31071
31072         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
31073
31074         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
31075         points to a vtable in the dying appdomain.
31076
31077         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
31078         listeners into unmanaged code inside the lock.
31079
31080         * object.c (mono_class_vtable): Turn off typed allocation in non-root
31081         domains and add some comments.
31082
31083 2003-10-25  Martin Baulig  <martin@ximian.com>
31084
31085         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
31086
31087         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
31088
31089         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
31090         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
31091         currently parsing.  Create the generic class and store it in
31092         `generic_inst->klass' before parsing the type arguments.  This is
31093         required to support "recursive" definitions; see mcs/tests/gen-23.cs
31094         for an example.
31095         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
31096         to support recursive typespec entries.
31097
31098         * class.c (mono_class_setup_parent): If our parent is a generic
31099         instance, we may get called before it has its name set.
31100         (mono_class_from_generic): Splitted into
31101         mono_class_create_from_generic() and mono_class_initialize_generic().
31102
31103 2003-10-25  Martin Baulig  <martin@ximian.com>
31104
31105         * icall.c (ves_icall_Type_BindGenericParameters): Return a
31106         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
31107         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
31108         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
31109
31110         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
31111         (create_typespec): Likewise.
31112         (mono_reflection_bind_generic_parameters): Return a
31113         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
31114         (mono_reflection_inflate_method_or_ctor): New public function.
31115
31116         * reflection.h (MonoReflectionGenericInst): New typedef.        
31117
31118 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
31119
31120         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
31121         inside the domain lock. Fixes #49993.
31122         
31123         * object.c (mono_class_vtable): When typed allocation is used, 
31124         allocate vtables in the GC heap instead of in the mempool, since the
31125         vtables contain GC descriptors which are used by the collector even
31126         after the domain owning the mempool is unloaded.
31127
31128         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
31129
31130         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
31131         reflect what it does. Also invalidate mempools instead of freeing
31132         them if a define is set.
31133
31134         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
31135         of the appdomain.
31136         
31137         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
31138         hold the finalizable objects in this domain.
31139
31140         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
31141         appdomain.
31142
31143         * appdomain.c (mono_domain_set): New function to set the current
31144         appdomain, but only if it is not being unloaded.
31145
31146         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
31147         appdomain which is being unloaded.
31148         
31149         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
31150         unloading of the root appdomain.
31151
31152         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
31153         icall to execute a method in another appdomain. Intended as a 
31154         replacement for InternalSetDomain, which can confuse the code 
31155         generation in the JIT.
31156
31157         * appdomain.c (mono_domain_is_unloading): New function to determine
31158         whenever an appdomain is unloading.
31159
31160         * appdomain.c (mono_domain_unload): New function to correctly unload
31161         an appdomain.
31162
31163         * assembly.c (mono_assembly_load_references): Check that an assembly
31164         does not references itself.
31165
31166         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31167         domain manually, it asks the finalizer thread to do it, then waits for
31168         the result. Also added a timeout.
31169
31170         * icall.c: Register the new icalls.
31171
31172         * threads.h threads.c: Export the mono_gc_stop_world and 
31173         mono_gc_start_world functions.
31174         
31175         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31176         function to fill out the mempool with 0x2a.
31177
31178 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31179
31180         * reflection.h (MonoReflectionMethodAux): New structure to store
31181         information which is rarely used, thus is not in the MonoMethod
31182         structure.
31183
31184         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31185         store the aux info.
31186
31187         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31188         and marshalling info into the aux structure.
31189
31190         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31191         from the aux structure.
31192
31193         * loader.c (mono_method_get_param_names): Retrieve the param names from
31194         the aux structure.
31195         
31196 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31197
31198         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31199         warning.
31200
31201 2003-10-21  Dick Porter  <dick@ximian.com>
31202
31203         * socket-io.c
31204         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31205         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31206
31207 2003-10-21  Martin Baulig  <martin@ximian.com>
31208
31209         * reflection.c (mono_reflection_bind_generic_parameters):
31210         `klass->parent' is NULL for interfaces.
31211
31212 2003-10-21  Martin Baulig  <martin@ximian.com>
31213
31214         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31215
31216 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31217
31218         * exception.c (mono_exception_from_name_msg): New helper function for
31219         creating exceptions and initializing their message field.
31220
31221         * exception.c: Simplify functions using the new helper.
31222
31223         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31224         New function.
31225
31226         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31227         mono_raise_exception, since otherwise gcc doesn't generate the function
31228         epilog for raise_exception, confusing the stack unwinding in the JIT.
31229         Fixes #45043.
31230
31231         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31232         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31233         Fixes #49499.
31234
31235 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31236
31237         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31238         utf8.
31239
31240 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31241
31242         * icall.c: Removed GetUninitializedObject method because
31243           AllocateUninitializedClassInstance does the same.
31244
31245 2003-10-18  Martin Baulig  <martin@ximian.com>
31246
31247         * class.c (inflate_generic_signature): Renamed to
31248         mono_class_inflate_generic_signature() and made it public.
31249         (my_mono_class_from_generic_parameter): New static function; if we
31250         don't already have the generic parameter's MonoClass, create a
31251         very simple one which is just used internally in the runtime and
31252         not passed back to managed code.
31253
31254         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31255
31256         * metadata.h (MonoMethodSignature): Moved the
31257         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31258         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31259
31260         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31261         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31262         interncall on the MonoMethod class, not on MethodInfo.
31263         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31264         calling mono_reflection_bind_generic_method_parameters() directly.
31265
31266         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31267         return the already computed `method->signature'.
31268         (method_from_methodspec): New static function to load a method
31269         from a MethodSpec entry.
31270         (mono_get_method_from_token): Call the new method_from_methodspec()
31271         for MethodSpec tokens.  
31272         (mono_get_method_from_token): If we're a generic method, load the
31273         type parameters.
31274
31275         * reflection.c (mono_image_get_memberref_token): Allow
31276         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31277         table.
31278         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31279         (mono_image_create_token): First check whether it's a generic
31280         method (so we'd need to create a MethodSpec), then do the other
31281         two alternatives.
31282         (mono_reflection_bind_generic_method_parameters): Return a
31283         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31284         called directly from the interncall.
31285
31286 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31287
31288         * reflection.c (load_public_key): Move loading of the public key
31289         into managed code.
31290
31291         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31292
31293         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31294         fields.
31295
31296         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31297         culture, hash_alg and public_key. Fixes #49555.
31298
31299 2003-10-17  Martin Baulig  <martin@ximian.com>
31300
31301         * class.h (MonoGenericInst): Moved this declaration here and added
31302         `MonoMethod *generic_method'.
31303
31304         * icall.c
31305         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31306         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31307
31308         * metadata.c (mono_metadata_type_equal): Two types of
31309         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31310         index; ie. don't compare the address of the `MonoGenericParam'
31311         structure.
31312         (mono_metadata_load_generic_params): Removed the `MonoMethod
31313         *method' argument.
31314
31315         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31316         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31317
31318         * reflection.c (method_encode_signature): Encode the number of
31319         generic parameters.
31320         (encode_generic_method_sig): New static function.
31321         (method_encode_methodspec): New static function; creates an entry
31322         in the MethodSpec table for a generic method.
31323         (mono_image_get_methodspec_token): New static function.
31324         (mono_image_create_token): Call mono_image_get_methodspec_token()
31325         for generic methods.
31326         (mono_reflection_bind_generic_method_parameters): New public
31327         function.  Instantiates a generic method.
31328
31329 2003-10-16  Martin Baulig  <martin@ximian.com>
31330
31331         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31332         *gen_params' here from MonoMethodHeader.
31333
31334         * metadata.c (mono_metadata_parse_method_signature): If we have
31335         generic parameters, initialize `method->gen_params' and then set
31336         the correct `type->data.generic_param' in all the parameters.
31337
31338 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31339
31340         * threads.c (mono_threads_get_default_stacksize): New function to 
31341         return the default stacksize.
31342
31343         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31344         termination of the finalizer thread, since the previous method had
31345         race conditions. Fixes #49628.
31346
31347         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31348         as for the other managed threads.
31349
31350 2003-10-16  Martin Baulig  <martin@ximian.com>
31351
31352         * class.c (inflate_generic_signature): Copy `generic_param_count'
31353         and `gen_params'.
31354
31355         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31356         New interncall.
31357
31358         * metadata.c (mono_metadata_parse_method_signature): Actually set
31359         the `method->generic_param_count' here.
31360         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31361
31362 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31363
31364         * object.h: Add a new field to TypedRef to simplify the implementation
31365         of the REFANY opcodes in the JIT.
31366
31367         * icall.c: Make use of the new field.
31368
31369         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31370         dynamically.
31371
31372 2003-10-15  Martin Baulig  <martin@ximian.com>
31373
31374         * class.c (mono_class_from_gen_param): Renamed to
31375         mono_class_from_generic_parameter() and moved most of the
31376         functionality from mono_reflection_define_generic_parameter()
31377         here; ie. we create a "real" class here.
31378         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31379         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31380         previously been called.
31381
31382         * class.h (MonoGenericParam): Moved the declaration of this struct
31383         here from metadata.h and added `MonoMethod *method'.
31384
31385         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31386         interncall.
31387
31388         * loader.c (mono_get_method_from_token): If we have any generic
31389         parameters, call mono_metadata_load_generic_params() to read them
31390         from the MONO_TABLE_GENERICPAR.
31391
31392         * metadata.c (mono_metadata_load_generic_params): Added
31393         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31394
31395         * metadata.h (MonoMethodSignature): Replaced
31396         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31397         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31398
31399         * reflection.c (mono_reflection_define_generic_parameter): Moved
31400         most of the functionality into the new
31401         mono_class_from_generic_parameter(); set the `method' field if
31402         we're a method parameter.       
31403
31404 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31405
31406         * marshal.c (emit_struct_conv): if native size is 0
31407         emit no code.
31408
31409 2003-10-14  Martin Baulig  <martin@ximian.com>
31410
31411         * icall.c: The generics API has changed in the spec since it was
31412         added to System.Type; these modifications make it match the spec
31413         again.
31414         (ves_icall_Type_GetGenericParameters): Renamed to
31415         `ves_icall_Type_GetGenericArguments'.
31416         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31417         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31418         `ves_icall_MonoType_get_HasGenericArguments'.
31419         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31420         `ves_icall_MonoType_get_IsGenericParameter'.
31421         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31422         this is no interncall anymore.
31423         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31424         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31425
31426 2003-10-14  Martin Baulig  <martin@ximian.com>
31427
31428         * reflection.c (mono_reflection_bind_generic_parameters): Also
31429         inflate generic methods if we're reading the class from IL.
31430
31431 2003-10-13  Martin Baulig  <martin@ximian.com>
31432
31433         * reflection.c (mono_reflection_define_generic_parameter): This
31434         method isn't called directly from the icall anymore; take a
31435         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31436         method generic parameters.
31437         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31438         (method_builder_encode_signature): Encode generic parameters.
31439         (mono_image_get_method_info): Write generic params to the
31440         MONO_TABLE_GENERICPARAM table.
31441
31442         * reflection.h (MonoReflectionMethodBuilder): Added
31443         `MonoArray *generic_params'.
31444
31445         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31446
31447         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31448         wrapper for mono_reflection_define_generic_parameter().
31449         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31450
31451 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31452
31453         * marshal.h: Add missing function to fix build.
31454
31455         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31456         the SetLastError pinvoke attribute.
31457
31458         * marshal.c (mono_marshal_set_last_error): New helper function called
31459         by the generated code.
31460         
31461         * marshal.c (mono_mb_emit_branch): New helper function.
31462
31463         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31464
31465         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31466         classes as parameters and return values of delegates. Fixes #29256. 
31467
31468 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31469
31470         * locales.c: use gint32 in non HAVE_ICU case
31471
31472 2003-10-11  Martin Baulig  <martin@ximian.com>
31473
31474         * mono-debug.c (mono_debug_add_method): Added a workaround for
31475         bug #48591.
31476
31477 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31478
31479         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31480         delegates passed to native code must use the STDCALL calling 
31481         convention. Fixes #35987.
31482
31483 2003-10-10  Martin Baulig  <martin@ximian.com>
31484
31485         * class.c (inflate_generic_type): If we're inflating for a generic
31486         type instance (and not for a generic method), return
31487         MONO_TYPE_MVAR unchanged.
31488
31489 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31490
31491         * string-icalls.c: Join ignores null strings in the source array.
31492         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31493         * threads.c: GetAvailableTheads is slightly more accurate.
31494
31495 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31496
31497         * threads.h threads.c : add mono_threads_set_default_stacksize
31498         and pass default to CreateThread calls.
31499
31500 2003-10-09  Dick Porter  <dick@ximian.com>
31501
31502         * icall.c:
31503         * locales.h:
31504         * locales.c: Internal calls for constructing CultureInfo and
31505         related objects from libicu (if its available.)
31506
31507 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31508
31509         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31510
31511 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31512
31513         * threadpool.c: added an argument to async_invoke_thread that is the
31514         item to process, pass the MonoAsyncResult to the thread start function
31515         when creating a new thread. This way we don't need to acquire any lock
31516         when we're creating a new thread. Readded a semaphore for faster
31517         response times (instead of that Sleep i added).
31518
31519 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31520
31521         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31522         get daylight change dates better on Windows, fix handling
31523         of platforms without tm_gmtoff.
31524
31525 2003-10-06  Martin Baulig  <martin@ximian.com>
31526
31527         * class.c (inflate_generic_method): Renamed to
31528         mono_class_inflate_generic_method() and made public.
31529         (mono_class_init): Don't inflate the generic methods here.
31530         (mono_class_from_generic): Added `gboolean inflate_methods'
31531         argument.  Inflate the methods here.
31532
31533         * loader.c (mono_method_get_param_names): Ignore instances of
31534         generic types for the moment.
31535
31536         * reflection.c (fixup_method): Added support for inflated methods.
31537         (mono_image_create_token): Use mono_image_get_methodref_token()
31538         for inflated methods.
31539         (mono_custom_attrs_from_param): Ignore instances of generic types
31540         for the moment.
31541         (mono_reflection_bind_generic_parameters): New public function.
31542         Moved all the functionality from
31543         ves_icall_Type_BindGenericParameters() here and added support for
31544         dynamic types.
31545         (mono_reflection_define_generic_parameter): Initialize
31546         `klass->methods' here.
31547
31548         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31549         functionality into mono_reflection_define_generic_parameter().
31550         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31551         TypeBuilder, return that TypeBuilder.
31552
31553 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31554
31555         * appdomain.c: removed mono_delegate_semaphore.
31556
31557         * threadpool.c:
31558         (mono_thread_pool_add): moved hash table creation inside and the thread 
31559         creation outside of the critical region.
31560         (mono_thread_pool_finish): removed obsolete code.
31561         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31562         continue or exit the thread depending on the queue.
31563
31564 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31565
31566         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31567         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31568         handle more bool marshalling options
31569
31570 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31571
31572         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31573         arrays of structs. Also add a more descriptive error message when
31574         a structure member is marshalled as LPArray.
31575
31576 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31577
31578         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31579         marshalling arrays of complex types. Fixes #29098. Also remove an
31580         usused and incomplete function.
31581
31582 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31583
31584         * gc.c: report heap_size - free_bytes as total memory allocated
31585         (bug#49362).
31586
31587 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31588
31589         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31590         fix timezone handling problems on Windows.
31591         
31592         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31593         asserts when the year is outside the range handled by ms the functions.
31594
31595         * class.c (setup_interface_offsets): If the class is an interface,
31596         fill out its interface_offsets slot.
31597
31598 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31599
31600         * threadpool.c: mark threadpool threads as background.
31601
31602 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31603
31604         * decimal.c - define DECINLINE to nothing if not using GCC
31605
31606 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31607
31608         * assembly.c: More refcount fixes.
31609
31610 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31611
31612         * string-icalls.c: if we're not trimming, return the same string.
31613         When not splitting, don't create a new string.
31614
31615 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31616
31617         * image.c:
31618         (mono_image_open): increment the ref_count inside the critical section.
31619
31620 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31621
31622         * image.c (mono_image_open): Fix reference counting bug.
31623
31624 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31625
31626         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31627         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31628         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31629         mono_lookup_pinvoke_call throws.        
31630
31631 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31632
31633         * reflection.c (mono_reflection_parse_type): Fix #49114.
31634
31635         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31636         temporary workaround for cygwin header problem.
31637
31638         * object.c (mono_object_isinst): Synchronize this with the code
31639         generated by the JIT for casts.
31640
31641 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31642
31643         * reflection.c (encode_type): Fix #38332.
31644
31645 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31646
31647         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31648         the original method from the wrapper method.
31649
31650 2003-09-25  Martin Baulig  <martin@ximian.com>
31651
31652         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31653         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31654         (ves_icall_Type_get_IsGenericInstance): New interncall.
31655
31656 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31657
31658         * object.c: fix cast warning in big endian code.
31659
31660 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31661
31662         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31663         
31664 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31665
31666         * assembly.c: don't call check_env from mono_assembly_load. It's
31667         already done once in mono_assemblies_init and may cause headaches when
31668         multiple threads are loading assemblies.
31669
31670 2003-09-19  Martin Baulig  <martin@ximian.com>
31671
31672         * reflection.c (mono_reflection_define_generic_parameter): Don't
31673         allocate `klass->methods', set `klass->flags' to
31674         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31675
31676 2003-09-18  Martin Baulig  <martin@ximian.com>
31677
31678         * class.c (mono_class_init): Don't create `class->methods' if it's
31679         already initialized.
31680
31681         * metadata.c (mono_metadata_load_generic_params): Make this
31682         actually work.
31683
31684         * reflection.c (mono_reflection_define_generic_parameter): Set
31685         parent class and interfaces from the constraints.
31686
31687         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31688         to keep this struct in sync with the declaration in TypeBuilder.cs.
31689
31690 2003-09-17  Martin Baulig  <martin@ximian.com>
31691
31692         * metadata.h (MonoType): Replaced the data's `int type_param'
31693         field with `MonoGenericParam *generic_param'.
31694         (MonoGenericParam): Added `MonoClass *klass'.
31695
31696         * class.c (mono_class_from_gen_param): Removed the
31697         `MonoImage *image' and `int type_num' arguments.
31698
31699         * metadata.c (mono_metadata_parse_generic_param): New static
31700         method; creates a MonoGenericParam which just contains the index.
31701         (do_mono_metadata_parse_type): Call
31702         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31703         MONO_TYPE_MVAR.
31704
31705         * reflection.c (mono_image_typedef_or_ref): Generic type
31706         parameters may be in the same assembly, but never use a typedef
31707         for them.
31708         (mono_reflection_define_generic_parameter): We're now creating a
31709         "real" class for the type parameter; it's now safe to call
31710         mono_class_from_mono_type() on the class'es type, it'll do the
31711         right thing.
31712
31713 2003-09-16  Martin Baulig  <martin@ximian.com>
31714
31715         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31716         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31717         the `symfile' data structure must be fully initialized before it
31718         gets added to the table.
31719
31720 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31721
31722         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31723
31724         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31725         class init trampolines.
31726
31727 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31728
31729         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31730         to the built-in profiler to turn off time and allocation profiling
31731         respectively.
31732
31733 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31734
31735         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31736         g_direct_equal.
31737
31738         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31739         in human readable form.
31740
31741 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31742
31743         * reflection.c icall.c: Fixed warnings.
31744
31745         * image.c (load_class_names): Use a temporary hash table to hold the
31746         namespaces in order to avoid doing many string comparisons.
31747
31748         * image.h: Fix typo.
31749
31750         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31751         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31752         since the NULL case is short-circuited inside g_hash_table_lookup, 
31753         leading to better performance.  
31754
31755         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31756         obtain the first custom attribute for a given index. Depends on the
31757         CustomAttribute table being sorted by the parent field.
31758
31759         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31760         for better performance.
31761
31762 2003-09-07  Martin Baulig  <martin@ximian.com>
31763
31764         * class.c (mono_class_init): If we're a generic instance, inflate
31765         all our methods instead of loading them from the image.
31766         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31767
31768 2003-09-07  Martin Baulig  <martin@ximian.com>
31769
31770         * mono-debug-debugger.c: Added support for constructors.
31771
31772 2003-09-06  Martin Baulig  <martin@ximian.com>
31773
31774         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31775         New interncall.
31776
31777         * reflection.c (mono_reflection_setup_generic_class): Call
31778         ensure_runtime_vtable() to create the vtable.
31779
31780 2003-09-05  Martin Baulig  <martin@ximian.com>
31781
31782         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31783         MONO_TYPE_MVAR.
31784
31785 2003-09-04  Martin Baulig  <martin@ximian.com>
31786
31787         * reflection.c (mono_reflection_define_generic_parameter): Generic
31788         parameters start with zero.
31789
31790 2003-09-04  Martin Baulig  <martin@ximian.com>
31791
31792         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31793
31794         * reflection.h (MonoReflectionGenericParam): New typedef.
31795         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31796         the generic parameters from the managed TypeBuilder.
31797
31798         * reflection.c (mono_reflection_define_generic_parameter): New function.
31799         (mono_reflection_create_runtime_class): Encode generic parameters.
31800         (mono_reflection_setup_generic_class): New function; this is
31801         called after adding adding all generic params to the TypeBuilder.
31802         (encode_type): Added MONO_TYPE_VAR.
31803
31804 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31805
31806         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31807         here from the JIT.
31808
31809         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31810         load hook.
31811
31812 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31813
31814         * reflection.h reflection.c class.h class.c: Delete duplicate 
31815         definition of mono_type_get_name () from reflection.c and export the
31816         one in class.c.
31817
31818         * class.c: Class loading fixes from Bernie Solomon 
31819         (bernard@ugsolutions.com).
31820
31821         * reflection.c: Endianness fixes from Bernie Solomon 
31822         (bernard@ugsolutions.com).
31823         
31824 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31825
31826         * assembly.h assembly.c: Define a file format version for AOT
31827         libraries.
31828         
31829         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31830
31831         * appdomain.h (MonoJitInfo): New field to determine whenever the
31832         code is domain neutral.
31833         
31834 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31835
31836         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31837
31838 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31839
31840         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31841         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31842         Avoid caching the result since strings must be domain specific. Fixes
31843         #48050.
31844
31845 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31846
31847         * marshal.c (mono_marshal_init): Make this callable multiple times
31848         since it is hard to find a correct place to call it.
31849
31850         * object.c (mono_runtime_class_init): Execute static constructors in
31851         the correct appdomain.
31852
31853         * image.c (build_guid_table): Handle the case when multiple images have
31854         the same GUID.
31855
31856 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31857
31858         * icall.c: added a couple of icalls for System.Web.
31859
31860 2003-08-28  Martin Baulig  <martin@ximian.com>
31861
31862         * icall.c (ves_icall_Type_BindGenericParameters): Use
31863         `klass->generic_inst' instead of `&klass->byval_arg' in the
31864         mono_type_get_object() call.  The returned type must be
31865         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31866
31867 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31868
31869         * NOTES: New file.
31870
31871         * object.c (mono_class_proxy_vtable): Make it thread safe.
31872
31873         * pedump.c: Fix warning.
31874
31875         * object.c appdomain.h: Get rid of metadata_section. 
31876         It is no longer needed and it was causing deadlocks with domain->lock.
31877
31878         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31879
31880 2003-08-26  Martin Baulig  <martin@ximian.com>
31881
31882         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31883
31884 2003-08-26  Martin Baulig  <martin@ximian.com>
31885
31886         * pedump.c (main): Call mono_metadata_init(),
31887         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31888         and mono_loader_init().
31889
31890 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31891
31892         * loader.h: Add missing include to fix build.
31893
31894         * image.h: mono_image_load_references is no more.
31895
31896         * assembly.c: Reworked assembly loading to make it really thread safe.
31897         After these changes, the assembly returned by mono_assembly_open is
31898         fully initialized, i.e. all its references assemblies are loaded.
31899
31900         * assembly.c (mono_image_load_references): Renamed to 
31901         mono_assembly_load_references, and made private, since clients no
31902         longer need to call it.
31903
31904         * class.c: Removed calls to mono_assembly_load_references, since it was
31905         a source of deadlocks.
31906
31907         * loader.h loader.c class.h class.c: Protect data structures using a 
31908         new lock, the loader lock.
31909
31910         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31911         GPtrArrays only when needed.
31912
31913         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31914         into empty structures by mcs. Fixes pinvoke7.cs.
31915         
31916         * domain.c (mono_init): Call a new initialization function.
31917
31918         * appdomain.c (mono_runtime_init): Call the new initializer function
31919         of the marshal module.
31920
31921         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31922         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31923
31924         * marshal.h marshal.c: Added locks around the wrapper caches to make
31925         this module thread safe.
31926
31927         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31928         this argument. Fixes pinvoke1.exe.
31929
31930 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31931
31932         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31933         enumeration of values. Removed fields to store remote call output values in
31934         MonoAsyncResult. Not needed any more.
31935         * object.c: Initialize call_type and async_result fields in mono_message_init.
31936         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31937         dispatching the message.
31938         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31939         async call to finish. To do it use a message with EndInvoke call type.
31940
31941 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
31942
31943         * loader.h loader.c (mono_method_hash_marhal_info): New function which
31944         determines whenever a method has marshalling info.
31945
31946 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31947
31948         * assembly.c: fix the build on windows.
31949
31950 2003-08-22 Lluis Sanchez <lluis@ximian.com>
31951
31952         * object.cs: Fixed bug #47785.
31953
31954 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
31955
31956         * string-icalls.c (StringReplace): If their are no occurances of
31957         the old string found return a reference to the supplied
31958         string. This saves some memory and matches MS behavoir.
31959         
31960 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31961
31962         * socket-io.c: fixed compilation for systems that define AF_INET6
31963         and don't define SOL_IP/SOL_IPV6.
31964
31965 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
31966
31967         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
31968         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
31969
31970         * rawbuffer.c rawbuffer.h: Make this module thread safe.
31971
31972         * domain.c: Make this module thread safe.
31973
31974         * domain.c (mono_init): Call new initialization function.
31975
31976         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
31977         reference types too. Fixes #38812.
31978
31979         * image.c (mono_image_init): Fixed warnings.
31980
31981         * class.c (mono_class_from_typeref): Handle assembly load failure
31982         correctly.
31983
31984         * appdomain.c (add_assemblies_to_domain): Handle the case when
31985         the references of an assembly are not yet loaded.
31986
31987         * metadata.c image.c assembly.c: Moved initialization of global
31988         variables to a separate function called at startup since lazy 
31989         initialization of these variables is not thread safe.
31990         
31991         * image.c assembly.c: Made this module thread safe by adding locks in 
31992         the appropriate places.
31993
31994         * domain.c (mono_init): Call the new initialization functions of the
31995         three modules.
31996
31997 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
31998
31999         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
32000           make a direct call. It is proxy's work to make the call asynchronous.
32001           mono_delegate_end_invoke(): If the targe is a proxy, just collect
32002           the return values.
32003         * object.cs: mono_method_call_message_new(): read AsyncResult and
32004           state object from parameters list, if this info is requested.
32005         * object.h: Added fields to store remote call output values in
32006           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
32007
32008 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32009
32010         * object.h: add needed fields to MonoThread.
32011         * threads.c, threads.h: allow registering a function to cleanup data
32012         allocated per thread by the JIT.
32013
32014 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32015
32016         * loader.h: portability fix by Bernie Solomon
32017         * <bernard@ugsolutions.com>.
32018
32019 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
32020
32021         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
32022         return a MonoArray. This simplifies the code and also ensures that
32023         the cache allways contains an object reference as a value.
32024
32025         * icall.c (ves_icall_get_parameter_info): Simplified using the new
32026         function.
32027
32028 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32029
32030         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
32031         fixes a problem with byte ordering when getting the address family for
32032         a socket.
32033
32034 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
32035
32036         * .cvsignore: Added monosn.
32037
32038         * reflection.h reflection.c loader.c: Added support for parameter
32039         marshalling to dynamically created types. Fixes #47295.
32040
32041 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
32042
32043         * rand.c: remove useless warnings.
32044
32045 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32046
32047         * class.c: implemented ldtoken for methods and fieldrefs.
32048
32049 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32050
32051         * threadpool.c: when mono_async_invoke was called, no one took care of
32052         monitoring the queue. So if the method invoked took some time and we
32053         got new async invoke requests after 500 ms (the thread created waited
32054         that long in WaitForSingleObject), the new async invoke was not called
32055         until the previous one finished.
32056
32057         This is fixed now. Thanks to Totte for helping with it.
32058
32059 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32060
32061         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
32062
32063 2003-08-11  Martin Baulig  <martin@ximian.com>
32064
32065         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
32066
32067 2003-08-06  Martin Baulig  <martin@ximian.com>
32068
32069         * mono-debug-debugger.c: Added support for static fields,
32070         properties and methods.
32071
32072 2003-08-06  Martin Baulig  <martin@ximian.com>
32073
32074         * mono-debug-debugger.c: Don't store the MonoString's vtable to
32075         make this work for applications with multiple application domains.
32076
32077 2003-08-04  Martin Baulig  <martin@ximian.com>
32078
32079         * mono-debug-debugger.c: Completely reworked the type support; the
32080         most important thing is that we're now just using one single
32081         `MonoType' instance per type.
32082
32083 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
32084
32085         * mono-endian.h, mono-endian.c, icall.c: Added icall
32086         ves_icall_System_Double_AssertEndianity to assert double word endianity
32087         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
32088
32089 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32090
32091         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
32092         support, icalls and fixes.
32093
32094 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
32095
32096         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
32097         classes that are a punctuation character in .NET is not the same a
32098         g_unichar_ispunct.
32099
32100 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32101
32102         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
32103
32104 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
32105
32106         * icall.c: Add new MemCopy internalcall.
32107         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
32108         Simplified code; It is not necessary to handle all the cases here,
32109         as the C# code takes care of it.  Only handle the case of the name
32110         resource embedded into the assembly.
32111
32112         Changed signature to return the data pointer and the size of the
32113         data. 
32114
32115 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
32116
32117         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
32118         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
32119
32120 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32121
32122         * socket-io.c: ignore EINTR error in select.
32123
32124 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32125
32126         * class.h, class.c: removed unused subclasses field in MonoClass.
32127
32128 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32129
32130         * icall.c: improve fix of get_base_definition(). If the parent class
32131           doesn't have the mehod, look at the parent of the parent.
32132         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
32133           to check if a parameter is an in or out parameter
32134           (PARAM_ATTRIBUTE_IN is not set by default).
32135           mono_method_return_message_restore(): Use mono_class_value_size to
32136           get the size of a value type. mono_type_stack_size (parameterType)
32137           does not return the correct value if parameterType is byRef.
32138           mono_load_remote_field(), mono_load_remote_field_new(),
32139           mono_store_remote_field(), mono_store_remote_field_new():
32140           raise exception if the remote call returns an exception.
32141
32142 2003-07-28  Martin Baulig  <martin@ximian.com>
32143
32144         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
32145         method.  This is a wrapper around mono_runtime_invoke() which
32146         boxes the instance object if neccessary.
32147
32148 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32149
32150         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
32151         metadata.h, row-indexes.h, verify.c: first cut of generics support.
32152
32153 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32154
32155         * icall.c: disable mcs bug workaround.
32156
32157 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32158
32159         * object.c (mono_runtime_class_init): Take the metadata_section
32160         mutex before obtaining the domain mutex.
32161
32162         * appdomain.h: Added definition of metadata_section mutex here. 
32163
32164         * object.c: define metadata_mutex here.
32165
32166 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32167
32168         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32169         fixed.
32170
32171 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32172
32173         * reflection.c: Fix bug #46669
32174
32175 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32176
32177         * exception.c:
32178         * exception.h:
32179         * icall.c:
32180         * object.h: fill in the type name for TypeLoadException.
32181
32182 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32183
32184         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32185         relationship between TypeBuilders while compiling corlib) and bug
32186         45993 (Array types returned from the runtime while compiling
32187         corlib were from the loaded corlib).
32188
32189 2003-07-22  Martin Baulig  <martin@ximian.com>
32190
32191         * mono-debug-debugger.c: Reworked the type support a bit more;
32192         distinguish between types and classes.
32193
32194 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32195
32196         * icall.c: add IsArrayImpl icall.
32197
32198 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32199
32200         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32201         initializing real_size only once. Also fix bug #46602.
32202
32203 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32204
32205         * object.c: Renamed mono_metadata_section to metadata_section.
32206
32207 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32208
32209         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32210           empty array if the type is an array. Fixed.
32211           ves_icall_MonoMethod_get_base_definition: if the base method
32212           is abstract, get the MethodInfo from the list of methods of
32213           the class.
32214         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32215           and it was 1-based. Fixed in mono_param_get_objects.
32216
32217 2003-07-20  Martin Baulig  <martin@ximian.com>
32218
32219         * mono-debug.h: Set version number to 31.
32220         (mono_debug_init): Added `MonoDomain *' argument.
32221
32222         * mono-debug-debugger.c: Reworked the type support; explicitly
32223         tell the debugger about builtin types; pass the `klass' address to
32224         the debugger.
32225
32226 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32227
32228         * image.c: Allow new metadata tables to be loaded without a
32229         warning. Also update the warning message to give the new constant value.
32230                 
32231 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32232
32233         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32234         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32235         array type representation changes.
32236
32237 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32238
32239         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32240         on Environment.Exit () call.
32241
32242 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32243
32244         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32245         requires a matching corlib.
32246
32247 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32248
32249         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32250           Committed again without the CRs.
32251         
32252 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32253
32254         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32255           getting it from the "this" socket instance. Did not work
32256           if the socket is a subclass of Socket.
32257           Also fixed bug #35371.
32258
32259 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32260
32261         * metadata.c: fixed size for TypedByRef.
32262         * loader.c: when searching for a method, consider the vararg amrker.
32263         * unicode.c, decimal.c: constify some arrays.
32264
32265 2003-07-15  Dick Porter  <dick@ximian.com>
32266
32267         * socket-io.c: Fixed compilation for gcc < 3.2.
32268
32269         Fixed compilation for machines that don't have AF_INET6 (thanks to
32270         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32271
32272         Fixed compile warnings.
32273         
32274         Fixed formatting and line endings.
32275
32276 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32277
32278         * socket-io.h:
32279         * socket-io.c: Added IPv6 support.
32280
32281 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32282
32283         * class.c (mono_class_is_assignable_from): New function to implement
32284         the is_assignable_from logic. Used by mono_object_isinst, 
32285         Type::IsAssignableFrom () and the interpreter.
32286
32287         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32288         Object, even interfaces.
32289         
32290         * object.c (mono_object_isinst): Implement in terms of 
32291         is_assignable_from.
32292
32293         * icall.c (ves_icall_type_is_assignable_from): New icall.
32294
32295 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32296
32297         * domain.c (foreach_domain): fix compiler warning.
32298
32299 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32300
32301         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32302         not available on all plattforms
32303
32304 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32305
32306         * image.h image.c: Store the metadata version string in MonoImage.
32307         * icall.c: New icall to retrieve the image version.
32308         * reflection.c (create_dynamic_image): Fill in the image version field
32309         * reflection.c (build_compressed_metadata): Use the image version
32310         from the image structure.
32311
32312 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32313
32314         * appdomain.c: modified comment.
32315         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32316         That will be its last iteration when mono_gc_cleanup is called from
32317         mono_runtime_cleanup and before the domain is unloaded.
32318
32319         Fixes bug #45962.
32320
32321 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32322
32323         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32324         attributes.
32325
32326 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32327
32328         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32329         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32330         Bernie Solomon <bernard@ugsolutions.com>.
32331
32332 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32333
32334         * object.c, object.h: provide mono_object_new_fast() for faster
32335         allocation in some special cases.
32336
32337 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32338
32339         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32340         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32341
32342 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32343
32344         * threadpool.c: fix leaks.
32345
32346 2003-07-01  Dick Porter  <dick@ximian.com>
32347
32348         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32349         using MonoGHashTables.  Fixes threadpool bug posted to list.
32350
32351 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32352
32353         * image.h, image.c: added support to load an assembly from a byte array.
32354         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32355         assembly bundle support.
32356
32357 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32358
32359         * threadpool.c (mono_thread_pool_add): keep a reference to the
32360         AsyncResult to prevent GC
32361
32362 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32363
32364         * class.c: leak fix.
32365
32366 2003-06-25  Dick Porter  <dick@ximian.com>
32367
32368         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32369         for the async object, the WaitHandle object will close the handle.
32370         Fixes bug 45321.
32371
32372 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32373
32374         * class.c: in mono_array_class_get (), lookup from the hash with the
32375         same type we insert: this works around a bug in
32376         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32377         lluis. The real fix will have to wait for after the release.
32378
32379 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32380
32381         * icall.c: fix memory leak when getting type members.
32382
32383 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32384
32385         * reflection.c: added more pubtoken special cases.
32386
32387 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32388
32389         * class.c: handle field offset correctly when class size
32390         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32391
32392 2003-06-20  Martin Baulig  <martin@ximian.com>
32393
32394         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32395         *image' field.
32396
32397 2003-06-20  Martin Baulig  <martin@ximian.com>
32398
32399         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32400
32401 2003-06-20  Martin Baulig  <martin@ximian.com>
32402
32403         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32404         just distinguish between variables in registers and variables at
32405         an offset relative to a register.
32406
32407 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32408
32409         * icall.c: #ifdef out latest changes until mcs is fixed.
32410
32411 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32412
32413         * icall.c: return members in metadata order.
32414
32415 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32416
32417         * icall.c: avoid infinite loop in GetTimeZoneData.
32418
32419 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32420
32421         * icall.c: added Marshal.Prelink/All icalls.
32422
32423 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32424
32425         * object.c, object.h: fix warnings and do some overflow checking
32426         when creating arrays.
32427
32428 2003-06-17  Dick Porter  <dick@ximian.com>
32429
32430         * file-io.h:
32431         * file-io.c: File attributes need to be tweaked slightly when
32432         passed from the managed to the w32 world.
32433
32434 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32435         * profiler.h profiler-private.h profiler.c: Rework last patch
32436         based on suggestion by Paolo.
32437         
32438 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32439
32440         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32441         instruction level coverage data collection.
32442         * profiler.h profiler.c (: Added new callback function which can be
32443         used by the profiler to limit which functions should have coverage
32444         instrumentation.
32445         * profiler.c (mono_profiler_load): Call g_module_build_path to
32446         generate the file name of the profiler library.
32447
32448 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32449
32450         * profiler.c, profiler.h, profiler-private.h: added basic block 
32451         coverage profiling API.
32452
32453 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32454
32455         * reflection.c (mono_reflection_create_runtime_class): Add support
32456         for events in dynamically generated code.
32457
32458         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32459         not allocated.
32460
32461 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32462
32463         * icall.c: when getting timezone info, return reasonable values if we
32464         can't get the actual data.
32465
32466 2003-06-14  Dick Porter  <dick@ximian.com>
32467
32468         * threads.c (start_wrapper): Remove the reference to the thread
32469         object in the TLS data, so the thread object can be finalized.
32470         This won't be reached if the thread threw an uncaught exception,
32471         so those thread handles will stay referenced :-( (This is due to
32472         missing support for scanning thread-specific data in the Boehm GC
32473         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32474
32475 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32476
32477         * reflection.c: ensure streams and tables are first allocated with
32478         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32479
32480 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32481
32482         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32483
32484 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32485
32486         * reflection.c (mono_reflection_create_runtime_class): Add support for
32487         properties to dynamically created classes.
32488         * reflection.c: Fix a few places where non-MonoObjects were inserted
32489         into the tokens hashtable.
32490
32491 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32492
32493         * object.c: some support to handle out of memory exceptions.
32494
32495 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32496
32497         * marshal.c (mono_marshal_get_native_wrapper): support reference
32498         return types
32499
32500 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32501
32502         * object.h, object.c: more portability stuff from Bernie Solomon.
32503         Unexport mono_object_allocate(). Added mono_object_unbox ().
32504         Set exitcode when an unhandled exception is thrown.
32505
32506 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32507
32508         * marshal.c (mono_marshal_get_native_wrapper): use custom
32509         marshaler for return types.
32510
32511 2003-06-10  Dick Porter  <dick@ximian.com>
32512
32513         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32514         ip_mreq is available
32515
32516 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32517
32518         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32519         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32520         by Bernie Solomon <bernard@ugsolutions.com>.
32521
32522 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32523
32524         * gc.c (mono_gc_init): Avoid error message on shutdown when
32525         GC_DONT_GC=1 is used.
32526
32527         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32528         New icall to return the GUID of a module.
32529
32530 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32531
32532         * class.c: ensure instance size always includes the parent's size
32533         even whem class size is set explicitly (fixes bug#44294).
32534
32535 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32536
32537         * profiler.h, profiler.c: made the simple profiler thread-safe,
32538         get more accurate timing info. Allow the loading of an
32539         externally-developed profiler module.
32540
32541 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32542
32543         * marshal.c (mono_marshal_get_native_wrapper): improved
32544         class/byref arguments.
32545         (mono_marshal_get_native_wrapper): better string marshaling support.
32546
32547 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32548
32549         * class.c: ensure .pack and .size are handled correctly and
32550         simplified layout of static fields.
32551
32552 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32553
32554         * appdomain.c
32555         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32556
32557         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32558         current directory (fix bug 44008)
32559
32560 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32561
32562         * marshal.c (mono_marshal_get_native_wrapper): started support for
32563         custom marshalers.
32564         (mono_delegate_to_ftnptr): consider marshalling specifications
32565
32566 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32567
32568         * reflection.c, reflection.h: emit custom marshal info.
32569
32570 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32571
32572         * object.c: free the GError.
32573         * icall.c: added CloseEvent_internal.
32574         * threads.[ch]:
32575         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32576         call.
32577
32578 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32579
32580         * loader.c (mono_method_get_signature): Add support for dynamic
32581         assemblies.
32582
32583 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32584
32585         * reflection.c: fixed bug #43905.
32586
32587 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32588
32589         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32590         handling TypedReference and ArgIterator.
32591         * loader.c, loader.h: added function to get signature at call site.
32592
32593 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32594
32595         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32596         data readonly. Buglets and warning fixes. Some MethodSpec support.
32597
32598 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32599
32600         * class.h, class.c, object.c: remove relative numbering support.
32601
32602 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32603
32604         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32605         free the string, until we get a chance to fix Gtk#
32606
32607 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32608
32609         * marshal.c: revert last patch.
32610
32611 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32612
32613         * icall.c: updates for new mono_class_vtable() not calling
32614         the type constructor anymore.
32615
32616 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32617
32618         * object.h, object.c: separate vtable creation from type
32619         initialization. Make running the .cctor thread safe.
32620
32621 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32622
32623         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32624
32625 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32626
32627         * loader.c (mono_get_method): consider calling convention
32628
32629 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32630
32631         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32632         to return the invisible global type for a module.
32633
32634         * reflection.c (mono_image_build_metadata): Emit global fields too.
32635
32636 2003-05-20  Peter Williams  <peterw@ximian.com>
32637
32638         * loader.c (mono_lookup_internal_call): Add a few newlines.
32639
32640 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32641
32642         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32643         literal strings.
32644
32645         * appdomain.c (set_domain_search_path): Recalculate search path when
32646         AppDomainSetup.PrivateBinPath changes.
32647
32648         * object.c (mono_class_compute_gc_descriptor): It turns out some
32649         parts of the class libs (like System.Thread) holds pointers to
32650         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32651         to treat native int a pointer type here.
32652         
32653 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32654
32655         * appdomain.h, domain.c: add hashtable for jump target resolution.
32656
32657 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32658
32659         * reflection.h reflection.c icall.c: Added new icalls 
32660         GetManifestResourceInfoInternal, GetModulesInternal and support
32661         infrastructure.
32662
32663 2003-05-16  Dick Porter  <dick@ximian.com>
32664
32665         * icall.c:
32666         * file-io.h:
32667         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32668
32669 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32670
32671         * object.c: mono_store_remote_field: little fix to previous patch.
32672
32673 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32674
32675         * class.c: add constructors to array classes.
32676         * icall.c: special case array construction for InternalInvoke (),
32677
32678 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32679
32680         * class.h class.c reflection.c object.c: Added support for field
32681         defaults in dynamically generated classes.
32682
32683 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32684
32685         * reflection.c: properly encode charset for ddlimport.
32686
32687 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32688
32689         * threads.c: allow compiling without GC.
32690
32691 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32692
32693         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32694         handling of thread static data.
32695
32696 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32697
32698         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32699
32700 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32701
32702         * class.c (mono_array_class_get): always set the serializable flags
32703         (mono_array_class_get): always set the SEALED attribute for array types
32704
32705 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32706
32707         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32708         attributes (fix for bug 42021).
32709
32710 2003-05-12  Dick Porter  <dick@ximian.com>
32711
32712         * gc.c: Don't run finalizers when the finalizer thread is
32713         finishing up, because the default domain has already been
32714         destroyed.
32715
32716 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32717
32718         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32719         value is null, we should throw an exception.   This is slightly
32720         different than the other conventions used for the constructor.
32721
32722 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32723
32724         * socket-io.c: fixed windows build.
32725
32726 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32727
32728         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32729
32730 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32731
32732         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32733         compilers.
32734
32735 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32736
32737         * class.c (mono_class_layout_fields): Add experimental GC aware
32738         auto layout facility. Requires class library changes to work correctly.
32739
32740         (mono_class_setup_vtable): Avoid overriding explicit interface
32741         method implementations. Fixes iface3.exe test.
32742
32743         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32744         object reference.
32745         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32746         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32747
32748         * metadata.h: Add new type classification macro which determines
32749         whenever the type holds an object reference.
32750
32751 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32752
32753         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32754
32755 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32756
32757         * gc.c (finalizer_thread): Work around a GC bug.
32758
32759 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32760
32761         * marshal.c (emit_struct_conv): allow unions
32762
32763         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32764
32765 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32766
32767         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32768
32769 2003-05-06  Martin Baulig  <martin@ximian.com>
32770
32771         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32772
32773 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32774
32775         * socket-io.c:
32776         (Select_internal): allow NULLs, don't create arrays if not needed.
32777         Coupled with Socket.cs changes.
32778
32779         * threadpool.c:
32780         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32781         register a finalizer for it that will close the semaphore handle. This
32782         fixes the leak and make Lupus' test run with > 4080 loops.
32783
32784 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32785
32786         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32787         Jerome Laban (bug #42287)
32788
32789 2003-05-02  Martin Baulig  <martin@ximian.com>
32790
32791         * debug-mono-symfile.h
32792         (MonoSymbolFile): Moved declaration into mono-debug.h.
32793         (MonoDebugMethodJitInfo): Likewise.
32794         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32795         argument.
32796         (_mono_debug_address_from_il_offset): Take a
32797         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32798
32799         * mono-debug.h
32800         (MonoDebugDomainData): New struct.
32801         (mono_debug_get_domain_data): New function.
32802         (mono_debug_add_method): Take an additional `MonoDomain *'
32803         argument.
32804         (mono_debug_source_location_from_address): Likewise.
32805         (mono_debug_il_offset_from_address): Likewise.
32806         (mono_debug_address_from_il_offset): Likewise.
32807
32808 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32809
32810         * reflection.c: one more check for null type in custom attrs.
32811
32812 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32813
32814         * reflection.c: avoid warning (comparison is always false due to limited
32815         range of data type).
32816
32817 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32818
32819         * icall.c: throw an exception in Type.GetField if the argument 'name'
32820         is NULL.
32821
32822 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32823
32824         * reflection.c: fixed handling of enums in named arguments to custom
32825         attributes (bug #42123).
32826
32827 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32828
32829         * reflection.c: use the right array element type and handle
32830         a null for a Type argument, too.
32831
32832 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32833
32834         * reflection.c: handle arrays as arguments to custom attributes.
32835
32836 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32837
32838         * reflection.c: handle a string value in a custom attr
32839         ctor that takes an object.
32840
32841 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32842
32843         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32844         (fix bug #42063)
32845
32846 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32847
32848         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32849
32850 2003-04-27  Martin Baulig  <martin@ximian.com>
32851
32852         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32853         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32854         MONO_DEBUGGER_EVENT_BREAKPOINT.
32855         (mono_breakpoint_trampoline_code): Removed.
32856         (mono_debugger_event_handler): The last argument is now a
32857         `guint32'.
32858         (mono_debugger_insert_breakpoint_full): Removed the
32859         `use_trampoline' argument.
32860         (mono_debugger_method_has_breakpoint): Likewise.
32861         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32862         mono_debugger_breakpoint_callback(); take the method and
32863         breakpoint number as arguments.
32864
32865 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32866
32867         * metadata.c: fix off by one when loading parameters attributes.
32868
32869 2003-04-24  Martin Baulig  <martin@ximian.com>
32870
32871         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32872
32873 2003-04-24  Martin Baulig  <martin@ximian.com>
32874
32875         * mono-debug-debugger.c: Moved all code which interacts with the
32876         Mono Debugger here.
32877
32878         * debug-mono-symfile.c: This code now just deals with the symbol
32879         file itself, the debugger code is now in mono-debug-debugger.c.
32880
32881 2003-04-23  Martin Baulig  <martin@ximian.com>
32882
32883         * mono-debug.c (mono_debug_source_location_from_il_offset):
32884         New method; like mono_debug_source_location_from_address(), but
32885         takes an IL offset instead of a machine address.
32886
32887 2003-04-23  Martin Baulig  <martin@ximian.com>
32888
32889         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32890         `line' field; this is now computed by the debugger.
32891
32892 2003-04-23  Martin Baulig  <martin@ximian.com>
32893
32894         * mono-debug.[ch]: New files.  This is the new debugging interface.
32895
32896         * mono-debug-debugger.[ch]: New files.  Moved all code which
32897         interacts with the Mono Debugger here.
32898
32899 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32900
32901         * domain.c (mono_init): initialize mono_defaults.monitor_class
32902
32903 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32904
32905         * reflection.c (method_encode_code): Add a spicy exception to help
32906         future compiler authors.
32907
32908 2003-04-21  Martin Baulig  <martin@ximian.com>
32909
32910         * icall.c
32911         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32912         Make this work with relative pathnames; g_filename_to_uri() needs
32913         an absolute filename.
32914
32915 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32916
32917         * icall.c: Track name changes in Object and ValueType.
32918
32919 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32920
32921         * metadata.c (mono_type_stack_size): size should be a multiple of
32922         sizeof (gpointer)
32923
32924 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32925
32926         * gc.c:
32927         (internal_domain_finalize): moved into mono_domain_finalize. No need
32928         to create another thread because the finalizers will be run in the
32929         finalizer thread.
32930         
32931         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32932         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32933         to be run (MS does this too).
32934
32935 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32936
32937         * object.c (mono_class_compute_gc_descriptor): Update comment.
32938
32939         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32940
32941         * image.h: Add synchronized wrapper cache.
32942
32943         * image.c (do_mono_image_open): Initialize cache.
32944
32945         * reflection.c (create_dynamic_mono_image): Initialize cache.
32946
32947 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32948
32949         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
32950         ves_icall_System_Buffer_ByteLengthInternal.
32951
32952 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32953
32954         * reflection.c: setup klass->nested_in earlier. Allow
32955         a dash in the assembly name.
32956
32957 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
32958
32959         * metadata.c (mono_type_to_unmanaged): dont access
32960         type->data.klass for MONO_TYPE_OBJECT
32961         (mono_type_to_unmanaged): consider System.Delegate class
32962
32963 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
32964
32965         * class.c: just setup supertypes in the proper place instead of
32966         initializing the full element class for arrays.
32967
32968 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32969
32970         * class.c: ensure the element class of arrays is initialized.
32971         Setup the supertype info for array classes, too.
32972
32973 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
32974
32975         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
32976
32977 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32978
32979         * Makefile.am: re-added -m option when running cygpath. This way,
32980         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
32981         separator.
32982         * mono-config.c: same codepath for locating mono config file for WIN32
32983         and the rest.
32984         * assembly.c: if mono_assembly_setrootdir is called, don't override
32985         the value set.
32986
32987 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32988
32989         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
32990         MONO_ASSEMBLIES variable.
32991
32992 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
32993
32994         * icall.c: added Assembly::GetNamespaces() icall.
32995
32996 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32997
32998         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
32999
33000 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
33001
33002         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
33003         * object.c: fixed bug in the construction of vtable for proxies
33004
33005 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
33006
33007         * object.c (mono_array_new): Mark mono_array_new as an icall.
33008
33009 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33010
33011         * class.c: fixed test for public method when overriding interfaces.
33012         Closes bug #40970.
33013
33014 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
33015
33016         * appdomain.h, domain.c: added mono_domain_foreach() to
33017         be able to access the currently loaded appdomains.
33018         * object.c: make string interning work across sppdomains.
33019         Mark some functions for use as icalls.
33020
33021 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
33022
33023         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
33024
33025         * reflection.h reflection.c: Allocate long living data using 
33026         GC_MALLOC_ATOMIC so the collector does not need to scan it.
33027
33028         * reflection.c: Double the allocation size in streams instead of
33029         increasing it, to prevent unneccesary copying on large assemblies.
33030         
33031         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
33032         creation if the assembly does not have the Run flag set.
33033
33034 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
33035
33036         * class.h: avoid the C++ keywords in header files (Jerome Laban
33037         spotted and fixed this).
33038
33039 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33040
33041         * object.c:
33042         (mono_unhandled_exception): fill in the arguments for the
33043         UnhandledException event. Only trigger that event for the default
33044         domain (as MS does).
33045
33046 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
33047
33048         * object.c: Improve typed allocation stuff based on suggestions from
33049         Paolo. Also turn it on if the GC library supports it.
33050
33051 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33052
33053         * object.c object.h class.h: Added experimental typed allocation
33054         facility using the interfaces in gc_gcj.h.
33055
33056         * os/gc_wrapper.h: Added new include files.
33057         
33058 2003-04-03  Martin Baulig  <martin@ximian.com>
33059
33060         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
33061         which is not yet enabled by default.
33062
33063         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
33064         functions.
33065         (mono_gc_lock, mono_gc_unlock): New static functions.
33066
33067         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
33068         functions; stop/start the world for the garbage collector.  This
33069         is using the windows API; we need to complete the SuspendThread()/
33070         ResumeThread() implementation in the io-layer to make this work on Unix.
33071         (mono_gc_push_all_stacks): New public function; tells the garbage
33072         collector about the stack pointers from all managed threads.
33073
33074 2003-04-03  Martin Baulig  <martin@ximian.com>
33075
33076         * object.h (MonoThread): Added `gpointer stack_ptr'.
33077
33078         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
33079
33080 2003-04-03  Martin Baulig  <martin@ximian.com>
33081
33082         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
33083
33084 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33085
33086         * reflection.c (typebuilder_setup_fields): Initialize field.first and
33087         field.last.
33088
33089 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
33090
33091         * loader.c (mono_lookup_internal_call): Report the corlib that is
33092         out of sync.
33093
33094 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
33095
33096         * icall.c (ves_icall_type_GetTypeCode): fixed check for
33097         System.DBNull (it's class not valuetype).
33098
33099 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
33100
33101         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
33102         if the array method was already assigned a token (fixes bug#40646).
33103
33104 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
33105
33106         * reflection.c (mono_reflection_get_type): Attempt type resolve even
33107         if no assembly is given.
33108
33109 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
33110
33111         * metadata.h: Added the new tables.
33112
33113         * row-indexes.h: Added definitions for new tables.
33114
33115         * metadata.c: Add schemas for new tables, and add support for
33116         computing the sizes of them.
33117
33118         * class.c: Update for handling the new type cases.
33119
33120 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
33121
33122         * metadata.h (MONO_TYPE_IS_VOID): new macro
33123
33124 2003-03-31  Martin Baulig  <martin@ximian.com>
33125
33126         * threads.h (MonoThreadCallbacks): Added `thread_created'.
33127
33128         * threads.c (mono_thread_new_init): Call `thread_created' in the
33129         mono_thread_callbacks.
33130
33131 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
33132
33133         * loader.h: added marshalbyrefobject_class to mono_defaults
33134         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
33135         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
33136           generation of output parameters.
33137           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
33138         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
33139           contextbound and the target object belongs to the context of the caller.
33140         * object.h: added context and unwrapped_server variables in MonoRealProxy.
33141         * object.c: Implemented support for interfaces and abstract classes
33142           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
33143           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
33144
33145 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
33146
33147         * class.h class.c (mono_class_is_subclass_of): New function.
33148         
33149         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
33150         routines for most common case (calls from ArrayList::ToArray).
33151
33152         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
33153         routine so programs which call Environment::Exit() can be profiled.
33154
33155         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33156         Added MONO_ARCH_SAVE_REGS.
33157
33158         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33159
33160 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33161
33162         * blob.h: Add a couple of new MonoType types definitions.
33163
33164         * tabledefs.h: Add a couple of new call convs.
33165
33166 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33167
33168         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33169         the layout of the class.
33170
33171         * reflection.c (alloc_table): double the size on overflow to avoid
33172         unnecessary copying.
33173
33174         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33175         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33176         null so it can be garbage collected.
33177         
33178 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33179
33180         * reflection.c (mono_reflection_get_type): Return the resolved type
33181         only if it is in the assembly we searched.
33182
33183         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33184
33185         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33186         method.
33187
33188 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33189
33190         * appdomain.c:
33191         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33192         the right one is 'file:///blah', but MS allows it.
33193         * assembly.c:
33194         (mono_assembly_open): allow 'file://blah'
33195
33196         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33197
33198 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33199
33200         * socket-io.c: fixes bug #40310.
33201
33202 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33203
33204         * reflection.c (mono_reflection_parse_type): handle deeply nested
33205         types correctly.
33206
33207         * reflection.c (mono_image_create_token): Use unique token values
33208         since they will be put into a hash table.
33209
33210         * class.c (mono_class_setup_vtable): If a method occurs in more than
33211         one place in the vtable, and it gets overriden, then change the
33212         other occurances too.
33213
33214         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33215         object as return type.
33216
33217 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33218
33219         * icall.c: Deleted "ToString" implementation for double and float
33220         because they are full implemented in managed code.
33221
33222 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33223
33224         * reflection.c, reflection.h: implemented and exported functions
33225         to retrieve info about custom attributes.
33226
33227 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33228
33229         * appdomain.c: moved Uri handling to assembly.c
33230         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33231         work when using a file Uri in *nix and windows.
33232
33233         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33234         GetReferencedAssemblies.
33235
33236 2003-03-18  Dick Porter  <dick@ximian.com>
33237
33238         * icall.c: Rename a couple of internal calls
33239
33240         * threads.c: Set the thread state to Stopped when a thread exits.
33241         Fixes bug 39377.
33242
33243 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33244
33245         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33246         New icall.
33247
33248         * object.c (mono_class_vtable): fix warning.
33249
33250 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33251
33252         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33253
33254         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33255         memory.
33256         (method_encode_clauses): Create exception info structures in the right
33257         order.
33258         (mono_reflection_setup_internal_class): Initialize supertypes field.
33259
33260         * class.c object.c: Handle interfaces which implement other interfaces 
33261         correctly.
33262
33263         * class.h class.c: Move the supertypes array initialization code into 
33264         a separate function so it can be used for dynamic types too. Also call
33265         it earlier, in mono_class_init(), since it can be used before the
33266         type is initialized.
33267
33268 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33269
33270         * Makefile.am:
33271         * assembly.c:
33272         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33273
33274         * appdomain.c:
33275         * appdomain.h:
33276         * marshal.c:
33277         * object.c: remove warnings.
33278
33279 2003-03-13  Martin Baulig  <martin@ximian.com>
33280
33281         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33282         (MonoDebugLexicalBlockEntry): New types.
33283
33284         * debug-mono-symfile.c
33285         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33286
33287 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33288
33289         * process.c: ret can be any non-zero value accroding to MS doc.
33290
33291 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33292
33293         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33294         fixing a warning for a miss-used prototype, would have cause
33295         random memory corruption.
33296
33297 2003-03-07  Martin Baulig  <martin@ximian.com>
33298
33299         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33300         getting really annoying ....
33301
33302 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33303
33304         * reflection.c (fixup_method): added support for array methods.
33305
33306 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33307
33308         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33309         (pointed out by Michael Adams).
33310
33311 2003-03-04  Dick Porter  <dick@ximian.com>
33312
33313         * icall.c: Temporarily reverted the Double and Single ToString()
33314         change, because it broke nunit.
33315
33316 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33317
33318         * object.h, threads.h: make include files compatible with C++
33319         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33320
33321 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33322
33323         * icall.c: Erased ToString helper functions for Double and Single.
33324         Now, that implementations ar all in managed code (Double and Single
33325         Formatters).
33326
33327 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33328
33329         * appdomain.c: Added method for initializing the default context of
33330         a domain. Added internal call for getting the default context.
33331         * appdomain.h: Added context variable in MonoDomain struct.
33332         * domain.c: mono_domain_set also sets the default context of the domain
33333         * icall.c: Mapped internal method InternalGetDefaultContext.
33334         * object.c: mono_object_get_virtual_method returns always a remoting
33335         wrapper if the object is a transparent proxy.
33336         mono_runtime_invoke_array: when creating an object by calling the
33337         constructor, if the created object is a proxy, then the constructor should
33338         be called using the a remoting wrapper.
33339
33340 2003-03-03  Dick Porter  <dick@ximian.com>
33341
33342         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33343         variable so it compiles on solaris.  Problem spotted by
33344         Christopher Taylor <ct@cs.clemson.edu>
33345
33346 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33347
33348         * appdomain.c:
33349         (get_info_from_assembly_name): don't leak value.
33350
33351         * icall.c:
33352         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33353         result.
33354
33355 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33356
33357         * assembly.c: export mono_image_load_references ().
33358         * class.c: handle function pointers. mono_class_from_name() now
33359         supports nested type names directly.
33360
33361 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33362
33363         * reflection.h reflection.c: Encode already created dynamic methods 
33364         and fields correctly as a DEF instead of a REF.
33365
33366         * reflection.c: Get rid of the force_ref argument to 
33367         mono_image_typedef_or_ref since it was wrong in the first place.
33368
33369         * string-icalls.c: add error checking to string constructors according
33370         to the MSDN docs.
33371
33372         * reflection.c: Emit types in the order their TypeBuilders were 
33373         created. Previously, a new table index was assigned to each type before
33374         the tables were emitted. This was wrong because the signature blob
33375         might already refer to a type by its original table index.
33376
33377 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33378
33379         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33380         change.
33381         
33382 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33383
33384         * Makefile.am: make assemblies dir have \ instead of / on windows.
33385
33386 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33387
33388         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33389         iterate over the NESTEDCLASS table using a linear search since the
33390         table is not guaranteed to be sorted by the secondary key.
33391
33392         * class.c (mono_class_create_from_typedef): fixed up call to
33393         mono_metadata_nesting_typedef.
33394         
33395 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33396
33397         * marshal.c (mono_string_to_byvalstr): clear the memory as
33398         suggested by Jerome Laban <jlaban@wanadoo.fr>
33399
33400 2003-02-26  Dick Porter  <dick@ximian.com>
33401
33402         * process.c: Cope with padding in .rsrc blocks
33403
33404 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33405
33406         * metadata.h: reverted the filter_len change, it breaks reflection
33407         
33408 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33409
33410         * metadata.h: added a new field to store the filter_len
33411         
33412
33413 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33414
33415         * reflection.c: handle custom attributes for types and members
33416         created with Reflection.Emit (bug#38422).
33417
33418 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33419
33420         * reflection.c: define RTSpecialName automatically for constructors for
33421         compatibility with MS.NET.
33422
33423         * reflection.c (mono_reflection_create_runtime_class): initialize
33424         nested_in field of dynamically created classes.
33425
33426 2003-02-22  Martin Baulig  <martin@ximian.com>
33427
33428         * debug-mono-symfile.h: Incremented version number.
33429
33430 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33431
33432         * object.h icall.c process.c: fix warnings.
33433
33434 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33435
33436         * appdomain.h appdomain.c:
33437         (mono_domain_try_type_resolve): split the 
33438         name_or_tb argument into a name and a tb argument.
33439         (mono_domain_has_type_resolve): new function to check whenever the
33440         application has registered a TypeResolve event handler.
33441         
33442         * icall.c reflection.h reflection.c: move the type resolve logic into
33443         mono_reflection_get_type () so it will be invoked when 
33444         Assembly::GetType () is called.
33445
33446         * reflection.c:
33447         (mono_reflection_get_type): renamed to get_type_internal.
33448         (mono_reflection_get_type): fixed type name generation so it works 
33449         for nested types too.
33450         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33451         costly type name generation if there is no resolve event handler.
33452
33453 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33454
33455         * class.c, image.c: load exported types from file references.
33456
33457 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33458
33459         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33460           used to cache the managed methods used to create proxies and make 
33461           remote invocation of methods.
33462         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33463           to be remotely created.
33464         * object.c: Modified the method mono_class_vtable(). It now initializes 
33465           the remote flag of the vtable. Modified mono_object_new_specific(), 
33466           so now it checks the remote flag.
33467         * icall.c: Added a couple of internal methods, one for enabling instance 
33468           creation interception for a type, and one for creating objects bypassing
33469           the remote check.
33470
33471 2003-02-18  Martin Baulig  <martin@ximian.com>
33472
33473         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33474         New interncall to get a method's metadata token.
33475
33476         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33477         New interncall for the debugger.
33478
33479 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33480
33481         * class.c (mono_class_setup_vtable): allocate supertype array
33482
33483 2003-02-18  Martin Baulig  <martin@ximian.com>
33484
33485         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33486
33487 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33488
33489         * reflection.c:
33490         (assembly_name_to_aname): jump over unknown properties (i've found
33491         something like: 'type, assembly, version=xxx, custom=null, public...',
33492         so now will ignore custom=null and still get the rest of the values).
33493
33494 2003-02-17  Dick Porter  <dick@ximian.com>
33495
33496         * threads.c: Have Thread.Start() wait for a semaphore to signal
33497         that the thread has set up all its local data.  This fixes bug
33498         34323, where Abort() raced the new thread's TLS data.
33499
33500         Also removes the handle_store() call from start_wrapper, because
33501         threads are now always created suspended and there is no longer a
33502         race between the parent and child threads to store the info.
33503
33504 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33505
33506         * image.c: explain the #- heap issue in a message, hopefully
33507         avoiding FAQs on mono-list.
33508
33509 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33510
33511         * icall.c:
33512         (GetEntryAssembly): if the domain has not invoked
33513         AppDomain.ExecuteAssembly yet, return the assembly of the default
33514         AppDomain.
33515
33516 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33517
33518         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33519
33520 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33521
33522         * metadata.c, reflection.c: simple speedup to type hash
33523         and equals code.
33524
33525 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33526
33527         * image.c, image.h, class.c, assembly.c: move module loading
33528         to MonoImage. When loading metadata, consider alignemnet from
33529         the start of metadata, not from the metadata address in memory.
33530
33531 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33532
33533         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33534         AssemblyBuilder objects. Factored out custom attribute creation into
33535         a separate function.
33536         (create_custom_attr): new function to create custom attributes.
33537
33538 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33539
33540         * Makefile.am: Got tired of typing the full pathname to pedump.
33541         Until there is another option, am installing this.
33542
33543 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33544
33545         * class.c (class_compute_field_layout): always set field->parent 
33546         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33547
33548 2003-02-11  Dick Porter  <dick@ximian.com>
33549
33550         * threads-types.h:
33551         * monitor.c: Rewrote Monitor, making lock much faster and
33552         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33553         creates them as needed.
33554
33555         * exception.c: Added SynchronizationLockException
33556
33557         * threads.c: Deleted old Monitor implementation.  The new one is
33558         in a new file.
33559
33560 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33561
33562         * class.c: handled TypedReference type code. Set the correct size for
33563         class data. Setup interface_offsets for interface classes, too.
33564
33565 2003-02-09  Martin Baulig  <martin@ximian.com>
33566
33567         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33568
33569 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33570
33571         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33572         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33573         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33574         * verify.c: check for code that runs after the end of the method.
33575
33576 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33577
33578         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33579         "System.Math::Round2".
33580         * sysmath.h: Added Floor, Round and Round2 definitions.
33581         * sysmath.c: Modified certain functions that were not 100% compliant
33582         with MS.NET (math precision) and added the implementation of Floor,
33583         Round and Round2.
33584
33585 2003-02-07  Martin Baulig  <martin@ximian.com>
33586
33587         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33588
33589 2003-02-07  Martin Baulig  <martin@ximian.com>
33590
33591         * debug-mono-symfile.c: Reflected latest symwriter changes.
33592         (mono_debug_create_mono_symbol_file): Removed.
33593         (mono_debug_open_mono_symbol_file): Take an argument which
33594         specifies whether to create a dynamic symbol file.
33595
33596 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33597
33598         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33599
33600 2003-02-05  Martin Baulig  <martin@ximian.com>
33601
33602         * reflection.c (mono_image_build_metadata): Make this public,
33603         protect it against being called multiple times, don't create
33604         resources and don't build the compressed metadata here.
33605         (mono_image_create_pefile): Do this here.
33606
33607         * icall.c
33608         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33609
33610 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33611
33612         * socket-io.c: fixed bug #36322.
33613
33614 2003-02-06  Piers Haken <piersh@friskit.com>
33615
33616         * appdomain.[ch]:
33617         * class.h:
33618         * debug-mono-symfile.c:
33619         * icall.c:
33620         * loader.c:
33621         * mono-config.c:
33622         * monosn.c:
33623         * reflection.c:
33624         * socket-io.c: warning cleanups
33625
33626 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33627
33628         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33629         function. works like remoting invoke, but does a check for the Proxy first.
33630
33631 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33632
33633         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33634
33635 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33636
33637         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33638         array of pointers.
33639         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33640         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33641
33642         * object.c (mono_store_remote_field_new): used by the new jit
33643         instead of mono_store_remote_field
33644         (mono_load_remote_field_new): used by the new jit
33645         instead of mono_load_remote_field
33646
33647 2003-02-05  Patrik Torstensson
33648
33649         * appdomain.c: changed unload to take the domain id instead
33650         of domain
33651         
33652         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33653
33654
33655 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33656
33657         * appdomain.c: don't look for assemblies in ApplicationBase if
33658         PrivateBinPathProbe is set.
33659
33660 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33661
33662         * object.c: make the first argument in main_args contain the absolute
33663         path to the assembly. Fixes bug #37511.
33664
33665 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33666
33667         * icall.c: get correct UTC offset for countries not using daylight
33668         time saving. Fixes bug #30030.
33669
33670 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33671
33672         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33673         and 1 are the family).
33674
33675 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33676
33677         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33678
33679         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33680
33681 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33682
33683         * reflection.c: added support for SignatureHelper tokens, which is
33684         needed by the Calli opcode.
33685
33686         * reflection.h: track changes to SignatureHelper class.
33687
33688         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33689
33690 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33691
33692         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33693
33694 2003-02-03  Patrik Torstensson
33695         * appdomain.[c|h], domain.c : 
33696          - Added support for getting a domain via domain id
33697          - Support for setting and getting domain from System.AppDomain 
33698            (used in cross appdomain channel)
33699          - Added support for get/set for a MonoAppContext on a thread 
33700            (Context class in System.Runtime.Remoting.Contexts),
33701          - Removed hack in Get/SetData and ExecuteAssembly.
33702         
33703         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33704         the managed world to get control when a proxy is created.
33705
33706         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33707         
33708 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33709
33710         * icall.c
33711         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33712         Populate the codebase field as well.
33713
33714 2003-02-02  Martin Baulig  <martin@ximian.com>
33715
33716         * debug-mono-symfile.c
33717         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33718         (mono_debug_symfile_add_method): Allow interncalls.
33719
33720 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33721
33722         * icall.c: throw parse exception if strtod fails or the string is empty.
33723
33724 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33725
33726         * marshal.c: handle object type separately from defined
33727         class types.
33728
33729 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33730
33731         * marshal.c: handle NATIVE_LPSTR for strings when it's
33732         explicitly specified.
33733
33734 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33735
33736         * reflection.c, reflection.h, icall.c: setup the reflection
33737         handle cache for ModuleBuilders and AssemblyBuilders.
33738
33739 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33740
33741         * reflection.c (reflection_methodbuilder_to_mono_method): set
33742         pinvoke flag
33743
33744 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33745
33746         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33747
33748 2003-01-29  Dick Porter  <dick@ximian.com>
33749
33750         * threads.c: No need for the fake_thread kludge now that Thread
33751         doesn't run a class constructor
33752         
33753 2003-01-29  Dick Porter  <dick@ximian.com>
33754
33755         * threads.c: Use g_direct_hash instead of the rather bogus
33756         g_int_hash
33757
33758 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33759
33760         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33761         (fix pinvoke12.exe)
33762         (mono_marshal_get_struct_to_ptr): generate valid IL code
33763         (mono_marshal_get_ptr_to_struct): generate valid IL code
33764         (*): correctly set sig->pinvoke, we need to memdup the signature
33765         to do that
33766
33767 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33768
33769         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33770         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33771
33772 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33773
33774         * profiler.c: provide more callers information.
33775
33776 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33777
33778         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33779
33780         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33781
33782         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33783
33784 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33785
33786         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33787         exception instead of going into an infinite loop on dates which it 
33788         can't yet handle.
33789
33790         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33791         out-of-range exception if needed.
33792
33793         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33794         an implementation for an interface method and to override an inherited
33795         method at the same time. 
33796         Imagine a scenario when a virtual method is used to override a
33797         virtual abstract method in a parent class, and this same method 
33798         provides an implementation for an method inherited from an interface. 
33799         In this case, the interface resolution code will set im->slot, which 
33800         means that the virtual method override pass will skip this method 
33801         which means a pointer to the abstract method inherited from the parent
33802         will remain in the vtable of this non-abstract class.
33803
33804         * class.c: (mono_class_setup_vtable): continue search for a real 
33805         method if only an abstract method is found.     
33806
33807 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33808
33809         * reflection.c: add size to encoding for ByValStr and ByValArray
33810         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33811
33812 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33813
33814         * class.c (mono_class_setup_vtable): pass the override info as an
33815         argument.
33816
33817         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33818         correctly.
33819         
33820         * reflection.c (ensure_runtime_vtable); add support for method 
33821         overrides.
33822         
33823 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33824
33825         * reflection.c (resolution_scope_from_image): Hack to work to work with
33826         dynamic assemblies.
33827
33828         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33829         added a 'force_ref' argument to force this function to allways return 
33830         a TypeRef. This is needed by mono_image_get_memberref_token ().
33831         
33832 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33833
33834         * reflection.c (mono_image_get_type_info): interfaces really don't have
33835         a parent.
33836
33837         * reflection.c (mono_image_basic_init): fill out missing fields of
33838         image structure.
33839
33840         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33841         dynamic assemblies. This is required so dynamic assemblies show up in
33842         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33843         Type::GetType() etc. This is consistent with MS behaviour.
33844
33845         * image.c image.h reflection.c: add newly created classes to the name 
33846         cache so mono_class_get () will find them.      
33847
33848 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33849
33850         First part of changes to get IKVM.NET running under mono.
33851         
33852         * appdomain.h, appdomain.c: added new function 
33853         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33854         This function will call AppDomain::DoTypeResolve to do the actual work.
33855
33856         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33857         moved existing code dealing with dynamic tokens to a new function 
33858         called mono_reflection_lookup_dynamic_token (). This function will 
33859         raise TypeResolve events when appropriate. Since reflection.c is not 
33860         part of libmetadata, a new hook function called 
33861         mono_lookup_dynamic_token() is added to class.c which will call this.
33862
33863         * assembly.h assembly.c: make the invoke_load_hook function public,
33864         so it can be called for dynamic assemblies.
33865
33866         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33867
33868         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33869         type isn't found.
33870
33871         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33872         MonoGHashTable, since it contains pointers to objects which the GC 
33873         needs to track.
33874
33875         * assembly.c (search_loaded): remove unused variable.
33876         
33877 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33878
33879         * object.c: fixed issue exposed by gcc-generated IL programs
33880         that use RVA data for pointers.
33881
33882 2003-01-25  Martin Baulig  <martin@ximian.com>
33883
33884         * threads.c (start_wrapper): Moved the initialization of
33885         `start_func' above the mono_new_thread_init() call to which we
33886         pass it as argument.
33887
33888 2003-01-24  Martin Baulig  <martin@ximian.com>
33889
33890         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33891         the MonoThread pointer.
33892
33893 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33894
33895         * icall.c: Rename `PowImpl' to Pow.
33896
33897 2003-01-23  Dick Porter  <dick@ximian.com>
33898
33899         * threads.c (start_wrapper): Create a Thread object if needed, so
33900         the Main() thread can do the class initialisation in a subthread
33901         that has been set up to allow managed code execution.
33902
33903         Pass the thread ID instead of the MonoThread pointer to the thread
33904         start and attach callbacks.  This change is required, because the
33905         jit thread start callback must be called _before_ the Thread
33906         object can be created.
33907         
33908         (mono_thread_init): Removed much object creation code that is no
33909         longer needed.  No managed code is called from here now.
33910
33911         * object.c (mono_runtime_exec_managed_code): Create a subthread
33912         for Main, and call back to the runtime to use it.
33913         Set the exit code when Main exits.
33914
33915         * gc.c: Make sure domain finalisation happens in a subthread.
33916         Re-enable threaded GC, fixing bug 31333 (again).
33917
33918         * environment.c: System.Environment internall calls (so far just
33919         ExitCode is here, the others are still in icall.c)
33920
33921         * appdomain.c (mono_runtime_cleanup): All threads running managed
33922         code should have finished before mono_runtime_cleanup() is
33923         reached, so no need to clean up threads.
33924
33925 2003-01-22  Martin Baulig  <martin@ximian.com>
33926
33927         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33928         `gpointer func' arguments.      
33929         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33930         but added `MonoThread *thread' argument.
33931         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33932
33933         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33934         and pass it to the mono_thread_start_cb callback.
33935         (mono_install_thread_callbacks): New public function to install a
33936         set of callbacks which are set by the debugger.
33937         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33938
33939 2003-01-22  Martin Baulig  <martin@ximian.com>
33940
33941         * Makefile.am: Install debug-mono-symfile.h.
33942
33943 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
33944
33945         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
33946
33947 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
33948
33949         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
33950         * class.c (mono_ptr_class_get): correctly set access levels of pointers
33951         (mono_array_class_get): correctly set access levels of arrays
33952
33953 2003-01-20      Patrik Torstensson
33954         * image.h (MonoAssemblyName): changed major, minor, build, revision
33955         from signed to unsigned.
33956
33957 2003-01-20  sean kasun <skasun@azstarnet.com>
33958
33959         * reflection.c (load_cattr_value): Now this handles
33960         MONO_TYPE_SZARRAY.  Fixes bug #35629
33961
33962 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
33963
33964         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
33965         integer value
33966
33967 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33968
33969         * decimal.c: fixed bug #26056.
33970
33971 2003-01-17  Martin Baulig  <martin@ximian.com>
33972
33973         * gc.c: Raise an ExecutionEngineException instead of using g_error().
33974
33975 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33976
33977         * exception.[ch]:
33978         (mono_get_exception_type_initialization): new function.
33979
33980         * object.c: throw a TypeInitializationException when an exception is
33981         thrown invoking the class constructor.
33982
33983 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33984
33985         * reflection.c: fixed attribute reading.
33986
33987 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33988
33989         * icall.c:
33990         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
33991         provided, look for the type in the calling assembly and then in
33992         mscorlib; if the assembly name is provided, only try that one.
33993
33994 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
33995
33996         * object.c: register the vtable before there is a chance it's
33997         queried again recursively.
33998
33999 2003-01-13  Duncan Mak  <duncan@ximian.com>
34000
34001         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
34002         gc-internal.h. 
34003         
34004 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
34005
34006         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
34007
34008 2003-01-11  Martin Baulig  <martin@ximian.com>
34009
34010         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
34011         this to 20 for the release.
34012
34013 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
34014
34015         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
34016
34017         * loader.c (mono_method_get_marshal_info): bug fix
34018
34019         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
34020         structures with explicit layout
34021
34022 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34023
34024         * profiler.c: made the output more readable (and sorted). 
34025         Added caller information for the allocation profiler.
34026
34027 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
34028
34029         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
34030
34031 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34032
34033         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
34034         to get value types.
34035         
34036 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
34037
34038         * object.c, profiler.h, profiler.c, profiler-private.h:
34039         Added object allocation profiler.
34040
34041 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
34042
34043         * reflection.h, reflection.c: handle global methods.
34044         Compress blob entries.
34045
34046 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
34047
34048         * marshal.c: fix compilation.
34049
34050 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
34051
34052         * loader.c (mono_method_get_marshal_info): impl.
34053
34054         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
34055
34056 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34057
34058         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
34059         for reference types.
34060
34061 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
34062
34063         * loader.c: fixed off by one error in loaded parameter names.
34064
34065 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
34066
34067         * marshal.c (mono_marshal_get_icall_wrapper): like
34068         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
34069         instead of a MonoMethod.
34070
34071 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34072
34073         * decimal.c: fixed bug #36537.
34074
34075 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
34076
34077         * marshal.c: throw a missing method exception if a
34078         P/Invoke method is not found.
34079
34080 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34081
34082         * icall.c: allow a null this for constructors.
34083
34084 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
34085
34086         * icall.c: raise the proper exceptions if the arguments to the
34087         internal Invoke are incorrect.
34088
34089 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
34090
34091         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
34092
34093 2003-01-03  Martin Baulig  <martin@ximian.com>
34094
34095         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34096
34097 2002-12-31  Martin Baulig  <martin@ximian.com>
34098
34099         * debug-mono-symfile.c: Completely rewrote the type section.
34100         Instead of using individual malloc()ed fields, we use one big
34101         continuous memory area and offsets into this area.
34102         See the comments in the source code for details.
34103
34104 2002-12-30  Martin Baulig  <martin@ximian.com>
34105
34106         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
34107
34108 2002-12-30  Martin Baulig  <martin@ximian.com>
34109
34110         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
34111         line number table in this data blob instead of using an external
34112         pointer.
34113
34114 2002-12-28  Martin Baulig  <martin@ximian.com>
34115
34116         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34117
34118 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
34119
34120         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
34121         as a boxed return type.
34122
34123 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
34124
34125         * appdomain.c
34126         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
34127         g_build_filename to properly get separators on the filename created.
34128
34129         * object.h: Small change, introduce MonoMarshalByRefObject to
34130         track the layout of that structure in the C# universe as we make
34131         changes there.
34132
34133 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
34134
34135         * object.c: removed assert to allow static fields on interfaces.
34136         * loader.c: a TypeSpec may be used for any type, not just arrays.
34137
34138 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34139
34140         * class.c, class.h: added mono_class_array_element_size ().
34141         Ignore static methods in interfaces.
34142
34143 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34144
34145         * threads.c: fixed the build under cygwin.
34146
34147 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34148
34149         * reflection.c: handle nullref constants. Allocate keys for
34150         reflection handles with the GC.
34151
34152 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34153
34154         * threads.c, threads.h: added mono_thread_get_abort_signal()
34155         to get a suitable signal for thread abort.
34156
34157 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34158
34159         * metadata.c: fix handling of ExportedType table.
34160
34161 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34162
34163         * icall.c: added WriteWindowsDebugString internal call.
34164
34165 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34166
34167         * reflection.h: added fields to match C# implementation.
34168
34169 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34170
34171         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34172
34173 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34174
34175         * gc.h, gc-internal.h: Rename header for GC internal calls to
34176         gc-internal.h from gc.h as to not clash with Boehm GC having its
34177         header installed as <gc.h> in outside include paths.
34178         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34179         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34180
34181 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34182
34183         * icall.c: assign minor, build and revision in FillName.
34184
34185 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34186
34187         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34188         Added support for running code generated by Reflection.Emit.
34189
34190 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34191
34192         * appdomain.c: check for NULL argument in LoadFrom.
34193
34194 2002-12-10  Dick Porter  <dick@ximian.com>
34195
34196         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34197
34198 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34199
34200         * appdomain.c: fix buglet when building exe file name.  Handle full
34201         assembly name (needed after latest changes to AssemblyName).
34202         * image.c:
34203         (mono_image_close): free some hashtables.
34204
34205 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34206
34207         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34208         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34209         on some systems (redhat 7.3) 
34210
34211 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34212
34213         * threads.c: delete the critical section of a sync block,
34214         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34215
34216 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34217
34218         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34219
34220 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34221
34222         * appdomain.[ch]: handle the assembly preload event to try loading the
34223         assemblies using the paths we have in the current domain.
34224
34225         * assembly.[ch]: created an assembly preload hook that is called to try
34226         loading the assembly by other means that the ones provided here.
34227
34228         * domain.c: initialize the domain search path.
34229
34230         From now on, assemblies (TODO: except corlib and System) are loaded
34231         according to these rules when using mono_assembly_load ():
34232
34233                 1. It tries to load the assembly from the ApplicationBase
34234                 of the current domain appending .dll and .exe (TODO: have to
34235                 try loading from name/name.dll and name/name.exe).
34236
34237                 2. It tries the search path specified in PrivateBinPath for the
34238                 current domain (if any).
34239
34240                 3. Previous behavior.
34241
34242 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34243
34244         * icall.c: implemented GetInterfaceMap() related icall.
34245         * domain.c, loader.h: load MethodInfo in mono_defaults.
34246
34247 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34248
34249         * gc.c: disable the finalizer thread for now, untill all the issues
34250         with it are resolved.
34251
34252 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34253
34254         * string-icalls.c: handle embedded nulls in string ctor when the
34255         length is specified.
34256
34257 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34258
34259         * class.c: look for explicit interface implementation in parent
34260         classes, too.
34261
34262 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34263
34264         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34265
34266 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34267
34268         * gc.c: protect handles with a critical section.
34269
34270 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34271
34272         * icall.c:
34273         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34274         parameters. If no assembly specified, try getting the type from all
34275         the assemblies in the current domain, else, load the assembly and get
34276         the type from it.
34277
34278 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34279
34280         * marshal.c: applied patch from Aleksey Demakov that fixes
34281         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34282
34283 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34284
34285         * icall.c: fixed get_location.
34286
34287 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34288
34289         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34290         declarations to make it work with older gcc. 
34291
34292         * loader.c (mono_get_method): set signature->pinvoke for native calls
34293
34294 2002-11-20  Dick Porter  <dick@ximian.com>
34295
34296         * threads.c (mono_thread_init): Set the main thread's handle
34297
34298 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34299
34300         * gc.c: allow compilation without GC support. Changed to match the
34301         mono coding style.
34302
34303 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34304
34305         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34306
34307 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34308
34309         * reflection.c: set a public key token on the core assemblies.
34310
34311 2002-11-18  Dick Porter  <dick@ximian.com>
34312
34313         * threads.c: Split out some thread initialisation so that other
34314         files can set the start callback function.
34315
34316         * gc.c: Run finalisers in a separate thread, to avoid stack
34317         overflow.  Fixes bug 31333.
34318
34319         * appdomain.c: Set up GC finalisation thread.
34320
34321         * reflection.c: 
34322         * object.c: 
34323         * domain.c: Use gc.h macros for GC_malloc
34324         
34325 2002-11-15  Dick Porter  <dick@ximian.com>
34326
34327         * threadpool.c: 
34328         * threads.c:
34329         * appdomain.c: Removed mono_runtime_init_with_attach(),
34330         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34331         merging the extra parameter with the existing function.  Removed
34332         unneeded code in mono_thread_attach().
34333
34334 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34335
34336         * image.c (mono_image_loaded_by_guid): a method to get loaded
34337         images by guid. 
34338         (load_metadata_ptrs): we store the guid as string.
34339
34340 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34341
34342         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34343
34344         * metadata.c (mono_guid_to_string): imported method form Zoltan
34345         Varga (slightly modified)
34346
34347         * assembly.c (mono_assembly_open): load precompiled code
34348
34349         * loader.h (MonoMethod): we store the method token for use in the
34350         aot compiler. 
34351
34352 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34353
34354         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34355         the hook function called when an assembly is loaded.
34356         
34357         * domain.c: Modified file.
34358         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34359
34360         Fixes bug #33196.
34361
34362 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34363
34364         * reflection.c: Map PEFileKind to the value expected by the WinNT
34365         image loader. 
34366
34367 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34368
34369         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34370         Read until the buffer is filled completely.
34371
34372 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34373
34374         * icall.c: implemented MonoType.InternalGetEvent ().
34375
34376 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34377
34378         * appdomain.c: implemented InitAppDomainSetup. Delayed
34379         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34380         the entry_assembly.
34381
34382         * assembly.c: base_dir is now an absolute path ending with
34383         G_DIR_SEPARATOR.
34384
34385         * icall.c: modified get_location according to the above changes.
34386
34387         * object.c: init AppDomain.SetupInformation for the default domain after
34388         we have the entry assembly.
34389
34390         * domain.c: when unloading a domain, setup = NULL.
34391
34392 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34393
34394         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34395
34396 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34397
34398         * object.h, object.c: introduced mono_object_get_virtual_method ()
34399         to lookup the method invoked on an object when a callvirt is done on
34400         a method.
34401         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34402
34403 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34404
34405         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34406         current domain when loaded an assembly and failed to load it.
34407
34408         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34409
34410 2002-10-31  Dick Porter  <dick@ximian.com>
34411
34412         * icall.c: 
34413         * file-io.h: 
34414         * file-io.c: Return the error status in a parameter, as the
34415         GetLastError() value has long since been blown away if we try and
34416         look it up in a subsequent internal call invocation.  Delete the
34417         GetLastError() internal call, because it's useless.
34418
34419 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34420
34421         * class.[ch]: added cast_class to fix bug 29517
34422
34423 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34424
34425         * marshal.c: create valid IL code in the filter clause:
34426         the new JIT is less forgiving:-)
34427
34428 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34429
34430         * icall.c: removed get_property internal call.
34431
34432 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34433
34434         * appdomain.h domain.c: Added an ID to appdomains.
34435         
34436         * threads.c threads.h icall.c: Implement icall
34437         Thread:GetDomainID(), and remove unused icall 
34438         CurrentThreadDomain_internal.
34439
34440 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34441
34442         * icall.c: Don't recurse through the base types in GetConstructor.
34443         Fixes bug #32063. 
34444
34445 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34446
34447         * mempool.h, mempool.c: added mono_mempool_empty() and
34448         mono_mempool_stats().
34449
34450 2002-10-23  Dick Porter  <dick@ximian.com>
34451
34452         * file-io.c: 
34453         * file-io.h: 
34454         * icall.c: Added MonoIO.GetFileType internal call
34455
34456 2002-10-17  Dick Porter  <dick@ximian.com>
34457
34458         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34459         delegate semaphore before waiting for all threads to finish,
34460         because new threads can also call async delegates.  Fixes bug
34461         32004.
34462
34463         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34464         of 3 seconds, in case another async job is queued.  (This part is
34465         needed because the bug fix reintroduced the 3s exit lag.)  This
34466         makes the mono_runtime_shutdown flag superfluous.
34467
34468 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34469
34470         * reflection.c: include ehader size in method section headers.
34471         Really check for suplicated modules entries.
34472
34473 2002-10-17  Martin Baulig  <martin@gnome.org>
34474
34475         * debug-mono-symfile.c: Added back support for locals.
34476
34477 2002-10-14  Martin Baulig  <martin@gnome.org>
34478
34479         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34480         MONO_TYPE_VOID.
34481
34482 2002-10-14  Martin Baulig  <martin@gnome.org>
34483
34484         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34485         mono_class_get() instead of looking in the class cache. 
34486
34487 2002-10-13  Martin Baulig  <martin@gnome.org>
34488
34489         * debug-mono-symfile.c: Set version number to 28, include the
34490         signature in method names.
34491
34492 2002-10-13  Martin Baulig  <martin@gnome.org>
34493
34494         * debug-mono-symfile.h: Set version number to 27.
34495
34496 2002-10-11  Martin Baulig  <martin@gnome.org>
34497
34498         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34499
34500 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34501
34502         * metadata.c, metadata.h: added helper function to allocate signatures.
34503
34504 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34505
34506         * icall.c: added internal call to get the location of machine.config.
34507
34508 2002-10-08  Martin Baulig  <martin@gnome.org>
34509
34510         * debug-mono-symfile.c: Ignore classes with a pending init for the
34511         moment.
34512
34513 2002-10-03  Dick Porter  <dick@ximian.com>
34514
34515         * threads.c: Freebsd pthread_t is a pointer
34516
34517 2002-10-03  Dick Porter  <dick@ximian.com>
34518
34519         * socket-io.c: Implemented GetHostName_internal
34520
34521 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34522
34523         * mono-config.c:
34524         (mono_config_parse_file): don't leak the text.
34525
34526 2002-10-02  Martin Baulig  <martin@gnome.org>
34527
34528         * debug-mono-symfile.c: Added support for methods.
34529
34530 2002-10-01  Martin Baulig  <martin@gnome.org>
34531
34532         * debug-mono-symfile.c: Don't emit methods and line numbers for
34533         the dynamic symbol file, just write the type table.  We can easily
34534         have an external helper program which creates a symbol file for an
34535         IL file.        
34536
34537 2002-10-01  Dick Porter  <dick@ximian.com>
34538
34539         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34540         Only add the handle to the cleanup array when we're about to
34541         launch the thread.  Bug 31425 deadlocked when the test was run on
34542         mono under w32.
34543
34544 2002-10-01  Martin Baulig  <martin@gnome.org>
34545
34546         * debug-mono-symfile.c: Added support for properties.
34547
34548 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34549
34550         * reflection.c: unaligned store fix from Mark Crichton
34551         <crichton@gimp.org>.
34552
34553 2002-09-27  Martin Baulig  <martin@gnome.org>
34554
34555         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34556         New interncall.
34557
34558 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34559
34560         * assembly.h, assembly.c: use a sane API to hook into the assembly
34561         loading process instead of a useless special-purpouse hack
34562         (ngen needs a hook, too, for example).
34563
34564 2002-09-27  Dick Porter  <dick@ximian.com>
34565
34566         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34567         io-layer can set up some process handle info.  Not needed on w32,
34568         but doesn't hurt either.
34569
34570         * process.c: Pass the program name in the second parameter to
34571         CreateProcess, so the path is searched.  Include the working
34572         directory. Implemented process name, process enumeration, and some
34573         process detail internal calls.
34574         
34575         * icall.c: Added internal calls for process lookup, and some
34576         process details
34577
34578 2002-09-26  Martin Baulig  <martin@gnome.org>
34579
34580         * assembly.c (mono_install_open_assembly_hook): New global
34581         function to install a function to be invoked each time a new
34582         assembly is loaded.
34583         (mono_assembly_open): Run this callback function if set.
34584
34585         * debug-mono-symfile.c: Put back line numbers for the dynamic
34586         symbol file and also record the .il file as source file.  This
34587         allows us to install the temporary symbol file as `file.dbg' just
34588         like a compiler-generated one.
34589
34590 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34591
34592         * Corrected typo in gc.c (BOHEM vs BOEHM).
34593
34594 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34595
34596         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34597         GetProperties. Also avoid calling g_slist_length in GetProperties and
34598         GetMethods.
34599
34600 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34601
34602         * reflection.c: avoid unaligned stores (bug spotted by
34603         Mark Crichton  <crichton@gimp.org>).
34604
34605 2002-09-25  Martin Baulig  <martin@gnome.org>
34606
34607         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34608         instead of guint64 for addresses and added prologue/epilogue info.
34609
34610 2002-09-25  Martin Baulig  <martin@gnome.org>
34611
34612         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34613         store line number info.  For the dynamic symbol file, we only need
34614         to provide the JIT generated dynamic line number info for the dynamic
34615         symbol file.
34616
34617 2002-09-25  Martin Baulig  <martin@gnome.org>
34618
34619         * debug-mono-symfile.h: Incremented version number.
34620
34621 2002-09-24  Martin Baulig  <martin@gnome.org>
34622
34623         * class.c (mono_debugger_class_init_func): New global function
34624         pointer variable.
34625         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34626         call it.
34627
34628         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34629         function.  This is called via the mono_debugger_class_init_func
34630         hook to add all types to the dynamic type table.
34631         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34632         from its metadata token.
34633
34634         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34635         New interncall for the debugger.
34636
34637 2002-09-24  Nick Drochak <ndrochak@gol.com>
34638
34639         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34640         before using it in case it is null.
34641         
34642 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34643
34644         * metadata.c: allow custom modifiers in local var signatures
34645         (bug spotted by Zoltan Varga).
34646
34647 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34648
34649         * class.c: deal with the <Module> class that may have a NULL vtable.
34650         Eliminate warnings.
34651
34652 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34653
34654         * image.c, image.h: more strong name helpers.
34655         * monosn.c: more work: convert pem keys to cryptoapi format.
34656
34657 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34658
34659         * string-icalls.c: speedup IndexOf.
34660
34661 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34662
34663         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34664
34665 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34666
34667         * icall.c: cleanup: use mono_object_domain ().
34668
34669 2002-09-23  Martin Baulig  <martin@gnome.org>
34670
34671         * debug-mono-symfile.c: Improved type support.
34672
34673 2002-09-22  Martin Baulig  <martin@gnome.org>
34674
34675         * debug-mono-symfile.c: Added support for reference types and strings.
34676
34677 2002-09-22  Martin Baulig  <martin@gnome.org>
34678
34679         * debug-mono-symfile.c: Started to work on the type table.
34680
34681 2002-09-21  Martin Baulig  <martin@gnome.org>
34682
34683         * debug-mono-symfile.c: Largely reworked the symbol table format.
34684         The symbol table is now incrementally updated each time a new
34685         method is added.  We're now also using our own magic and version
34686         so that you don't need to recompile all your classes if the
34687         dynamic table changes.
34688         (mono_debug_update_mono_symbol_file): Removed.
34689         (mono_debug_symfile_add_method): New function to add a method.
34690
34691 2002-09-21  Martin Baulig  <martin@gnome.org>
34692
34693         * icall.c
34694         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34695         New interncall.
34696
34697         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34698         New interncall to get a method from its metadata token.
34699
34700 2002-09-21  Martin Baulig  <martin@gnome.org>
34701
34702         * debug-mono-symfile.c: Create type table.
34703
34704 2002-09-20  Martin Baulig  <martin@gnome.org>
34705
34706         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34707
34708 2002-09-20  Martin Baulig  <martin@gnome.org>
34709
34710         * debug-mono-symfile.c: Provide information about params and locals.
34711
34712 2002-09-20  Martin Baulig  <martin@gnome.org>
34713
34714         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34715         New interncall.
34716
34717         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34718         interncall to get a method from its metadata token.
34719
34720 2002-09-20  Martin Baulig  <martin@gnome.org>
34721
34722         * debug-mono-symfile.c: Added a few checks for method->header
34723         being non-NULL.  This should never happen, but for the moment
34724         let's use a g_warning() rather than a g_assert().
34725
34726 2002-09-19  Mark Crichton  <crichton@gimp.org>
34727
34728         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34729         even if support for it isn't present.  Added an #ifdef to fix this.
34730
34731         * socket-io.c: Added checks back for Solaris support.
34732
34733 2002-09-19  Martin Baulig  <martin@gnome.org>
34734
34735         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34736         changes in the symbol file format.
34737
34738 2002-09-18  Martin Baulig  <martin@gnome.org>
34739
34740         * debug-mono-symfile.c: Set version number to 21.
34741
34742 2002-09-18  Dick Porter  <dick@ximian.com>
34743
34744         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34745         on netbsd.  Fixes bug 30051.
34746
34747 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34748
34749         * reflection.c:
34750         (set_version_from_string): little fix.
34751
34752 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34753
34754         * monosn.c, Makefile.am: added strong name utility.
34755         * reflection.h, reflection.c: implemented delayed signing,
34756         locale, version and hash id assembly attributes.
34757
34758 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34759
34760         * loader.c, metadata.c: load param attributes in signatures.
34761
34762 2002-09-16  Martin Baulig  <martin@gnome.org>
34763
34764         * debug-mono-symfile.c: Added string table with all method names.
34765
34766 2002-09-14  Martin Baulig  <martin@gnome.org>
34767
34768         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34769         fast method lookup.
34770
34771 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34772
34773         * reflection.c: record the public key token of referenced assemblies.
34774
34775 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34776
34777         * image.c, image.h: added functions to get the strong name and the
34778         public key of an assembly.
34779         * pedump.c: use them.
34780
34781 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34782
34783         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34784
34785 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34786
34787         * marshal.c (mono_marshal_get_managed_wrapper): Added
34788         MONO_TYPE_BOOLEAN 
34789
34790 2002-09-11  Martin Baulig  <martin@gnome.org>
34791
34792         * gc.c: Call GC_unregister_disappearing_link() on all links when
34793         finalizing them, this is necessary to aviod a crash in boehm's
34794         finalize handler.
34795
34796 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34797
34798         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34799         nick@chemlab.org.
34800
34801 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34802
34803         * icall.c: implemented MonoType::Module.
34804         * reflection.c, reflection.h: mono_module_get_object () from
34805         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34806
34807 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34808
34809         * icall.c: ignore overridden methods in GetMethods ().
34810         Fix for FieldInfo::SetValue().
34811         * object.c: handle float/double in runtime invoke.
34812
34813 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34814
34815         * object.c: allow a constructor to be called again on an object.
34816
34817 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34818
34819         * class.h, class.c: move field layout code to it's own function and
34820         export it. Get an interface id earlier. Move fields in MonoClass
34821         so they are more cache friendly and align the bitfields.
34822         * loader.c: temporary handle get_param_names() for a runtime method.
34823         * reflection.c, reflection.h: more code to handle runtime creation of
34824         types.
34825
34826 2002-09-09  Martin Baulig  <martin@gnome.org>
34827
34828         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34829         signature with the pinvoke field being set for the actual call.
34830
34831 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34832
34833         * icall.c: removed some unused icalls. Start of map of glib charsets
34834         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34835
34836 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34837
34838         * debug-helpers.c: break infinite loop (found and fixed by
34839         Holger Arnold <harnold@gmx.de>).
34840
34841 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34842
34843         * icall.c: target may be null in create_delegate.
34844
34845 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34846
34847         * marshal.c: handle a boolean return type.
34848
34849 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34850
34851         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34852
34853 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34854
34855         * gc.c: fix weakreferences.
34856
34857 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34858
34859         * icall.c: added icall to get default codepage.
34860
34861 2002-09-03  Dick Porter  <dick@ximian.com>
34862
34863         * threads.h: 
34864         * threads.c: Use MonoThread instead of MonoObject where
34865         apropriate.
34866
34867         Store running thread objects in a hash table, so that we have all
34868         the info to hand when waiting for them to finish
34869         (means we don't need OpenThread() any more, so mingw builds should
34870         be fully functional again.)
34871
34872         * verify.c:
34873         * object.h: Added thread ID to MonoThread
34874
34875 2002-09-03  Martin Baulig  <martin@gnome.org>
34876
34877         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34878
34879 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34880
34881         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34882
34883 2002-09-03  Martin Baulig  <martin@gnome.org>
34884
34885         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34886         argument to store the end address of the disassembled instruction.
34887
34888         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34889         here from debug-symfile.h.
34890         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34891         JIT into this struct.
34892         (MonoSymbolFile): Added `char *image_file' field.
34893         (MonoDebugGetMethodFunc): Removed.
34894         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34895         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34896         (mono_debug_find_method): New method.
34897
34898         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34899         create a full symbol file.
34900         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34901         and static symbol files.
34902         (mono_debug_find_method): The symbol file keeps an internal method hash,
34903         call this to get a MonoDebugMethodInfo from a MonoMethod.
34904
34905         * debug-symfile.[ch]: Removed.
34906
34907 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34908
34909         * image.c (do_mono_image_open): Remove linker version check.
34910
34911 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34912
34913         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34914         wrappers for instance methods.
34915         
34916 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34917
34918         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34919
34920 2002-08-28  Dick Porter  <dick@ximian.com>
34921
34922         * Makefile.am: Export HOST_CC for w32 builds
34923
34924 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34925
34926         * file-io.c process.c: MonoString are null terminated, no
34927         need for mono_string_to_utf16() anymore.
34928
34929 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34930
34931         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34932
34933 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34934
34935         * icall.c, reflection.h: speedup System.MonoType.
34936
34937 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34938
34939         * reflection.c: allow null as the value of a string argument in
34940         custom attributes constructors.
34941
34942 2002-08-27  Martin Baulig  <martin@gnome.org>
34943
34944         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
34945         `trampoline_address' field.
34946
34947 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
34948
34949         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
34950         check (fixes bug #29486) 
34951
34952 2002-08-27  Martin Baulig  <martin@gnome.org>
34953
34954         * debug-mono-symfile.c: Changed the file format in a way that allows us
34955         open it read-only and to use a specially malloced area for all the
34956         dynamic data.  We can now also generate a symbol file on-the-fly if we're
34957         debugging IL code and there is no MCS generated symbol file for it.
34958
34959 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34960
34961         * object.c: added a define for a good string and array
34962         creation speedup (not enabled by default because we need to deal with
34963         the synch stuff).
34964
34965 2002-08-26  Martin Baulig  <martin@gnome.org>
34966
34967         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
34968         function to create a dynamic symbol file.  This is used by the
34969         debugger to create a symbol file for IL code on-the-fly.
34970
34971 2002-08-26  Martin Baulig  <martin@gnome.org>
34972
34973         * loader.c (mono_lookup_pinvoke_call): Include the error message
34974         from g_module_error() in the error message.
34975
34976 2002-08-24  Martin Baulig  <martin@gnome.org>
34977
34978         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
34979         function to update the symbol file.  The symbol file is mmap()ed
34980         writable, but private.  This allows us to install the symbol file
34981         together with the assembly.
34982
34983 2002-08-24  Martin Baulig  <martin@gnome.org>
34984
34985         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
34986         but they can read the new symbol file format which mcs is now creating.
34987
34988         * debug-symfile.c (mono_debug_find_source_location): Moved to
34989         debug-mono-symfile.c; this is now operating on the new symbol file.
34990
34991 2002-08-23  Martin Baulig  <martin@gnome.org>
34992
34993         * debug-helpers.c (mono_method_desc_from_method): New function to get
34994         a MonoMethodDesc from a MonoMethod.
34995
34996 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34997
34998         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
34999         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
35000
35001 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35002
35003         * string-icalls.[ch]: make helper methods static.
35004
35005 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35006
35007         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
35008         types to it and to SetValueInternal.
35009
35010         * object.c: Moved handle_enum label to its proper place. This was the
35011         f... bug! ;-)
35012
35013         This time i compiled mcs and gtk-sharp and they both work.
35014
35015 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35016
35017         * icall.c: reverted partially my previous patch until 
35018         object.c:set_value handles enums correcly.
35019
35020 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35021
35022         * icall.c:
35023         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
35024         (ves_icall_System_Environment_get_MachineName): removed warning when
35025         compiling under cygwin.
35026
35027 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35028
35029         * object.c: fixed field_get_value() for reference types.
35030
35031 2002-08-22  Dick Porter  <dick@ximian.com>
35032
35033         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
35034         Don't free a buffer while it's still needed.  Patch from Jonathan
35035         Liger <Jonathan.liger@wanadoo.fr>
35036
35037 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
35038
35039         * icall.c (ves_icall_System_Environment_get_Platform): Add new
35040         internal call.
35041
35042 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
35043
35044         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
35045         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
35046
35047         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
35048         we call unmanaged code which throws exceptions.
35049
35050 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35051
35052         * appdomain.h: added per-domain entry_assembly.
35053         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
35054         arguments.
35055         * icall.c: Assembly::GetEntryAssembly icall.
35056         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
35057         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
35058
35059 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35060
35061         * appdomain.h, gc.c: added mono_domain_finalize ().
35062
35063 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35064
35065         * object.c:
35066         (mono_print_unhandled_exception): changed g_warning by g_printerr
35067         because g_log has a 1024 characters limit (yeah, i got a big stack
35068         trace). Don't print exception name, that should be in ToString 
35069         returned string.
35070
35071 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35072
35073         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
35074         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
35075
35076 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35077
35078         * object.c:
35079         (mono_print_unhandled_exception): after previous commit, i realized
35080         that MS calls ToString on the exception. I changed this function to
35081         do that. This way we get stack_trace for free.
35082
35083 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35084
35085         * object.c:
35086         (mono_print_unhandled_exception): invoke Message property instead of
35087         getting 'message' field from Exception. Don't allocate memory for
35088         'trace' and 'message' if not needed.
35089
35090 2002-08-18  Dick Porter  <dick@ximian.com>
35091
35092         * unicode.c: Fix asserts to match Encoder.cs checks
35093
35094 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35095
35096         * marshal.c: fix unaligned store issue and a few wrong
35097         opcode argument types.
35098
35099 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35100
35101         * icall.c: added GetUninitializedObjectInternal internal call.
35102
35103 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
35104
35105         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
35106         to the right domain.
35107
35108 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
35109
35110         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
35111
35112         * class.c (class_compute_field_layout): set blittable to false for Strings
35113
35114         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
35115
35116 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35117
35118         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
35119         first chunk of code to create types at runtime. Code to
35120         handle ReflectedType/DeclaringType. Make reflection handles
35121         domain specific.
35122
35123 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35124
35125         * class.c: set correct name in arrays.
35126
35127 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
35128
35129         * appdomain.c (mono_domain_transfer_object): make it work with
35130         valuetypes. bug fixes.
35131
35132 2002-08-12  Dick Porter  <dick@ximian.com>
35133
35134         * object.h: Rename some parameters to avoid c++ keywords (Patch
35135         from Joseph Wenninger <kde@jowenn.at>)
35136
35137 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
35138
35139         * icall.c: added icall to implement Assembly.GetFile*.
35140
35141 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35142
35143         * reflection.h, reflection.c: code to embed managed resources.
35144
35145 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35146
35147         * class.c: move all the type size stuff into
35148         class_compute_field_layout().
35149
35150 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35151
35152         * class.c: ensure enums have always the correct instance size.
35153         * unicode.c: remove wrong assert.
35154
35155 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35156
35157         * assembly.c: fix mem corruption issue.
35158         * image.h, image.c: added mono_image_get_resource () to access
35159         managed resources.
35160         * icall.c: implemented Assembly.EntryPoint property and some
35161         Managed Resources related internalcalls.
35162
35163
35164 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35165
35166         * image.c, image.h: impemented mono_image_get_entry_point ().
35167         * appdomain.c: use mono_image_get_entry_point.
35168
35169 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35170
35171         * reflection.c: support the object type argument when loading
35172         custom attributes.
35173
35174 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35175
35176         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35177         String as return type.
35178
35179 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35180
35181         * reflection.c: fix encoding of named args for custom attrs to match
35182         the ms implementation. Read them back when instantiating custom
35183         attributes.
35184
35185 2002-08-02  Radek Doulik  <rodo@ximian.com>
35186
35187         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35188         by Dietmar as quick fix
35189         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35190         16 as stack size, used on more places as quick fix before Dietmar
35191         will fix it properly
35192
35193 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35194
35195         * object.h, object.c: added accessors for fields and properties.
35196
35197 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35198
35199         * class.c, class.h: made mono_class_get_field_from_name ()
35200         loop on parent types.
35201         Added mono_class_get_property_from_name ().
35202
35203 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35204
35205         * class.c, class.h: move the code to setup the type vtable in its own
35206         function so that it can be reused also for types created at runtime.
35207         Eliminate the "class" identifier from the header file.
35208         * reflection.c: setup the vtable for enums so that we can create
35209         objects for use in SetConstant ().
35210
35211 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35212
35213         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35214         instead of the delegate itself as this pointer (bug #28383)
35215
35216 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35217
35218         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35219         conversions.
35220
35221 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35222
35223         * loader.c: don't set the pinvoke bit on icalls.
35224
35225 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35226
35227         * debug-helpers.c (mono_method_full_name): only print a number to
35228         indicate wrapper type (so that the output is more readable in traces).
35229
35230 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35231
35232         * class.c (mono_class_init): include method override patch from Paolo
35233
35234 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35235
35236         * icall.c: fixed GetTypeCode().
35237
35238 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35239
35240         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35241         use real delegate invoke function to make it work with multicast
35242         delegates (fix bug# 28291).
35243
35244 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35245
35246         * object.c: load constant strings.
35247
35248 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35249
35250         * reflection.c: no magic numbers.
35251         * tabledefs.h: security action enum.
35252
35253 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35254
35255         * assembly.c: fix possible memory corruption.
35256
35257 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35258
35259         * reflection.h, reflection.c: added support for linking resources.
35260         * verify.c: check we have an updated corlib.
35261
35262 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35263
35264         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35265         string arrays.
35266         (mono_marshal_string_array): null terminate unmanaged string arrays.
35267         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35268
35269 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35270
35271         * icall.c: Type.GetType () can now return also types from the
35272         calling assembly.
35273
35274 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35275
35276         * loader.h, loader.c: stack walking support.
35277         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35278         GetCallingAssembly.
35279
35280 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35281
35282         * marshal.c: added optimisations for blittable types 
35283
35284         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35285         (mono_class_setup_mono_type): set blittable attribute for single
35286         and double.
35287
35288         * marshal.c (mono_string_utf8_to_builder): impl.
35289         (mono_string_builder_to_utf8): impl.
35290         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35291
35292 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35293
35294         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35295         (mono_marshal_get_managed_wrapper): impl. byref types
35296
35297 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35298
35299         * icall.c:
35300         (search_method): don't display debug message. 
35301
35302 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35303
35304         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35305
35306 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35307
35308         * appdomain.c: set the missing filename when throwing exception.
35309
35310 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35311
35312         * metadata.c (mono_type_size): code cleanup
35313         (mono_type_stack_size): removed some test code
35314
35315 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35316
35317         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35318         mono_get_exception_file_not_found now.
35319
35320         * exception.c (mono_exception_from_name_two_strings): New version
35321         that will call a constructor with two string arguments. 
35322         (mono_get_exception_file_not_found): New helper routine, used to
35323         report file-not-found errors.
35324
35325 2002-07-20  Dick Porter  <dick@ximian.com>
35326
35327         * process.h:
35328         * process.c: Pass file handles to CreateProcess
35329         
35330         * icall.c:
35331         * file-io.h:
35332         * file-io.c: Implemented CreatePipe
35333
35334 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35335
35336         * metadata.c (mono_get_param_info): set alignment for value types
35337
35338 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35339
35340         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35341         Constify mono_domain_assembly_open().
35342         * loader.c: handle null namespace in icalls.
35343
35344 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35345
35346         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35347         (emit_str_to_ptr_conv): marshal object as structs
35348
35349         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35350
35351         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35352
35353 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35354
35355         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35356         (mono_marshal_get_native_wrapper): we an now return value types
35357
35358 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35359
35360         * verify.c: more checks implemented.
35361
35362 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35363
35364         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35365         (fix bug #27695)
35366         (mono_marshal_get_native_wrapper): allow byref arguments
35367         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35368         impl. PtrToStringXXX methods
35369         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35370         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35371         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35372         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35373         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35374
35375 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35376
35377         * reflection.c: fix buglet in parsing an assembly name.
35378
35379 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35380
35381         * marshal.c (emit_ptr_to_str_conv): first impl.
35382
35383 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35384
35385         * object.c, class.h: cache the vtable in the class as suggested by
35386         vargaz@freemail.hu (Zoltan Varga).
35387
35388 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35389
35390         * class.h, loader.c: added mono_field_from_token().
35391         * verify.c: first cut of type checking code.
35392
35393 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35394
35395         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35396
35397 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35398
35399         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35400         (fix bug #27782)
35401         (mono_marshal_get_remoting_invoke): impl.
35402         (mono_delegate_begin_invoke): impl.
35403         (mono_mb_emit_save_args): impl.
35404         (mono_delegate_end_invoke): impl.
35405         (mono_marshal_get_delegate_begin_invoke):
35406         (mono_marshal_get_delegate_end_invoke):
35407         (mono_marshal_get_delegate_invoke): generate a special name for
35408         those methods (including the signature) and associate them whith
35409         the delegate class. 
35410
35411 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35412
35413         * reflection.[ch]: 
35414         (mono_reflection_type_from_name): now it has a MonoImage parameter
35415         which is used as the default image to search the type in. If the image
35416         is NULL or getting the type from it fails, it defaults to corlib.
35417
35418         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35419         new parameter.
35420
35421 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35422
35423         * reflection.c: update the parameter table index.
35424
35425 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35426
35427         * domain.c: don't include the mark byte in the string hash.
35428
35429 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35430
35431         * icall.cs: icall for Type.GetTypeCode ().
35432         * verify: a couple of fixes and disabled local initialization checks.
35433
35434 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35435
35436         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35437
35438         * debug-helpers.c (mono_method_full_name): print the type of the
35439         runtime wrapper
35440
35441         * metadata.c (mono_signature_hash): a hash function for signatures
35442         (mono_signature_hash): better hash algorithm
35443
35444         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35445
35446         * debug-helpers.c (mono_method_full_name): this can now generate
35447         method names with signatures
35448
35449         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35450         method dont have this pointers.
35451
35452 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35453
35454         * reflection.c: fixup typebuilder tokens.
35455         * image.c: fix buglet.
35456         * marshal.h: remove whitespace.
35457         * metadata.h, metadata.c: reinstate code that was removed.
35458         * verify.c: handle catch directives and fix another couple of bugs.
35459
35460 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35461
35462         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35463         (mono_marshal_get_native_wrapper): make it comp. with the old code
35464         (mono_marshal_get_native_wrapper): support boolean
35465         (mono_marshal_get_managed_wrapper): support more types
35466
35467 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35468
35469         * class.c (class_compute_field_layout): compute class->blittable attribute.
35470
35471 2002-07-09  Dick Porter  <dick@ximian.com>
35472
35473         * threads.c: Make the thread cleaning up cope with threads that
35474         call ExitThread()
35475
35476 2002-07-08  Radek Doulik  <rodo@ximian.com>
35477
35478         * reflection.c (method_encode_code): use non-translated values to
35479         compute finally_start, this fixes exception handling on ppc, yay!
35480
35481         * decimal.h (struct signscale): fix endianess
35482
35483 2002-07-07  Radek Doulik  <rodo@ximian.com>
35484
35485         * reflection.c: swap box_val and not val
35486
35487 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35488
35489         * reflection.c, reflection.h: handle full assembly info in type name.
35490         Handle Type arguments when loading custom attributes.
35491         * icall.c: updated to use new mono_reflection_type_from_name () method.
35492
35493 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35494
35495         * loader.c:
35496         (method_from_memberref): also print assembly name when method not found.
35497
35498 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35499
35500         * icall.c:
35501         (ves_icall_TypeGetProperties): fixed bug #27473. 
35502
35503 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35504
35505         * reflection.c: display image name and token when cannot find the
35506         .ctor for an attribute.
35507
35508 2002-07-05  Martin Baulig  <martin@gnome.org>
35509
35510         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35511
35512 2002-07-04  Dick Porter  <dick@ximian.com>
35513
35514         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35515         compile on mingw.  This will cause mingw builds to not wait for
35516         subthreads to terminate after the main thread does.  I've lodged a
35517         bug with the mingw developers for them to wrap OpenThread().
35518
35519 2002-07-03  Dick Porter  <dick@ximian.com>
35520
35521         * threads.c: Store thread IDs instead of handles, because
35522         GetCurrentThread() returns a pseudohandle and therefore stores
35523         useless values.  mono_thread_cleanup() continues checking the
35524         array of threads until it is empty, to cope with subthreads
35525         spawning new threads after the main thread has finished.
35526
35527         * profiler.h:
35528         * profiler.c:
35529         * profiler-private.h: Pass the thread ID to thread profiler
35530         functions, instead of a handle
35531
35532 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35533
35534         * verify.c: fixes to make it more usable.
35535         * pedump.c: added --verify code to verify IL code in an assembly.
35536
35537 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35538
35539         * reflection.c: turn errors into warnings to allow compiling corlib.
35540
35541 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35542
35543         * reflection.c: add special cases to compile corlib.
35544
35545 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35546
35547         * reflection.c: handle properties with only a set method.
35548
35549 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35550
35551         * opcodes.h: add enum with opcodes in opval order.
35552
35553 2002-07-01  Dick Porter  <dick@ximian.com>
35554         
35555         * object.h:
35556         * object.c (mono_runtime_run_main): Removed unneeded argument
35557
35558 2002-06-28  Martin Baulig  <martin@gnome.org>
35559
35560         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35561
35562 2002-06-27  Dick Porter  <dick@ximian.com>
35563
35564         * threads.c: Store the handle in both the parent thread and in the
35565         subthread, to minimise the time between starting a new thread and
35566         storing its ID.
35567
35568 2002-06-26  Dick Porter  <dick@ximian.com>
35569
35570         * appdomain.c (mono_runtime_cleanup): Close the socket library
35571         after all the threads have finished, not before
35572
35573 2002-06-26  Martin Baulig  <martin@gnome.org>
35574
35575         * debug-symfile.c (mono_debug_find_source_location): Added
35576         `guint32 *line_number' argument.  If it's not NULL, store the line number
35577         there and return the file name without the line number.
35578
35579 2002-06-25  Dick Porter  <dick@ximian.com>
35580
35581         * icall.c:
35582         * process.h:
35583         * process.c: Process forking and other support functions
35584
35585 2002-06-25  Dick Porter  <dick@ximian.com>
35586
35587         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35588         things dont happen when the image is closed.
35589         (mono_image_lookup_resource): Walk the resource section looking
35590         for a particular entry
35591
35592         * cil-coff.h: PE resource section decoding
35593
35594 2002-06-25  Dick Porter  <dick@ximian.com>
35595         
35596         * assembly.h:
35597         * assembly.c: 
35598         (mono_assembly_foreach): Accessor functions to walk the list of
35599         loaded assemblies
35600         (mono_assembly_set_main):
35601         (mono_assembly_get_main): Process methods need to know which
35602         assembly is the "main" one
35603
35604         * object.c (mono_runtime_run_main): Record the main assembly
35605
35606         * debug-helpers.c: Fix typo
35607
35608 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35609
35610         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35611         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35612
35613 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35614
35615         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35616
35617 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35618
35619         * image.c (do_mono_image_open): Initialize reference count,
35620         otherwise we leak the MonoImage.
35621
35622 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35623
35624         * reflection.c: small tweak to handle self-hosting.
35625
35626 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35627
35628         * reflection.c: fix type name parse code.
35629
35630 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35631
35632         * reflection.c: break out of the loop.
35633         * image.c: special case corlib.
35634
35635 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35636
35637         * reflection.c: add all the custom attrs at the end to ensure the
35638         ctors have been properly initialized when the attributes are defined
35639         in the current assembly.
35640
35641 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35642
35643         * reflection.c: handle correctly multiple-nested types.
35644
35645 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35646
35647         * row-indexes.h: fix typos.
35648         * reflection.c: adjust for typos and fix method_def_or_ref
35649         encoding in MethodImpl table.
35650
35651 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35652
35653         * reflection.c: fix entry point patching (thanks Serge!).
35654
35655 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35656
35657         * verify.c: add check for System.Exception
35658
35659 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35660
35661         * image.c, class.c: minifix for code just c&p'ed.
35662         * reflection.c: warning fix.
35663         * object.h, loader.h, domain.c: load also StringBuilder.
35664
35665 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35666
35667         * marshal.h, marshal.c: some support code to handle complex marshaling.
35668
35669 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35670
35671         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35672         Better signatures with vtable error dump.
35673
35674 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35675
35676         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35677
35678 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35679
35680         * icall.c (ves_icall_Type_GetField): impl.
35681
35682 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35683
35684         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35685         to retrieve a marshal description blob for a field or param.
35686
35687 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35688
35689         * reflection.h, reflection.c: change order of nested type emission
35690         to avoid table corruption. The NestedTypes table is sorted.
35691         * icall.c: change order of GetConstructor results to workaround mcs bug.
35692
35693 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35694
35695         * reflection.h, reflection.c: handle field and param marshal
35696         information.
35697
35698 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35699
35700         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35701
35702 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35703
35704         * reflection.c: fix call convention.
35705
35706 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35707
35708         * reflection.h, reflection.c: mono_image_get_memberref_token()
35709         takes a type instead of a class, now. Added
35710         mono_image_get_array_token() to create tokens for the special
35711         multi-dim array methods.
35712
35713 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35714
35715         * assembly.c: handle modules (no assembly table). Split
35716         loading references in its own function.
35717         * class.c: handle moduleref resolution scope.
35718         * image.c, image.h: cache module name in image.
35719
35720 2002-06-07  Martin Baulig  <martin@gnome.org>
35721
35722         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35723         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35724
35725 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35726
35727         * icall.c: more signature fixes that used uint instead of int.
35728
35729 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35730
35731         * reflection.c: fixed signature of field refs.
35732
35733 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35734
35735         * class.c, reflection.c: handle typerefs of nested types
35736         (both on read and when writing files).
35737
35738 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35739
35740         * icall.c: fix method signatures that tried to workaround the previous
35741         typo, d'oh!
35742
35743 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35744
35745         * debug-helpers.c: fix typo.
35746
35747 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35748
35749         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35750         rewrote the PE/COFF writing code (our programs are understood by the
35751         ms runtime, now).
35752
35753 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35754
35755         * gc.c, gc.h, icall.c: weakreference support.
35756
35757 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35758
35759         * Makefile.am, mono-config.c: use $(sysconfdir).
35760
35761 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35762
35763         * icall.c: changed default precision of Double.ToString() to 15.
35764         Fixed memory leak. Unified with Single.ToString.
35765
35766 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35767
35768         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35769
35770 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35771
35772         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35773         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35774         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35775         and myself.
35776
35777 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35778
35779         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35780
35781 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35782
35783         * reflection.c, socket-io.c: more compilation fixes.
35784
35785 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35786
35787         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35788         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35789         unicode.c: warning and compiler compatibility fixes.
35790
35791 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35792
35793         * class.h, metadata.c: fixed warnings/compilation errors.
35794
35795 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35796
35797         * Makefile.am, mono-config.c, mono-config.h: configuration file
35798         support routines.
35799         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35800         config file. Export methods to insert and lookup mappings.
35801
35802 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35803
35804         * reflection.c: handle types and boxed objects in custom attr
35805         constructors.
35806
35807 2002-05-30  Martin Baulig  <martin@gnome.org>
35808
35809         * debug-symfile.c
35810         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35811
35812 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35813
35814         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35815         to lookup the implmap row for a P/Invoke method.
35816         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35817         P/Invoke method from the runtime on an as needed basis.
35818
35819 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35820
35821         * metadata.c (mono_metadata_parse_signature): impl.
35822
35823 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35824
35825         * class.c: handle .pack directive.
35826
35827 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35828
35829         * object.c: initialize static fields with RVA data.
35830
35831 2002-05-25  Martin Baulig  <martin@gnome.org>
35832
35833         * debug-symfile.c
35834         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35835
35836 2002-05-24  Martin Baulig  <martin@gnome.org>
35837
35838         * debug-symfile.c
35839         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35840         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35841         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35842
35843 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35844
35845         * object.c: special case string ctros in invoke.
35846         * gc.c: silly whitespace changes.
35847
35848 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35849
35850         * threadpool.[ch]: impl. a threadpool that can
35851         be used by mint and mono.
35852
35853 2002-05-22  Martin Baulig  <martin@gnome.org>
35854
35855         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35856         The first argument is now a `MonoReflectionModuleBuilder *', the return
35857         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35858         `methods' field to get the method builder.  The `token' argument is the
35859         unfixed token.
35860
35861         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35862         invalid characters instead of g_assert_not_reached()ing.  This seems
35863         to be the behaviour of mscorlib.
35864
35865 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35866
35867         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35868         Hestilow to fix bug #25104
35869
35870 2002-05-21  Martin Baulig  <martin@gnome.org>
35871
35872         * debug-symfile.c (mono_debug_find_source_location): New function.
35873         Looks up an IL offset in the line number table and returns the source
35874         location as a string.
35875
35876 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35877
35878         * icall.c:
35879         (mono_double_ToStringImpl): changed %f by %g until we have something
35880         better.
35881
35882 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35883
35884         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35885         parameters first in C#.
35886
35887 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35888
35889         * icall.c, reflection.h: added icall to get info about an event.
35890
35891 2002-05-20  Radek Doulik  <rodo@ximian.com>
35892
35893         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35894         endian
35895         (mono_value_box): don't use memcpy for small sizes on
35896         architectures with unaligned access
35897
35898 2002-05-20  Martin Baulig  <martin@gnome.org>
35899
35900         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35901         if `tb->parent == NULL'.
35902         (mono_reflection_create_internal_class): New function.  This is
35903         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35904         for enum types.
35905
35906         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35907         New interncall.
35908
35909 2002-05-19  Martin Baulig  <martin@gnome.org>
35910
35911         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35912         argument to get the length, don't default to the array length.
35913
35914 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35915
35916         * assembly.c (mono_assembly_setrootdir): New function used to
35917         override the MONO_ASSEMBLIES directory.
35918
35919 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35920
35921         * icall.c: ValueType_GetHashCode() initialize local var.
35922
35923 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35924
35925         * reflection.c: sort custom attributes table.
35926
35927 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35928
35929         * reflection.c: support named args in custom attributes (write support).
35930
35931 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35932
35933         * reflection.c: fix finally position calculation.
35934
35935 2002-05-15  Radek Doulik  <rodo@ximian.com>
35936
35937         * reflection.c: fixed endianess at many places
35938
35939         * icall.c (ves_icall_InitializeArray): comment out debug msg
35940
35941 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
35942
35943         * object.c (mono_unhandled_exception): new function to handle
35944         unhandled exceptions.
35945         (mono_unhandled_exception): call the UnhandledException event.
35946         (mono_runtime_delegate_invoke): impl.
35947
35948 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
35949
35950         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
35951         returns the RVA, not the direct pointer to the data. Handle the case
35952         when the class size is fixed.
35953
35954 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35955
35956         * reflection.c: fix some endianess issues.
35957
35958 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
35959
35960         * object.c (mono_runtime_invoke): is now able to catch exceptions.
35961
35962         * threads.c (mono_thread_init): added a callback which is invoked
35963         at thread start.
35964
35965 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35966         
35967         * icall.c: make GetHashCode return non-negative values.
35968
35969 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
35970
35971         * object.c, icall.c, gc.c: revert to address-based hashcode.
35972
35973 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
35974
35975         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
35976
35977 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35978
35979         * icall.c, class.c: special case <Module>.
35980
35981 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
35982
35983         * icall.c: fix bug in GetNow().
35984
35985 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
35986
35987         * object.c (mono_runtime_class_init): make sure that we call all
35988         static class constructors.
35989
35990 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35991
35992         * reflection.c: sort methodsemantics table.
35993
35994 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35995
35996         * reflection.h, reflection.c: honour init locals setting.
35997
35998 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
35999
36000         * icall.c: copied Double ToStringImpl for Single ToStringImpl
36001
36002 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36003
36004         * reflection.c: support ContructorBuilders in attribute blob creation.
36005
36006 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36007
36008         * reflection.c: some changes to build a binary that can be run
36009         directly in windows.
36010
36011 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36012
36013         * loader.c: print a big message when an icall can't be found.
36014
36015 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36016
36017         * string-icalls.c: fix bug 24248.
36018
36019 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
36020
36021         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
36022         icall.c, reflection.h: separate assembly loading by pathname and by
36023         assembly name. Use the MONO_PATH env var to search for assemblies.
36024
36025 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36026
36027         * assembly.c, image.h: add some support for assemblies
36028         with multiple modules.
36029         * class.c, class.h: export mono_class_from_typeref().
36030         * loader.c: remove duplicated code and use mono_class_from_typeref(),
36031         instead.
36032
36033 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36034
36035         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
36036         documentation says (the ECMA one is correct).
36037
36038 2002-05-02  Dick Porter  <dick@ximian.com>
36039
36040         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
36041         Don't name the synchronisation mutex.
36042
36043 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
36044
36045         * rand.c
36046         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
36047         Make the prototypes match.
36048         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
36049         Same.
36050
36051         * icall.c
36052         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
36053         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
36054         all systems have tm.tm_zone, so use strftime() with %Z to print
36055         the timezone abreviation into a temp string.
36056
36057         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
36058         rather than mono_array_addr() on a MonoString on Big Endian
36059         machines.
36060
36061 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
36062
36063         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
36064         fix bug 24041
36065
36066 2002-04-30  Dick Porter  <dick@ximian.com>
36067
36068         * socket-io.c: Cope with SOCKET being an integer rather than a
36069         pointer now.
36070
36071         * threads.c: Added Thread_free_internal, to deal with thread
36072         handle cleanup.  Moved calls to handle_store() and handle_remove()
36073         to start_wrapper(), so each can only be called once.  Allocate
36074         synchronisation blocks with GC_malloc(), and use GC finalisation
36075         to close the handles.
36076
36077         * icall.c: added System.Threading.Thread::Thread_free_internal
36078
36079 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36080
36081         * icall.c: support Environment.Exit, CommandLineArgs().
36082
36083 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
36084
36085         * object.c, object.h: added mono_runtime_run_main () and
36086         mono_runtime_get_main_args () for use in System.Environment.
36087
36088 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36089
36090         * gc.c: fix thinko, enable actual finalization since the jit is now
36091         fixed.
36092
36093 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36094
36095         * gc.c, object.c: take into account that an object may be offset wrt the address
36096         returned by GC_malloc().
36097
36098 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
36099
36100         * image.c: handle files without entries in the assembly table (modules).
36101
36102 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
36103
36104         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
36105         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
36106         allowed to be null when it's System.Object class setup.
36107
36108 2002-04-27  Martin Baulig  <martin@gnome.org>
36109
36110         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
36111         if `tb->parent == NULL' rather than crashing.
36112
36113 2002-04-28  Nick Drochak  <ndrochak@gol.com>
36114
36115         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
36116         calling acos() where asin() should have been called.
36117
36118 2002-04-26  Martin Baulig  <martin@gnome.org>
36119
36120         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
36121         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
36122         there's a subdirectory called `System', but we don't want to read that
36123         subdirectory as an assembly.
36124
36125 2002-04-25  Martin Baulig  <martin@gnome.org>
36126
36127         * debug-symfile.c: Reflect latest MonoString changes.
36128
36129 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
36130
36131         * rand.c, rand.h: instance method icalls need to have an explicit
36132         this pointer as first argument in the C implementation.
36133
36134 2002-04-25  Nick Drochak <ndrochak@gol.com>
36135
36136         * icall.c: Fix typo in map for GetNonZeroBytes
36137
36138 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36139
36140         * string-icalls.c : String does now passes unit tests without any 
36141         errors, the following changes has been made:
36142         
36143         Implemented replace methods.
36144         Renaming of methods to (try) follow the standard.
36145         Fixed compare ordinal
36146         Made all memory allocated directly to function instead of via icall function.
36147         Small performance fix in is_in_array function
36148                         
36149  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
36150
36151         c (mono_string_Internal_ctor_charp_int_int):
36152         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
36153         sindex < 0, throw ArgumentOutOfRangeException instead of
36154         ArgumentNullException.
36155
36156         Added new check for length == 0, however
36157         I need to make it return String.Empty from the C code.
36158         
36159         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36160         that calculate the length for us here.
36161         
36162         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36163         mono_string_new_utf16 with mono_string_new, since value is utf8.
36164
36165 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36166
36167         * object.c: register the object for finalization if needed.
36168         Allocate one more char in the string for the terminating 0 char.
36169
36170 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36171
36172         * class.c, class.h, image.c: check if a type implemenst a destructor.
36173         Use the proper key for array class lookups.
36174         * icall.c: register the icalls in the System.GC class.
36175         * gc.c, gc.h: GC-related functions and icalls.
36176
36177 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36178
36179         * icall.c:
36180         * socket-io.c:
36181         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36182         changed a couple of free () by g_free ().
36183
36184         * decimal.c: one-liner in the comments for decimal2string ().
36185
36186 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36187
36188         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36189
36190 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36191
36192         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36193         * object.c (mono_runtime_invoke_array) : handle null in params
36194
36195 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36196
36197         * string-icalls.c: fixed bug in split (one off bug)
36198
36199 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36200
36201         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36202         * icalls.c: added String::Equals as internal method
36203
36204 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36205
36206         * threads.c: fixed bug in the double interlocked functions
36207
36208 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36209
36210         * threads.c: implemented all of the new interlocked icalls.
36211         * string-icalls.c: fix a bug in insert.
36212         * icalls.c: added the icalls for interlocked, removed old string functions.
36213         
36214 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36215
36216         * loader.c: fix off-by-one error when reading argument names.
36217
36218 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36219
36220         * profiler.c: win32 counter implementation (untested).
36221         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36222         (the latter needs testing and more complete impl. from win32 folks).
36223
36224 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36225
36226         * object.c: mono_array_new_full workaround mono_array_class_get
36227         problem.
36228
36229 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36230
36231         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36232         * object.h (mono_string_chars): Changed casting type.
36233
36234 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36235
36236         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36237                            method signatures to use gunichar2 instead of gint16.
36238
36239 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36240
36241         * object.h, object.c: domain-specific versions of mono_object_new and
36242         mono_array_new.
36243
36244 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36245
36246         * object.c: changed String layout
36247
36248         * string-icalls.c (mono_string_Internal_ctor_chara): added
36249         internal string constructors.
36250
36251 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36252
36253         * threads.c: pass 'this' to the thread start routine.
36254
36255 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36256
36257         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36258         InternalCompareStr don't call twice mono_string_cmp_char for the last
36259         character. Improved performance in mono_string_cmp_char.
36260
36261 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36262
36263         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36264         code into its own library: libmonoruntime.
36265
36266 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36267
36268         * object.h, object.c: changed array format so that szarrays do not
36269         require a bounds structure.
36270         * icall.c, appdomain.c: support for new szarray format.
36271
36272 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36273
36274         * metadata.c: compare also the retuns type when comparing signatures:
36275         we didn't do this as an optimization since really overloaded methods
36276         must differ also in the arguments, but this doesn't work with
36277         low-level IL code (or when using explicit conversion operators: see
36278         bug#23498 for an example).
36279
36280 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36281
36282         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36283
36284 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36285
36286         * icall.c: make MonoType::GetElementType its own icall.
36287
36288 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36289
36290         * icall.c: remove MonoMethod_get_Name().
36291         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36292         object.
36293
36294 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36295
36296         * string-icalls.c: optimized a few methods.
36297
36298 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36299
36300         * icall.c: added all new string internal calls
36301         * string-icalls.c: added, new string internal call implementation.
36302         * object.c: added mono_string_new_size for allocating a string a size
36303
36304 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36305
36306         * object.c (mono_object_isinst): use the same code as in the
36307         optimized x86 version.
36308
36309 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36310
36311         * profiler.c: TSC-based timer code (faster and more accurate).
36312         Not hooked up in configure, yet (set USE_X86TSC to 1).
36313
36314 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36315
36316         * profiler.c, profiler.h: track time spent compiling methods.
36317         * threads.c: track thread creation/destruction.
36318
36319 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36320
36321         * profiler.c, profiler.h, profiler-private.h: profiling interface
36322         and sample implementation. Moved here so that it can be used also by
36323         the jit.
36324
36325 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36326
36327         * reflection.c, reflection.h: keep types and other handles separate in
36328         the hash tables for referred tokens. Add guid for modules.
36329
36330 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36331
36332         * assembly.c: fix bugs found with valgrind.
36333         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36334
36335 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36336
36337         * threads: added icall support for getting current domain for
36338                    the thread.
36339  
36340 2002-04-13  Martin Baulig  <martin@gnome.org>
36341
36342         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36343         (MonoDebugVarInfo): Added `index' field for register based addresses.
36344         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36345         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36346         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36347         `MonoDebugVarInfo *this_var'.
36348
36349         * debug-symfile.c (relocate_variable): New static function to write
36350         a location description for a local variable or method parameter.
36351
36352 2002-04-12  Martin Baulig  <martin@gnome.org>
36353
36354         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36355         stack offset and begin/end scope address of a local variable.
36356         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36357         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36358         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36359
36360         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36361         Added new relocation types for start/end scope of a local variable.
36362
36363 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36364
36365         * object.h: add mono_object_domain() macro.
36366         * reflection.c: handle typespecs.
36367         * icall.c: MonoMethod::get_Name() implementation.
36368
36369 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36370
36371         * icall.c: String::GetHashCode() icall implementation.
36372
36373 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36374
36375         * icall.c: String::IndexOfAny icall.
36376         * object.c, object.h: make array->max_length more useful.
36377         Intrduced mono_object_class() and mono_string_length() macros.
36378
36379 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36380
36381         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36382         instead of g_unichar_isdigit.
36383
36384 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36385
36386         * icall.c: Implement a simple Double.ToString().
36387
36388 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36389
36390         * appdomain.h: only io-layer.h is supposed to be included.
36391         * icall.c: explicitly import environ. Fix warning.
36392
36393 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36394
36395         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36396                 return true even if it's not Daylight Savings time.
36397                 Only return false for the case where the function isn't
36398                 implemented for a plaform (read Windows).
36399
36400 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36401
36402         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36403         data with a mutex.
36404
36405 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36406
36407         * mempool.c (mono_mempool_alloc): only use g_malloc when
36408         absolutely necessary.
36409
36410 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36411
36412         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36413
36414         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36415         (mono_class_proxy_vtable): use domain mempool
36416
36417 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36418
36419         * appdomain.h, appdomain.c: split initialization that requires the
36420         execution engine support into mono_runtime_init().
36421
36422 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36423
36424         * class.c (mono_class_init): don't include vtable inside MonoClass
36425         to save some memory, gather some statistics.
36426         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36427
36428 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36429
36430         * icall.c: internalcall implementation for ValueType.Equals().
36431
36432 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36433
36434         * object.c (mono_message_init): moved 
36435         (mono_runtime_exec_main): new arch. independent impl.
36436         (mono_runtime_invoke_array): new method - like
36437         mono_runtime_invoke, but you can pass an array of objects.
36438         (mono_remoting_invoke): new arch. independent impl.
36439         (mono_message_invoke): new arch. independent impl.
36440         (mono_runtime_class_init): new arch. independent impl.
36441         (mono_runtime_object_init): new arch. independent impl.
36442
36443 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36444
36445         * metadata.c, object.c, reflection.c: documented the exported
36446         functions.
36447
36448 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36449
36450         * icall.c: simpler code to pass the assembly builder data to corlib.
36451         Implement GetNestedTypes() internalcall.
36452
36453 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36454
36455         * class.c: warn if a type can't be loaded.
36456
36457 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36458
36459         * image.h: typedef MonoImageOpenStatus
36460         * types.h: removed unused file
36461         
36462 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36463
36464         * icall.c: Enum_ToObject accepts enum value arguments.
36465
36466 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36467
36468         * class.c: move initialization of properties, events and nested
36469         classes, so that they happen for interfaces, too.
36470
36471 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36472
36473         * icall.c: cleanup some ugly casts in Array_SetValue*.
36474
36475 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36476
36477         * icall.c: the values array fro enums is of the correct type, now.
36478         Implement (correctly) getFullName instead of assQualifiedName for
36479         MonoType.
36480         * reflection.h, reflection.c: added mono_type_get_name ().
36481
36482 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36483
36484         * assembly.c, image.h: for each MonoImage, record from wich assembly
36485         it was loaded.
36486         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36487         Make Type.Assembly work.
36488
36489 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36490
36491         * debug-symfile.h: use char* instead of gpointer to avoid
36492         unnecessary casts.
36493
36494         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36495
36496         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36497         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36498
36499 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36500
36501         * icall.c (mono_message_init): impl. (code cleanup)
36502         (ves_icall_InternalExecute): impl. FieldGetter
36503
36504         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36505         defined we call all (non-static)methods through the vtable. 
36506
36507 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36508
36509         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36510         finalizer even though the memory is still referenced (and the chunk of
36511         memory is not freed).
36512
36513 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36514
36515         * assembly.c: fix brokeness.
36516
36517 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36518
36519         * class.c: kill some warnings. Check explicit interface method
36520         implementation also without considering the namespace.
36521         Load also literal strings in static class data.
36522
36523 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36524
36525         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36526         (default_assembly_name_resolver): Make the resolver take the
36527         "base" directory where the assembly was originally defined, so we
36528         can load DLLs that are in the same directory as the assembly that
36529         is being referenced.
36530
36531 2002-03-28  Dick Porter  <dick@ximian.com>
36532
36533         * file-io.h: 
36534         * file-io.c:
36535         * socket-io.c: 
36536         * unicode.h: 
36537         * unicode.c: Warning cleanups
36538
36539 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36540
36541         * object.h, reflection.h: use the correct type instead of MonoObject.
36542
36543 2002-03-28  Martin Baulig  <martin@gnome.org>
36544
36545         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36546         (mono_debug_update_symbol_file): Initialize classes if necessary.
36547
36548 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36549
36550         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36551         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36552
36553 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36554
36555         * assembly.h: fix function prototype.
36556         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36557         * mono-endian.h: use const cast.
36558
36559 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36560
36561         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36562
36563 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36564
36565         * loader.c: don't assert when a typeref can't be loaded, give
36566         a chance to the runtime to trow an exception instead.
36567         * loader.h: fix warning.
36568
36569 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36570
36571         * class.c (mono_class_proxy_vtable): added proxy support
36572
36573 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36574
36575         * icall.c: removed last of PAL calls, added System.Environment
36576         * file-io.h, file-io.c: MonoIO implementation
36577         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36578
36579 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36580
36581         * appdomain.c: do not use the byte marker in ldstr table lookup.
36582         * debug-helpers.c: allow two ':' to separate class and method name.
36583         * object.c: allocate arrays bounds with the GC, too.
36584         * verify: add a few more checks.
36585
36586 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36587
36588         * reflection.c: output also literal strings. Allocate parameter data
36589         with GC_malloc() (thanks, Martin, for catching this!).
36590
36591 2002-03-26  Martin Baulig  <martin@gnome.org>
36592
36593         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36594         include the `this' offset in the `param_offsets'.
36595
36596 2002-03-25  Martin Baulig  <martin@gnome.org>
36597
36598         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36599         mono_debug_get_class() function to get the classes. Added new
36600         relocation types for arrays and strings.
36601         (mono_debug_get_class): New static function to search in all
36602         referenced assemblies for a metadata token.
36603
36604         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36605
36606 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36607
36608         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36609         hold gc-allocated objects. Make the string heap a stream like the
36610         others. Removed duplicated code when writing stream info.
36611         Added asserts to catch possible buffer overflows. Set the sorted map
36612         for tables that need sorting. Added some documentation.
36613
36614 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36615
36616         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36617         for interned strings and vtables.
36618
36619 2002-03-24  Martin Baulig  <martin@gnome.org>
36620
36621         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36622         it in the array since it was created with g_slist_prepend().
36623
36624 2002-03-24  Martin Baulig  <martin@gnome.org>
36625
36626         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36627         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36628         (mono_debug_method_from_token): Renamed to
36629         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36630         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36631
36632         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36633         relocation types.
36634
36635         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36636
36637 2002-03-24  Martin Baulig  <martin@gnome.org>
36638
36639         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36640         (mono_debug_method_from_token): New func.
36641
36642         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36643         New interncall, calls mono_debug_local_type_from_signature().
36644         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36645         calls mono_debug_method_from_token().
36646
36647 2002-03-23  Martin Baulig  <martin@gnome.org>
36648
36649         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36650         specifies the number of bytes to be converted, not the array size.
36651         Return the number of chars, not the number of bytes.
36652         (ves_icall_iconv_get_chars): The `byteCount' argument
36653         specifies the number of bytes to be converted, not the array size.
36654
36655 2002-03-23  Martin Baulig  <martin@gnome.org>
36656
36657         * reflection.h (MonoReflectionSigHelper): New type.
36658
36659         * reflection.c (mono_reflection_sighelper_get_signature_local),
36660         (mono_reflection_sighelper_get_signature_local): New functions.
36661
36662         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36663         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36664         interncalls.
36665
36666 2002-03-23  Martin Baulig  <martin@gnome.org>
36667
36668         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36669         is_writeable is set.
36670         (mono_raw_buffer_update): New function to write the modified map
36671         back to disk.
36672
36673         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36674
36675         * debug-symfile.c (mono_debug_update_symbol_file): Call
36676         mono_raw_buffer_update() when done writing.
36677
36678 2002-03-23  Martin Baulig  <martin@gnome.org>
36679
36680         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36681
36682         * debug-symfile.c: Added support for arguments and local variables.
36683
36684 2002-03-23  Dick Porter  <dick@ximian.com>
36685
36686         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36687         protected by ifdefs, hence breaking the w32 build.
36688
36689 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36690
36691         * object.c: implement is_interned() the right way.
36692
36693 2002-03-21  Martin Baulig  <martin@gnome.org>
36694
36695         * debug-symfile.[ch]: New files to handle debugging information
36696         files. There's also support to dynamically update these symbol
36697         files to include machine dependent information.
36698
36699 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36700
36701         * threads.c (mono_thread_create): new function to create thread
36702         from C
36703
36704 2002-03-20  Martin Baulig  <martin@gnome.org>
36705
36706         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36707         method is a constructor.
36708         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36709         points to ves_icall_InternalInvoke().
36710
36711 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36712
36713         * file-io.c: Flush shouldn't throw exceptions.
36714
36715 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36716
36717         * file-io.c: FileStream flush support; FileSetLength now
36718         restores file pointer.
36719
36720 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36721
36722         * class.c: set image for pointer classes.
36723
36724 2002/03/19  Nick Drochak <ndrochak@gol.com>
36725
36726         * sysmath.c: Forgot one.
36727
36728 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36729
36730         * sysmath.c: Avoid redefining existing names.
36731
36732 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36733
36734         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36735         handled by runtime as icall rather than dllimport from libm.so
36736         * file-io.c, file-io.h: fixed handle argument type.
36737
36738 2002-03-18  Dick Porter  <dick@ximian.com>
36739
36740         * reflection.c (mono_image_get_type_info): rename interface to
36741         iface, because of "#define interface struct" on windows.
36742
36743 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36744
36745         * class.c, class.h: rename and export mono_ptr_class_get().
36746         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36747         * reflection.c, reflection.h, icall.c: better/saner type name
36748         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36749         method signatures.
36750
36751 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36752
36753         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36754
36755         * icall.c (ves_icall_InternalInvoke): impl.
36756
36757 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36758
36759         * reflection.c: output the interface map table, too.
36760
36761 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36762
36763         * class.c (class_compute_field_layout): separate computation of 
36764         static field layout
36765
36766 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36767
36768         * icall.c: added System.Buffer support.
36769         * file-io.c: moved file icalls from PAL to FileStream.
36770
36771 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36772
36773         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36774
36775 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36776
36777         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36778
36779 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36780
36781         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36782
36783 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36784
36785         * debug-helpers.{c,h}: moved here from monograph some useful functions
36786         to locate a method by name/signature in a class or image. Included
36787         also a small and flexible IL disassembler.
36788
36789 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36790
36791         * reflection.c: fixup tokens in methods with small header size, too.
36792
36793 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36794
36795         * object.c (mono_string_to_utf8): remove assert(!error), instead
36796         print a warning. 
36797
36798 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36799
36800         * icall.c: update to the new mono_Array_class_get interface.
36801
36802 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36803
36804         * appdomain.c, object.c: Boehm-GC enable.
36805         * icall.c: make get_data_chunk() support split data requests.
36806         Ensure a class is initialized in more cases. Return only the first
36807         property found in GetProperties() or the compiler gets confused. 
36808         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36809         * reflection.h, reflection.c: add fixup mechanism for field and method
36810         tokens. Initialize assembly->typeref in a single place. Output
36811         properties after events. Support custom attributes for events, too.
36812         Typo fix for paramter custom attrs.
36813
36814 2002-03-07  Martin Baulig  <martin@gnome.org>
36815
36816         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36817
36818 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36819
36820         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36821
36822 2002-03-06  Martin Baulig  <martin@gnome.org>
36823
36824         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36825         non-zero lower bounds. See testcases #F10-#F13.
36826
36827 2002-03-05  Martin Baulig  <martin@gnome.org>
36828
36829         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36830
36831         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36832         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36833         here.
36834         (ves_icall_System_Array_SetValue): Likewise.
36835         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36836         as argument and does the actual work. This function is used when copying a
36837         multi-dimensional array.
36838         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36839         now do all the widening conversions of value types.
36840         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36841
36842 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36843
36844         * class.c: remove some magic numbers and use the smbolic names,
36845         instead. Added init_events() to load event info at class init time.
36846         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36847         and mono_metadata_methods_from_event().
36848         * reflection.h, reflection.c: added support for writing out the evnets
36849         related information.
36850
36851 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36852
36853         * reflection.h, icall.c: use a different method (GetInterfaces)
36854         to gather interface info and add isbyref, isprimitive and
36855         ispointer to the ves_icall_get_type_info() return value.
36856
36857 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36858
36859         * class.h: stared adding support for events.
36860         * icall.c: split find_members implementation. Added debug icall to get
36861         the address of an object.
36862         * reflection.c: handle TypeBuilders in mono_type_get_object().
36863
36864 2002-03-01  Martin Baulig  <martin@gnome.org>
36865
36866         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36867         ArgumentOutOfRangeException(), not an ArgumentException().
36868         (ves_icall_System_Array_GetLowerBound): Likewise.
36869         (ves_icall_System_Array_GetValue): Improved argument checking.
36870         (ves_icall_System_Array_SetValue): Improved argument checking.
36871
36872 2002-03-01  Martin Baulig  <martin@gnome.org>
36873
36874         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36875         called with invalid arguments rather than just dying with g_assert().
36876         (ves_icall_System_Array_SetValue): Likewise.
36877         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36878         raise a NotImplementedException instead.
36879         (ves_icall_System_Array_GetLength): Added argument checking.
36880         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36881
36882 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36883
36884         * object.h (mono_assert): new macros mono_assert and
36885         mono_assert_not_reached
36886
36887 2002-02-28  Martin Baulig  <martin@gnome.org>
36888
36889         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36890         and "System::String::IsInterned" to "System::String::_IsInterned".
36891
36892 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36893
36894         * icall.c: remove hacks for typebuilder. Added icall to create a
36895         modified type from a tybebuilder.
36896         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36897         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36898         to create a backing MonoClass for a TypeBuilder.
36899
36900 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36901
36902         * class.c, class.h: more refactoring of class init.
36903         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36904
36905 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36906
36907         * marshal.c, marshal.h: start of marshaling interface.
36908
36909 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36910
36911         * icall.c: fix order in assembly qualified name icall.
36912
36913 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36914
36915         * class.c: do not free str, since we store it in the hash table.
36916         * reflection.h: add label field to MonoILExceptionInfo.
36917         * reflection.c: handle references to more than one assembly. Handle
36918         case when there isn't a module created in the assembly.
36919
36920 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36921
36922         * class.c: Fix typo. Start refactoring of class init code.
36923
36924 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36925
36926         * appdomain.c: exit with 1 on error.
36927         * class.c: we already have the name in MonoClassField.
36928         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36929         MonoStreamHeader instead of an offset of image->raw_metadata.
36930
36931 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36932
36933         * appdomain.c (mono_init): Be even more descriptive about the error.
36934
36935 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36936
36937         * appdomain.c: give the user an informative message when corlib can't
36938         be loaded.
36939
36940 2002-02-26  Martin Baulig  <martin@gnome.org>
36941
36942         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
36943         New icall to get the time zone data.
36944
36945 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36946
36947         * reflection.c: set virtual and raw size of section correctly.
36948         * threads.c: transfer domain information to newly created threads.
36949
36950 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
36951
36952         * class.c: when instancing a class in a domain, load the default
36953         vaules for static fields from the constant table. Fix System.Enum to
36954         not be an enum.
36955         * icall.c: implement Object::GetType() internalcall. Implemented
36956         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
36957         Fixed checking of binding flags in find_members().
36958         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
36959         * reflection.c: handle enumerations when writing to the constant
36960         table. Use a different object cache for types.
36961
36962
36963 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
36964
36965         * object.c (mono_object_isinst): fix for arrays
36966
36967         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
36968
36969 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
36970
36971         * object.c: don't use mprotect ()  and fix intern pool hash table
36972         lookup for big endian systems.
36973
36974 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36975
36976         * icall.c: change type_is_subtype_of () signature.
36977
36978 2002-02-21  Mark Crichton  <crichton@gimp.org>
36979
36980         * rand.c, rand.h: Added random number generator for
36981         System.Security.Cryptography classes.
36982
36983         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
36984
36985         * icall.c: Added System.Security.Cryptography calls.
36986
36987 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
36988
36989         * class.c, icall.c, metadata.c: better support for pointer types.
36990         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
36991         * reflection.c: Add support for getting custom attrs for properties
36992         and simplify some code.
36993
36994 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36995
36996         * icall.c: change getToken () and add custom attribute GetBlob()helper
36997         method.
36998         * reflection.h: add custom attrs array to the reflection builder structures.
36999         * reflection.c: encode and emit custom attributes for all the relevant
37000         reflection objects. Cache fieldref and methodref tokens. Change
37001         mono_image_create_token() interface to take a MonoDynamicAssembly.
37002         More complete custom attributes decoder. Load custom attributes for
37003         Assembly, Field, Method and Constructor objects, too. Make the
37004         returned array an Attribute[] one, not object[]. Added
37005         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
37006         custom attribute constructor.
37007
37008 2002-02-20  Dick Porter  <dick@ximian.com>
37009
37010         * icall.c:
37011         * rawbuffer.c:
37012         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
37013         problem code out for now).
37014
37015 2002-02-19  Radek Doulik  <rodo@ximian.com>
37016
37017         * object.c (mono_ldstr): use hash table to avoid multiple swapping
37018
37019 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
37020
37021         * icall.c: register the GetCustomAttributes method.
37022         * object.c, object.h: add mono_string_new_len ().
37023         * reflection.h, reflection.c: added mono_runtime_invoke(),
37024         mono_install_runtime_invoke(). Added
37025         mono_reflection_get_custom_attrs () to load custom attributes and
37026         create the attribute objects.
37027
37028 2002-02-19  Dick Porter  <dick@ximian.com>
37029         * threads-dummy-types.c:
37030         * threads-dummy-types.h:
37031         * threads-dummy.c:
37032         * threads-dummy.h:
37033         * threads-pthread-types.c:
37034         * threads-pthread-types.h:
37035         * threads-pthread.c:
37036         * threads-pthread.h:  Deleted obsolete files
37037
37038 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
37039
37040         * class.c (mono_class_vtable): runtime init the class when we
37041         allocate static class data.
37042
37043         * icall.c (ves_icall_System_Array_SetValue): check for null values.
37044
37045         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
37046         and String - but we will need generic marshalling support in the
37047         future. 
37048         (mono_init): set the domain name in a ms compatible way
37049
37050         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
37051         String[].
37052
37053 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
37054
37055         * object.c (mono_array_clone): use alloca() instead of g_malloc  
37056         for sizes
37057
37058         * appdomain.c (mono_domain_unload): impl.
37059
37060 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37061
37062         * appdomain.c, object.c: fix intern pool implementation.
37063         * class.c: fix alignment code.
37064
37065 2002-02-16  Radek Doulik  <rodo@ximian.com>
37066
37067         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
37068         and s2 > s1, just copy lower bytes to be compatible with little
37069         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
37070         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
37071
37072         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
37073         force big_endian to be 1 for big endian machines 
37074         (ves_icall_iconv_new_decoder): ditto
37075
37076 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
37077
37078         * socket-io.c (convert_sockopt_level_and_name): If the system
37079         doesn't define SOL_IP or SOL_TCP, get them by hand using
37080         getprotobyname() and caching the values (because this could be a
37081         slow operation).
37082         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
37083         Use the appropriate struct when the system does support it. Ie,
37084         not all systems have struct ip_mreqn so use struct ip_mreq when
37085         appropriate.
37086
37087 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
37088
37089         * reflection.c: handle finally clauses.
37090
37091 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
37092
37093         * socket-io.c: use g_snprintf() instead of snprintf.
37094
37095 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37096
37097         * reflection.c (mono_param_get_objects): Cast second argument to
37098         mono_method_get_param_names to a const char** to silence the
37099         compiler warning.
37100
37101         * appdomain.c (mono_domain_assembly_open): Put parens around the
37102         truth statement in the for-loop.
37103
37104         * unicode.c (iconv_convert): Got rid of a compiler warning about
37105         int i being unused when the system has a new iconv.
37106         (iconv_get_length): Same.
37107
37108         * image.c (load_class_names): Cast the second argument to
37109         g_hash_table_insert() to char* to hush compiler warnings about the
37110         arg being a const.
37111         (mono_image_open): Same here.
37112
37113         * socket-io.c: Don't conditionally include sys/filio.h or
37114         sys/sockio.h here anymore since we now get them from
37115         io-layer/io-layer.h
37116         (inet_pton): If the system doesn't support inet_aton, implement
37117         using inet_addr and also #define INADDR_NONE if it isn't defined
37118         by the system.
37119
37120 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
37121
37122         * metadata.c, metadata.h: added function to get packing and size info
37123         of a typedef.
37124         * reflection.h, reflection.c: handle field RVA data. Save info about
37125         the table layout if needed. Assign typedef indexes to all the types
37126         before dumping the info about them to avoid forward reference problems.
37127
37128 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
37129
37130         * socket-io.c (convert_sockopt_level_and_name): ifdef
37131         SO_ACCEPTCONN because it is not defined on my system (old debian)
37132
37133 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
37134
37135         * opcode.c: use stddef.h to get NULL.
37136
37137 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37138
37139         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
37140         for FIONBIO, FIONREAD and SIOCATMARK.
37141         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
37142         define INADDR_NONE and besides, inet_addr() is deprecated and
37143         should not be used. Use inet_pton() instead - it also has the
37144         added bonus that it can easily handle IPv6 addresses as well.
37145         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
37146
37147 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
37148
37149         * decimal.c: remove _MSC_VER conditional.
37150
37151 2002-02-13  Dick Porter  <dick@ximian.com>
37152
37153         * socket-io.c: 
37154         * icall.c: Internal calls for Blocking, Select, Shutdown,
37155         GetSocketOption and SetSocketOption
37156
37157 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37158
37159         * assembly.cs: better resolver: use it instead of some kludgy
37160         code.
37161
37162 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37163
37164         * reflection.c: the best way to speed-up the compiler is to avoid
37165         infinite loops.
37166
37167 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37168
37169         * class.c (mono_class_vtable): changed the object layout
37170         (obj->vtable->class). 
37171         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37172
37173 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37174
37175         * assembly.c: look for assemblies in the assembly dir, too.
37176
37177 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37178
37179         * class.c: fix thinko in mono_class_from_type().
37180
37181 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37182
37183         * exception.h, exception.c: added TypeLoadException.
37184         * object.h, object.c: added mono_array_clone ().
37185         * icall.c: handle throwOnError in AssemblyGetType().
37186         Added Array.Clone().
37187         * opcode.h, opcode.c: use a single value for the opcode val.
37188         Compile fix for non-gcc compilers.
37189
37190 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37191
37192         * opcodes.c, opcodes.h: export interesting info about opcodes.
37193
37194 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37195
37196         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37197         icalls. 
37198
37199         * class.c (class_compute_field_layout): set element_class for enums
37200         (mono_class_create_from_typedef): set element_class for normal classes
37201
37202         * icall.c (ves_icall_System_Enum_get_value): impl.
37203
37204         * class.c (mono_class_create_from_typedef): do not set valuetype
37205         flag for System.ValueType and System.Enum
37206
37207 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37208
37209         * unicode.c (iconv_convert): fix big endian problem.
37210
37211 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37212
37213         * class.c: add asserts if we are ever going to scribble over memory.
37214         * socket-io.c: not all systems have AF_IRDA defined.
37215
37216 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37217
37218         * class.c (class_compute_field_layout): do not consider static
37219         fields to compute alignment
37220
37221 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37222
37223         * appdomain.c (mono_appdomain_get): impl.
37224         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37225
37226 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37227
37228         * icall.c: ignore "file://" prefix when loading an assembly.
37229
37230 2002-01-23  Dick Porter  <dick@ximian.com>
37231
37232         * socket-io.c:
37233         * icall.c:
37234         * Makefile.am: Added socket support
37235
37236 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37237
37238         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37239         code back.  This should return the assemblies that are loaded by
37240         the runtime on behalf of an application domain. 
37241
37242         The current implementation is still broken, it just returns every
37243         assembly loaded, but until we get real applications domain this
37244         will do.
37245
37246 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37247
37248         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37249         AppDomain object.
37250
37251 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37252
37253         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37254         the mono_class_from_name lookup.
37255         (ves_icall_get_parameter_info): ditto.
37256         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37257         method.
37258         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37259
37260 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37261
37262         * class.c: load also nested classes on class init.
37263         System.ValueType instance methods gets passed boxed
37264         values, unless methods in derived classed that get a pointer to the
37265         data.
37266         * icall.c: use better name parsing code in GetType().
37267         * image.c, image.h: add mono_image_loaded ().
37268         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37269         * reflection.c, reflection.h: added mono_reflection_parse_type().
37270
37271 2002-01-22  Veronica De Santis <veron78@interfree.it>
37272
37273         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37274         * threads.c : Added the implementation of internal calls for events
37275         * threads.h : Added prototypes of internal calls for events
37276         
37277 2002-01-21  Radek Doulik  <rodo@ximian.com>
37278
37279         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37280
37281 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37282
37283         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37284         (mono_class_value_size): use min_align
37285
37286 2002-01-20  Dick Porter  <dick@ximian.com>
37287
37288         * threads.h:
37289         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37290         so it compiles on w32.
37291
37292 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37293
37294         * metadata.c (mono_type_stack_size): impl.
37295
37296         * class.c (mono_class_get_field): impl. memberref token
37297
37298 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37299
37300         * icall.h : Added the internal calls mapping for CreateMutex_internal
37301                     and ReleaseMutex_internal.
37302         * threads.h : Added the prototype of mutexes internal calls.
37303         * threads.c : Added the implementations of mutexes internal calls.
37304
37305 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37306
37307         * metaparse.h: removed unused file.
37308         * reflection.c, reflection.h: added stream_data_align () function 
37309         to align data in streams and keep stream aligned. Add support for
37310         exception support in method headers.
37311
37312 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37313
37314         * unicode.c: make iconv_convert () return the number of bytess written
37315         in the output buffer.
37316
37317 2002-01-15  Dick Porter  <dick@ximian.com>
37318         * threads.c: Make the runtime's idea of infinite timeouts coincide
37319         with the class library's
37320
37321         Fix a particularly egregious bug in mono_thread_cleanup(). That
37322         code was so utterly bogus it must have been written on a Monday.
37323
37324 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37325
37326         * reflection.h: add subtypes field to TypeBuilder.
37327         * reflection.c: encode constants for literal fields.
37328         Handle subtypes. Fix user string token (and add a zero byte)
37329         at the end.
37330         
37331 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37332
37333         * class.c (mono_class_init): bug fix: assign slot numbers for
37334         abstract methods.
37335
37336 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37337
37338         * reflection.c: don't try to output a code RVA for abstract methods.
37339         Small fixes for method header format. Output parameter info to the
37340         ParamDef table. Save method overriding info to MethodImpl table.
37341         Fix property support. Allow typedef.extends to be a type in the
37342         building assembly.
37343         * verify.c: fix off-by-one error.
37344
37345 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37346
37347         * class.c: fix mono_class_from_mono_type () for szarray types.
37348         Remove unused cache check in mono_class_from_type_spec().
37349         * icall.c: *type_from_name () functions handle simple arrays and byref.
37350         * reflection.c: handle byref and szarray types. Handle methods without
37351         body (gets P/Invoke compilation working). Handle types and fields in
37352         get_token ().
37353         * reflection.h: add rank to MonoTypeInfo.
37354
37355 2002-01-10  Dick Porter  <dick@ximian.com>
37356
37357         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37358         internal calls
37359
37360 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37361
37362         * icall.c: initialize class in type_from_handle ().
37363         Loop also in parent classes for get_method ().
37364         * reflection.c: properly encode class and valuetype types.
37365         Start on encoding TypeBuilder types. Handle fieldrefs.
37366         Use correct length when registering a user string.
37367         Handle ConstructorBuilder and MonoMethod in get_token ().
37368         Make mono_type_get_object () aware of cached types.
37369         * object.c: back out change to mono_string_new ().
37370
37371 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37372         * object.c: mono_string_new should return a NULL when the string 
37373         passed in is NULL -- not try to deference it.
37374         
37375 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37376
37377         * icall.c: hack to make IsSubType work for TypeBuilders.
37378         * reflection.c: emit constructors before methods.
37379         Retrieve param names in mono_param_get_objects().
37380
37381 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37382
37383         * Makefile.am: fix list of headers and sources so automake 1.5
37384         doesn't complain. Removed \# at end of list.
37385
37386 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37387
37388         * reflection.c: get token for a method ref. Set return type of
37389         constructor to void.
37390         * loader.c: debug message.
37391         * class.c: typo fix.
37392
37393 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37394
37395         * icall.c: fix array init with rank > 1. FindMembers
37396         loops in parent class as well.
37397         * image.c: do not insert nested types in name cache.
37398         * reflection.c: warning fix.
37399         * reflection.h: add override method (for interface impl).
37400
37401 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37402
37403         * metadata.c: fix customattr decoding.
37404
37405 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37406
37407         * rawbuffer.cs: Added native Win32 implementation, avoids using
37408         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37409
37410 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37411
37412         * class.c: make the low-level routines handle the cache.
37413
37414 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37415
37416         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37417
37418 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37419
37420         * class.c: fix mono_array_element_size() for objects.
37421         * class.h, class.c: add properties to MonoClass and load them
37422         at init time.
37423         * icall.c: check with isinst() when assigning a value to an array
37424         instead of requiring the classes to match exactly.
37425         Implemented icall for System.Type::GetType().
37426         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37427         enums. Handle bindingflags when looking for methods and fields.
37428         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37429         and mono_metadata_methods_from_property().
37430         * reflection.h, reflection.c: added structures for propreties,
37431         parameters and enums. Implemented mono_property_get_object() and
37432         mono_param_get_objects().
37433
37434 2001-12-18  Dick Porter  <dick@ximian.com>
37435
37436         * file-io.c: Use mono_string_to_utf16() instead of
37437         mono_string_chars()
37438
37439         * object.c: Added mono_string_to_utf16(), which copies the non
37440         NULL-terminated MonoString into a new double-null-terminated
37441         buffer.
37442
37443 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37444
37445         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37446
37447 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37448
37449         * file-io.c: raise exceptions if handle is invalid.
37450
37451 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37452
37453         * assembly.c: yet another check for mscorlib.
37454         * class.c, class.h: load nesting info for classes.
37455         * icall.c: many new functions to support the Reflection classes.
37456         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37457         * reflection.h, reflection.c: mono_image_create_token(),
37458         mono_assembly_get_object(), mono_type_get_object(),
37459         mono_method_get_object(), mono_field_get_object(): methods to return
37460         objects that parallel the C representation of assemblies, types,
37461         methods, fields.
37462
37463 2001-12-11  Dick Porter  <dick@ximian.com>
37464
37465         * icall.c:
37466         * file-io.c: Internal calls for file IO.
37467
37468 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37469
37470         * tabledefs.h: missing FileAttributes.
37471         * verify.h, verify.c: use is_valid_string () to simplify and check for
37472         valid strings more correctly. Fix warnings and speeling.
37473         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37474         Check code: branches, maxstack, method calls.
37475
37476 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37477
37478         * object.c (mono_object_allocate): removed static, so that the jit
37479         can allocate value types.
37480
37481         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37482
37483 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37484
37485         * class.c: init enum types right away and register the
37486         token->MonoClass map in mono_class_create_from_typedef ().
37487         * verify.h, verify.c: first cut of the verifier.
37488         * pedump.c: add --verify switch to verify metadata tables.
37489         * tabledefs.h: add some missing enums.
37490
37491 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37492
37493         * class.c (mono_install_runtime_class_init): impl.
37494         (mono_class_init): renamed mono_class_metadata_init to
37495         mono_class_init, also removed the metadata_inited flag
37496
37497         * object.c (mono_object_isinst): use faster algorithm
37498
37499 2001-11-30  Radek Doulik  <rodo@ximian.com>
37500
37501         * mono-endian.h: reverted last change
37502         added function prototypes
37503
37504         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37505         add mono-endian.c back
37506
37507         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37508         for unaligned access, I've mistaked it with endianess. I am
37509         sorry.
37510         (mono_read16): fix reverted endianess
37511         (mono_read64): ditto
37512         (mono_read32): ditto
37513
37514 2001-11-30  Dick Porter  <dick@ximian.com>
37515
37516         * exception.c: Implement mono_exception_from_name()
37517
37518 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37519
37520         * metadata.h, metadata.c: remove params_size and locals_size and their
37521         calculation from the metadata code: they are only usefult to the
37522         interp.
37523
37524 2001-11-29  Radek Doulik  <rodo@ximian.com>
37525
37526         * object.c (mono_ldstr): swap bytes here, it's probably not the
37527         best place, but works for me now, I'll redo it once I know mono
37528         better, also note that I add PROT_WRITE and don't reset back, also
37529         note that it's only affects big endians, so x86 should be OK
37530
37531         * mono-endian.h (read16): use just glib macros for both endians
37532
37533         * mono-endian.c: removed as glib macros are used in in
37534         mono-endian.h so we don't need to care about endianess for read
37535         macros as glib does that for us already
37536
37537 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37538
37539         * class.h, class.h: take minimum alignment into consideration so
37540         that the fields of a class remain aligned also when in an array.
37541
37542 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37543
37544         * loader.h, loader.c: add mono_method_get_param_names().
37545         * class.c: 0-init class fields.
37546
37547 2001-11-26  Dick Porter  <dick@ximian.com>
37548
37549         * icall.c:
37550         * threads-types.h:
37551         * threads.c: New file that handles System.Threading on all platforms
37552
37553         * object.c: 
37554         * object.h: Remove the synchronisation struct from MonoObject,
37555         replace it with a pointer that gets initialised on demand
37556
37557         * Makefile.am: Replace all the system-specific threading code with
37558         a single file that uses the new wrapper library
37559
37560 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37561
37562         * class.c, class.h: add mono_install_trampoline() so that the runtime
37563         can register a function to create a trampoline: removes the ugly
37564         requirement that a runtime needed to export arch_create_jit_trampoline.
37565         * object.h, object.c: added mono_install_handler() so that the runtime
37566         can install an handler for exceptions generated in C code (with
37567         mono_raise_exception()). Added C struct for System.Delegate.
37568         * pedump.c: removed arch_create_jit_trampoline.
37569         * reflection.c: some cleanups to allow registering user strings and
37570         later getting a token for methodrefs and fieldrefs before the assembly
37571         is built.
37572         * row-indexes.h: updates and fixes from the new ECMA specs.
37573
37574 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37575
37576         * class.h, class.c: add enum_basetype field to MonoClass.
37577         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37578         to get index in the constant table reated to a field, param or
37579         property.
37580         * reflection.h, reflection.c: handle constructors. Set public-key and
37581         version number of the built assembly to 0.
37582         * row-indexes.h: update from new ECMA spec.
37583
37584 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37585
37586         * class.h, class.c: add a max_interface_id to MonoClass.
37587         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37588         since it's used to do that. Added mono_type_type_from_obj().
37589         Make GetType() return NULL instead of segfaulting if the type was not
37590         found. Handle simple arrays in assQualifiedName.
37591         * object.h: add a struct to represent an Exception.
37592         * reflection.c: output call convention in method signature.
37593         Add code to support P/Invoke methods and fixed offsets for fields.
37594
37595 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37596
37597         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37598         the value.
37599         * icall.c: use mono_array_addr instead of array->vector: fixes the
37600         reflection image writing.
37601         * reflection.c: init call convention byte to 0 in method signature.
37602         Encode the property signature. Don't output property-related methods
37603         twice. Really process the properties for a type (don't cast a field to
37604         a property, my mom always told me that).
37605         Fix 64 bit issues in pointer alignment in a different and more
37606         readable way.
37607
37608 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37609
37610         * loader.h: Removed type class from MonoDefaults, added monotype
37611
37612         * loader.c: Loaded MonoType, removed loading of Type
37613
37614         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37615         and fills in System.Type._impl with a RuntimeTypeHandle rather
37616         than the actual MonoClass *
37617
37618         (ves_icall_type_from_handle): change from type_class to
37619         monotype_class
37620
37621         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37622         implemented
37623
37624         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37625         implemented
37626
37627         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37628
37629         (ves_icall_System_Reflection_Assembly_GetType): implemented
37630
37631         (ves_icall_System_MonoType_assQualifiedName): implemented
37632
37633         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37634
37635 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37636
37637         * assembly.c (mono_assembly_open): Implement a cache for the
37638         assemblies. 
37639
37640         (mono_assembly_close): only destroy the assembly when the last
37641         reference is gone.
37642         
37643 2001-11-09  Dick Porter  <dick@ximian.com>
37644
37645         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37646
37647 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37648
37649         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37650
37651 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37652
37653         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37654         from Martin Weindel.
37655         * object.h: add mono_string_chars ().
37656
37657 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37658
37659         * reflection.c (build_compressed_metadata): Eliminates warnings
37660         and uses 64-bit clean code.
37661
37662         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37663         (mono_type_equal): Change signature to eliminate warnings.
37664
37665 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37666
37667         * icall.c, loader.c: remove the internalcall array constructors.
37668         Changes to match the new MonoArray structure.
37669         * object.h, object.c: an array object doesn't allocate an extra
37670         vector. Add mono_array_new_full () to create jagged arrays easily.
37671
37672 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37673
37674         * metadata.h, metadata.c: add mono_metadata_field_info () to
37675         retreive all the info about a field from vairous tables.
37676         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37677         * class.h, class.c: augment MonoClassField with more info.
37678         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37679         policy and load a field's RVA if needed.
37680
37681 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37682
37683         * class.c (mono_class_metadata_init): create a trampoline for all
37684         virtual functions instead of actually compiling them.
37685
37686 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37687
37688         * class.h, class.c: include name in MonoClassField.
37689         * class.c: fix fundamental type of System.Object and System.String.
37690         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37691         tokens in ldtoken.
37692         * icall.c: remove internalcalls for the Reflection stuff that is now
37693         done in C# code.
37694         * loader.c: mono_field_from_memberref () implementation.
37695         * mono-endian.c: thinko (s/struct/union/g).
37696         * object.c, object.h: make the mono_string_* prototypes actually use
37697         MonoString instead of MonoObject.
37698         * reflection.c, reflection.h: updates for changes in the reflection
37699         code in corlib: we use C structures that map to the actual C# classes.
37700         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37701         fat method header if needed and use the info from the ILGenerator for
37702         methods. Handle fields in types. Misc fixes.
37703
37704 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37705
37706         * class.c (mono_class_metadata_init): bug fix: always allocate
37707         space for static class data
37708
37709 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37710
37711         * class.c (mono_compute_relative_numbering): use relative
37712         numbering to support fast runtime type checks.
37713
37714 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37715
37716         * class.c (mono_class_create_from_typeref): added debugging output
37717         to print class name when MonoDummy is returned instead of real class
37718
37719 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37720
37721         * class.c (mono_class_metadata_init): interface offset table now
37722         contains pointers into the vtable - this is more efficient for the jit
37723
37724 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37725
37726         * class.c (mono_class_metadata_init): use a temporary vtable (the
37727         old algorithm only worked for the interpreter, but not for the jit)
37728
37729 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37730
37731         * loader.c (method_from_memberref): use mono_class_get to get the
37732         class of an array instead of using System.Array directly.
37733         (mono_get_method): also add MEMBERREF methods to the method cache
37734         which usefull for arrays.
37735
37736 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37737
37738         * pedump.c (arch_compile_method): added to compute vtable entry
37739
37740         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37741         number of interfaces.
37742         
37743         * class.h: merged MonoArrayClass into MonoClass
37744
37745         * class.c (mono_class_create_from_typedef): compute the vtable size and
37746         allocate space to include the vtable inside MonoClass
37747         (mono_class_metadata_init): initialize the vtable
37748
37749 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37750
37751         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37752         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37753         * image.c: endian fixes by Laurent Rioux.
37754         * object.h, object.c: rename MonoStringObject to MonoString and
37755         MonoArrayObject to MonoArray. Change some function names to conform to
37756         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37757         guint16* as first argument, so don't use char*.
37758         Provide macros to do the interesting things on arrays in a portable way.
37759         * threads-pthread.c: updates for the API changes and #include <sched.h>
37760         (required for sched_yield()).
37761         * icall.c: updates for the API changes above.
37762         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37763         platforms that need them.
37764
37765 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37766
37767         * class.c: set the correct type for all the fundamental
37768         type when loading the class.
37769
37770 2001-10-05  Dick Porter  <dick@ximian.com>
37771
37772         * threads-pthread.c (pthread_mutex_timedlock): Simple
37773         compatibility version for C libraries that lack this call.
37774
37775 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37776
37777         * class.c: MonoTypes stored in MonoClass are stored as
37778         fundamental MonoTypes when the class represents a
37779         fundamental type (System.Int32, ...).
37780         The TypeHandle return by ldtoken is a MonoType*.
37781         * icall.c: ves_icall_get_data_chunk () write out all the
37782         PE/COFF stuff. Implement ves_icall_define_method (),
37783         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37784         * image.c: properly skip unknown streams.
37785         * loader.h, loader.c: add type_class to mono_defaults.
37786         * metadata.c, metadata.h: export compute_size () as
37787         mono_metadata_compute_size () with a better interface.
37788         Typo and C&P fixes.
37789         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37790         * reflection.c, reflection.h: many cleanups, fixes, output method
37791         signatures and headers, typedef and typeref info, compress the metadata
37792         tables, output all the heap streams, cli header etc.
37793         * row-indexes.h: typo fixes.
37794
37795 2001-10-04  Dick Porter  <dick@ximian.com>
37796
37797         * object.h: Add a synchronisation mutex struct to MonoObject
37798
37799         * object.c (mono_new_object): Initialise the object
37800         synchronisation mutexes
37801
37802         * icall.c: System.Threading.Monitor internal calls
37803         
37804         * threads-pthread.h:
37805         * threads-pthread.c: System.Threading.Monitor internal calls
37806
37807         * threads-types.h: New file, includes the system-specific thread
37808         structures
37809         
37810         * threads-pthread-types.h:
37811         * threads-pthread-types.c: New files, handle pthread-specific
37812         synchronisation types
37813
37814         * threads-dummy-types.h: 
37815         * threads-dummy-types.c: New files of dummy support for
37816         thread-specific types
37817
37818         * metadata.c:
37819         * image.c:
37820         * pedump.c: include mono-endian.h not endian.h
37821         
37822         * Makefile.am: More threads files.
37823         Name mono-endian.h not endian.h
37824
37825 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37826
37827         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37828         stuff and implement a few more bits.
37829         * icall.c: a field needs to be dereferenced twice. Do not use the same
37830         name for two variables in the same scope.
37831         * image.c, image.h: cleanups.
37832
37833 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37834
37835         * class.c (mono_class_metadata_init): bug fix: compute the right size
37836
37837 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37838
37839         * icall.c: implemented some of the Reflection internalcalls.
37840         * image.c, image.h: start writing out the PE/COFF image.
37841         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37842         that does the reverse than decode_blob_size ().
37843         * object.c: use mono_metadata_encode_value (). Move here
37844         temporary implementation of mono_string_to_utf8 ().
37845         * rawbuffer.c: make malloc_map static.
37846
37847 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37848
37849         * metadata.c: fix type comparison for arrays.
37850         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37851         Added a couple of new classes to monodefaults.
37852         * icall.c: added a couple of Reflection-related internalcalls.
37853         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37854         Added a byval_arg MonoType to MonoClass.
37855
37856 2001-09-28  Dick Porter  <dick@ximian.com>
37857
37858         * icall.c:
37859         * threads-pthread.h: 
37860         * threads-pthread.c: Implemented internal calls for
37861         LocalDataStoreSlot operations.  Applied mutexes around all shared
37862         data.  Reworked the thread creation and Start() operations to
37863         avoid a race condition.
37864         
37865         * threads-dummy.h:
37866         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37867
37868 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37869
37870         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37871
37872 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37873
37874         * class.c, loader.c: warn and return NULL instead of erroring out.
37875         * icall.c: added System.AppDomain::getCurDomain().
37876         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37877
37878 2001-09-25  Dick Porter  <dick@ximian.com>
37879
37880         * threads-pthread.h:
37881         * threads-pthread.c: Implemented timed thread joining and added
37882         System.Threading.Thread::Join_internal internal call
37883
37884         * icall.c: Added System.Threading.Thread::Join_internal internal call
37885
37886         * threads-dummy.h:
37887         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37888
37889 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37890
37891         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37892         mono_string_intern () to implement the semantics of the ldstr opcode
37893         and the interning of System.Strings.
37894         * icall.c: provide hooks to make String::IsIntern and String::Intern
37895         internalcalls.
37896
37897 2001-09-23  Dick Porter  <dick@ximian.com>
37898
37899         * threads-dummy.c: 
37900         * threads-dummy.h: New files of dummy threading routines
37901
37902         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37903         support code based on system specifics
37904
37905         Rename PTHREAD_LIBS to THREAD_LIBS
37906         
37907 2001-09-23  Dick Porter  <dick@ximian.com>
37908
37909         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37910         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37911         internal calls.
37912         (mono_thread_init): Set up a Thread object instance to return when
37913         the main thread calls Thread.CurrentThread
37914         (mono_thread_cleanup): Wait for all subthreads to exit
37915
37916         * icall.c: New internal calls for System.Threading.Thread::Sleep
37917         (including Schedule) and CurrentThread
37918
37919         * threads.h: New file, to insulate thread-specific stuff from the
37920         rest of the code
37921
37922 2001-09-21  Dick Porter  <dick@ximian.com>
37923
37924         * threads-pthread.h: 
37925         * threads-pthread.c: New file, for handling pthreads-style
37926         threading support.  Start() now starts a new thread and executes
37927         the ThreadStart delegate instance.
37928
37929         * icall.c: Added the internalcall for
37930         System.Threading.Thread::Start_internal
37931
37932         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37933
37934 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37935
37936         * loader.c: work around the different signatures for delegates
37937         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37938
37939 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37940
37941         * class.h, class.c: add mono_class_get_field_from_name ().
37942         * *: Fix C comments and other ANSI C issues.
37943
37944 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
37945
37946         * endian.h, assembly.c: fix some endianness issues.
37947
37948 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
37949
37950         * loader.h, load.c: add delegate_class to mono_defaults.
37951         Handle runtime provided methods in mono_get_method ().
37952
37953 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
37954
37955         * loader.c (mono_get_method): use pinvoke for internal call
37956
37957         * icall.c: use pinvoke for internal call
37958
37959         * loader.c (method_from_memberref): set the method name
37960
37961 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
37962
37963         * metadata.c: help the compiler generate better code for
37964         mono_class_from_mono_type ().
37965
37966 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
37967
37968         * class.c (mono_class_metadata_init): delayed computing of the
37969         class size to mono_class_metadata_init ()
37970
37971 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
37972
37973         * class.c, class.h: add an interfaces member to MonoClass.
37974         * image.c, image.h: add assembly_name field to MonoImage
37975         from the assembly table.
37976         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
37977
37978 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
37979
37980         * class.c: Handle Array in mono_class_from_mono_type ().
37981         * metadata.c, pedump.c: some endian fixes.
37982
37983 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37984
37985         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
37986         * metadata.c: fix small problem introduced with the latest commit.
37987
37988 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
37989
37990         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
37991         We don't need a MonoMetadata pointer anymore to compare signatures in
37992         mono_metadata_signature_equal (), update callers.
37993         Reduced memory usage an number of allocations for MonoMethodHeader and
37994         MonoMethodSignature.
37995
37996 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
37997
37998         * metadata.c: added compare for szarray.
37999
38000 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
38001
38002         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
38003         and add a couple more types to it and mono_defaults. Give an hint on
38004         classes that need implementing in our corlib and are referenced
38005         in mscorlib.
38006
38007 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
38008
38009         * class.h, class.c: keep track if a class is also an Enum.
38010         * loader.c: Implement a couple more types for use in libffi
38011         marshalling. Gives better diagnostics when failing to dlopen
38012         a library. Set method->klass for P/Invoke methods, too.
38013
38014 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
38015
38016         * class.c, class.h: add a MonoType this_arg to MonoClass that
38017         represents a pointer to an object of the class' type that
38018         can be used by the interpreter and later the type cache.
38019         Add best guess alignment info for valuetype objects.
38020
38021 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
38022
38023         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
38024         into MonoType: one less level of indirection and allocation and
38025         simplifies quite a bit of code. Added cache for MonoTypes that are
38026         used frequently, so that we don't need to allocate them all the time.
38027
38028 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
38029
38030         * class.c (mono_class_create_from_typedef): System.Enum is also a
38031         value type, although it does not derive from System.ValueType
38032         (maybe a bug in the ms compiler?)
38033
38034         * metadata.c (mono_type_size): return the right size for value types
38035
38036         * loader.c (mono_get_method): only initialize method header if not abstract
38037
38038         * class.c (mono_class_from_mono_type): use mono_default values. 
38039
38040 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
38041
38042         * *: use MonoClass pointers instead of <type_tokens>
38043         
38044         * class.h: new flag: metadata_inited.
38045
38046         * class.c (mono_class_metadata_init): impl.
38047         (mono_class_instance_size): impl.
38048         (mono_class_data_size): impl.
38049
38050 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
38051
38052         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
38053         MonoClass now has the name and name_space fields. 
38054         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
38055         mono_get_method () takes and optional MonoClass as argument.
38056         Removed mono_typedef_from_name() and added mono_class_token_from_name()
38057         instead that takes advantage of a map from class names to typedef
38058         tokens in MonoImage.
38059
38060 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
38061
38062         * metadata.c: zero is not a valid alignment boundary.
38063         Merge MONO_TYPE_VOID in default decoding code.
38064
38065 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
38066
38067         * image.h: merged MonoMetadata into MonoImage
38068
38069         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
38070         identify the type of elements.
38071
38072 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
38073
38074         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
38075         * cil-coff.h: split MonoMSDOSHeader and add size info.
38076         * image.c: add some consistency checks.
38077         * metadata.c: fix row size computation: one programmer
38078         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
38079         add explanation for the locator routine.
38080         Fix decoding of size in method header.
38081         
38082 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
38083
38084         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
38085         (g_concat_dir_and_file): Bring g_concat_dir_and_file
38086         function from gnome-libs.  This uses the right path separator
38087         based on the OS, and also works around a bug in some systems where
38088         a double slash is not allowed. 
38089         (default_assembly_name_resolver): Use g_concat_dir_and_file
38090         (mono_assembly_open): ditto.
38091
38092 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
38093
38094         * metadata.c (mono_metadata_signature_equal): impl.
38095
38096         * *: void is now a realy MonoType (instead of using NULL)
38097         
38098         * metadata.c (do_mono_metadata_parse_type): use
38099         mono_metadata_parse_type to parse void value.
38100
38101 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
38102
38103         * metadata.c, metadata.h: in the signature and method header store
38104         only the space required for holding the loca vars and incoming arguments.
38105
38106 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
38107
38108         * metadata.c (do_mono_metadata_parse_type): treat void like any
38109         other type (instead of assigning NULL);
38110
38111 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
38112
38113         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
38114
38115 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
38116
38117         * image.c (do_mono_image_open): added a cache for arrays.
38118
38119 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38120
38121         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
38122         decode a single column from a row in a metadata table and changes
38123         to take advantage of it in the typedef locator (gives a nice speed up).
38124         Store offset info for function params.
38125
38126 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
38127
38128         * image.h (MONO_IMAGE_IS_CORLIB): removed 
38129
38130 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
38131
38132         * assembly.c: how could mono_assembly_close () had ever worked?
38133         * metadata.c, metadata.h: provide offset info for local vars.
38134         Implement mono_type_size () to take care of alignment as well
38135         as size (it was mono_field_type_size in cli/class.c before).
38136
38137 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
38138
38139         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
38140
38141         * assembly.h (CORLIB_NAME): set to corlib.dll
38142
38143         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
38144
38145 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38146
38147         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
38148         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
38149         tokentype.h: massive namespace cleanup.
38150
38151 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38152
38153         * metadata.h, metadata.c: decode exception clauses when parsing method header.
38154
38155 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38156
38157         * metadata.c (mono_metadata_free_type): added check for type !=
38158         NULL (void) before calling mono_metadata_free_type()
38159
38160 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38161
38162         * metadata.h, row_indexes.h: added header with enumerations to use
38163         to index in the columns from tables in metadata and to decode coded
38164         tokens: we should start using this instead of embedding magic numbers
38165         all over the code.
38166
38167 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38168
38169         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38170         Move metadata_t info from cli_image_info_t to MonoImage, where
38171         it's easily accessible. Changed all the uses accordingly.
38172         Added the method and class caches to MonoImage.
38173         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38174         and mono_metadata_decode_value () signature to be more consistent
38175         with the other parse functions (and simplify code). Taken advantage
38176         of zero-length array allocation with GCC. Removed reduntant (and
38177         wrong) MonoFieldType struct and use MonoParam instead. Changed
38178         mono_metadata_parse_field_type () to use common code for parsing.
38179         Added mono_metadata_typedef_from_field () and
38180         mono_metadata_typedef_from_method () to lookup a typedef index from a
38181         field or method token.
38182         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38183
38184 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38185
38186         * metadata.c (mono_metadata_parse_field_type): Implement. 
38187         (do_mono_metadata_parse_type): Split engine from
38188         mono_metadata_parse_type, so that we can create smaller structures
38189         for things that just have one pointer to the MonoType (look at
38190         the MonoFieldType)
38191
38192 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38193
38194         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38195         as Jan Gray found out, it is incorrect. 
38196
38197 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38198
38199         * assembly.c: Implement asssembly loading.  This loads an image
38200         and loads all the referenced assemblies.  Come to think of it, we
38201         could always do lazy loading of the assemblies. 
38202
38203         * image.c (mono_image_open): Keep loaded images in a hashtable.
38204
38205         * image.h (MonoImage): Add reference count.
38206
38207 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38208
38209         * assembly.c (mono_assembly_open): Keep track of the file name in
38210         case the assembly has no ASSEMBLY table.
38211
38212         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38213         from get.c here.
38214
38215 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38216
38217         * metadata.c, metadata.h: decode local vars in method header
38218         parse function. Change callers accordingly.
38219
38220 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38221
38222         * metadata.h, cil-coff.h: protect against multiple inclusion.
38223         Added some new structures to hold information decoded from metadata:
38224         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38225         and relevant decoding/free functions.
38226         * metadata.c: implement decoding functions. Add warning for out of bounds
38227         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38228         all the info about a method signature and invocation. Remove check on
38229         uninitialized local var in parse_mh() and fix memory leak.
38230
38231 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38232
38233         * metadata.h: More macros.
38234
38235         * tokentype.h: New file.
38236
38237 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38238
38239         * assembly.c: added a consistency check and initialize
38240         some structures with g_new0().
38241         * metadata.c: fixed a couple more bugs in table size computation
38242         and add other checks for out-of bound access to metadata.
38243
38244 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38245
38246         * metatada.c: fix bugs computing table sizes. Spew a
38247         warning when index in string heap is out of bounds.
38248
38249 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38250
38251         * metadata.h: Add a couple of macros to manipulate tokens. 
38252
38253 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38254
38255         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38256         cli_section_tables).
38257
38258 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38259
38260         * metadata.c (mono_metadata_user_string): New function, provides
38261         access to the UserString heap. 
38262
38263 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38264
38265         * metadata.c: Add inline documentation.
38266
38267 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38268
38269         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38270         files. 
38271
38272 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38273
38274         * typeattr.h: New file, TypeAttribute flags. 
38275
38276 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38277
38278         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38279         mono_assembly_ensure_section): Section loading code.
38280         (load_section_tables): Load the sections.
38281
38282         * mono/metadata/metadata.c (mono_metadata_locate_token,
38283         mono_metadata_locate): Functions to locate the information
38284         definition given a token or a table and an index.
38285         (mono_metadata_compute_table_bases): New.
38286         (compute_size): New function to compute the sizes of the various
38287         tables.
38288
38289         * mono/metadata/metadata.h: Finish listing the different index
38290         types. 
38291
38292         * mono/metadata/pedump.c: Improve to dump new information.
38293
38294 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38295
38296         * mono/metadata/metadata.c: Entered all the tables matching
38297         Beta2. 
38298
38299         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2