Add an helper function to deal with NULL MonoMethod pointers
[mono.git] / mono / metadata / ChangeLog
1 2011-01-04  Veerapuram Varadhan  <v.varadhan@gmail.com>
2
3         * assembly.c (framework_assemblies): Map System.Transactions to
4         4.0 framework assemblies.
5
6         Fixes #635335
7
8 2010-11-03  Martin Baulig  <martin@ximian.com>
9
10         * mono-debug.c (mono_register_symfile_for_assembly): New method.
11         This is used together with mono_register_bundled_assemblies() and
12         mono_register_config_for_assembly() to support bundles.
13
14 2010-07-30  Mark Probst  <mark.probst@gmail.com>
15
16         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Add casts to fix
17         compiler warnings on AMD64.
18
19 2010-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
20
21         Add support for calling vararg methods from SRE code.
22         This requires storing per-memberref signatures so
23         the JIT can know how many varargs parameters are
24         been passed.
25
26         * loader.c (mono_method_get_signature_full): If the
27         image is dynamic call mono_reflection_lookup_signature
28         to lookup the signature.
29
30         * reflection.c (mono_image_create_method_token): Save
31         the method object into the MonoDynamicImage::tokens.
32         Create a signature struct for MethodBuilders.
33         Save the signature into vararg_aux_hash so it can be
34         retrieved later.
35
36         * reflection.c (mono_reflection_lookup_signature): New
37         function. Check vararg_aux_hash for a signature before
38         returning method's own signature.
39
40         * metadata-internals.h (MonoDynamicImage): Add new
41         vararg_aux_hash hashtable.
42
43         * object-internals.h: Add mono_reflection_lookup_signature.
44
45         Fixes #626441
46
47 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
48
49         * verify.c (mono_method_verify): Don't move forward
50         with verification if a stack overflow is detected for
51         the ARGLIST opcode.
52
53         Fixes #601953
54
55 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
56
57         * class.c (mono_bounded_array_class_get): Fail arrays
58         of void or typedbyref. Those two types are not allowed
59         to be used with arrays. Failing them is easier and less
60         error prone than returning NULL.
61
62         Fixes #603279
63
64 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
65
66         * object.c (mono_get_delegate_invoke): Don't assert if
67         the Invoke method is not found. This can happen with
68         broken types and it's the caller resposibility to deal
69         with a null return.
70
71         Fixes #553403
72
73 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
74
75         * class.c (mono_assembly_name_from_token): Handle
76         images with null assembly. This can happen with resource
77         or broken assemblies.
78
79         Fixes #623586.
80
81 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
82
83         * class.c (concat_two_strings_with_zero): Guard against
84         null strings.
85
86         Modified version of patch by Sebastien Pouliot.
87
88         Fixes #623653.
89
90 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
91
92         * image.c (mono_image_load_module): Handle the case of
93         module index equal or smaller than zero. It is possible
94         to embed a valid zero index into metadata so this case
95         must be explicitly handled.
96
97         Patch by Sebastien Pouliot.
98
99         Fixes #623581.
100
101 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
102
103         * metadata-verify.c (INVALID_IMPLMAP_FLAGS_BITS): Add non standard
104         bits for best fit on/off (4,5) and throw on unmappable on/off (12/13).
105
106         Fixes #622221.
107
108 2010-07-27  Geoff Norton  <gnorton@novell.com>
109
110         * sgen-archdep.h: Ensure we store the registers we actually
111         need to scan.
112
113 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
114
115         * verify.c (do_invoke_method): Improve error message.
116
117 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
118
119         * verify.c (mono_generic_param_is_constraint_compatible): Don't
120         fail a contraint check even if the candidate has no constraints.
121         All constraints might resolve to the candidate itself so it can
122         have none.
123
124         Fixes #622225.
125
126 2010-07-25  Mark Probst  <mark.probst@gmail.com>
127
128         * sgen-internal.c: Only compile this if HAVE_SGEN_GC is defined.
129
130 2010-07-24  Mark Probst  <mark.probst@gmail.com>
131
132         * sgen-internal.c, sgen-gc.h, sgen-major-copying.c: Make the
133         internal allocator fast by keeping free-lists of chunks, not only
134         within chunks.  Align the chunks, so that on freeing we can get
135         the chunk without searching.
136
137 2010-07-24  Mark Probst  <mark.probst@gmail.com>
138
139         * sgen-internal.c, sgen-gc.c, sgen-gc.h, sgen-gray.c,
140         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning-stats.c,
141         sgen-pinning.c: Allocate fixed-size structs without specifying the
142         size, instead registering it once with its type.
143         Dynamically-sized need their size specified when being freed.
144
145 2010-07-24  Mark Probst  <mark.probst@gmail.com>
146
147         * sgen-major-copying.c, sgen-internal.c, sgen-gc.c, sgen-gc.h,
148         sgen-pinning.c: Copying major collector doesn't mess around with
149         internals of the internal allocator anymore, instead using public
150         functions.
151
152 2010-07-24  Mark Probst  <mark.probst@gmail.com>
153
154         * sgen-internal.c: Internal allocator in its own module.
155
156         * sgen-gc.c, sgen-gc.h, sgen-gray.c, sgen-los.c,
157         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning.c,
158         sgen-pinning-stats.c: Remove internal allocator and call the
159         public functions now.
160
161         * Makefile.am: Added new file.
162
163 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
164
165         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix warnings on amd64.
166
167 2010-07-24  Sanjoy Das <sanjoy@playingwithpointers.com>
168
169         * sgen-gc.h: Removed 'foo defined but not used' warnings for the
170           *_signal_num variables.
171
172 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
173
174         * file-io.c (ves_icall_System_IO_MonoIO_Read): Add a null check.
175         (ves_icall_System_IO_MonoIO_Write): Ditto.
176
177         * loader.c (mono_loader_cleanup): Delete loader_mutex, the shutdown races should
178         be fixed now.
179
180 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
181
182         * loader.c (mono_loader_lock_if_inited): New helper function which can be called
183         during startup before the loader lock is initialized.
184         (mono_loader_unlock_if_inited): Ditto.
185
186
187 2010-07-21  Geoff Norton  <gnorton@novell.com>
188
189         * sgen-archdep.h: Fix the build on amd64-darwin.
190
191 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
192
193         * object.c (mono_print_unhandled_exception): Fix a warning.
194
195 2010-07-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
196
197         * threadpool.c: use a monitor thread to start up new ones when needed.
198         Fixes bug #622398.
199
200 Thu Jul 15 18:44:44 CEST 2010 Paolo Molaro <lupus@ximian.com>
201
202         * reflection.c, class-internals.h, class.c, icall.c: support
203         reflection of default constant value for Re.Emit properties.
204
205 2010-07-14  Miguel de Icaza  <miguel@novell.com>
206
207         * reflection.c (load_cattr_value): Add support for encoding
208         DateTime constants into the blob.    Turns out that this is
209         required by .NET, it was only documented post 1.0.
210
211         * icall.c (ves_icall_type_GetTypeCodeInternal): Guard test for
212         System.Decimal and System.DateTime inside a mono_is_corlib_image
213         call.   A sample program showed that we could return the wrong
214         TypeCode just by creating a class with those names. 
215
216         * class.c (mono_is_corlib_image): Exposed this to other metadata/
217         code.
218
219 2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>
220
221         * security-core-clr.c: Don't abort (only warn) if we cannot find 
222         a caller for relfecting code (transparent is assumed). Fix
223         get_method_access_exception to accept a NULL caller.
224
225 2010-07-14  Mark Probst  <mark.probst@gmail.com>
226
227         * sgen-gc.c: Heavy statistics on the internal allocator.
228
229 2010-07-13  Mark Probst  <mark.probst@gmail.com>
230
231         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
232         properly and in a thread-safe way.
233
234 2010-07-13  Mark Probst  <mark.probst@gmail.com>
235
236         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
237
238 2010-07-13  Mark Probst  <mark.probst@gmail.com>
239
240         * sgen-gc.c: Versions of safe_object_get_size() and
241         copy_object_no_checks() that work without the object's vtable
242         intact, by passing the correct vtable as an argument.
243
244 2010-07-13  Mark Probst  <mark.probst@gmail.com>
245
246         * sgen-marksweep.c: Make allocation of major sections thread-safe.
247
248 2010-07-13  Mark Probst  <mark.probst@gmail.com>
249
250         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
251         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
252         free if parallel mark is enabled.
253
254 2010-07-13  Mark Probst  <mark.probst@gmail.com>
255
256         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
257         allocator if parallel mark (not committed yet) is enabled.
258
259 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
260
261         * reflection.c (inflate_mono_method): Handle dynamic
262         generic instances that have method.count set but
263         methods not. Fixes another crash from boo's test suite.
264
265 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
266
267         * icall.c (ves_icall_MonoMethod_get_base_method): If
268         the method slot is bigger than the class vtable, return
269         the original method. Makes booc work again.
270
271 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
272
273         * verify.c (mono_generic_param_is_constraint_compatible):
274         The candidate type itself might satisty the required
275         constraints.
276
277         Fixes #621599.
278
279 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
280
281         * reflection.c (fix_partial_generic_class): Inflate the
282         generic instance parent in case it was changed after
283         MonoGenericClass was instantiated.
284
285         Fixes one of the issues from #389886.
286
287 2010-07-10  Mark Probst  <mark.probst@gmail.com>
288
289         * sgen-gray.c: Store only a pointer to one end of the gray queue.
290
291 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
292
293         * loader.c (mono_method_signature_checked): Release the domain
294         lock on failure.
295
296 2010-07-10  Mark Probst  <mark.probst@gmail.com>
297
298         * sgen-gc.c: Store the forwarding address in the first word of an
299         object, where the forwarding bit is stored.
300
301 2010-07-10  Mark Probst  <mark.probst@gmail.com>
302
303         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
304         interface to register our Mach exception thread which will not be
305         suspended by stop-the-world.
306
307 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
308
309         * loader.c (mono_get_method_constrained): Properly unlock the
310         domain lock on failure. Use checked variant of
311         inflate_generic_signature.
312
313 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
314
315         * loader.c (mono_method_signature_checked): Use checked
316         variant of inflate_generic_signature.
317
318         Fixes #606353.
319
320 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
321
322         * metadata.c (mono_metadata_parse_type_internal): Don't use
323         cannonical types when a transient type was requested.
324
325         Fixes #608626.
326
327 2010-07-10  Mark Probst  <mark.probst@gmail.com>
328
329         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
330         All functions that touch the gray queue directly or indirectly now
331         take it as an argument.
332
333 2010-07-10  Mark Probst  <mark.probst@gmail.com>
334
335         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
336         Put the gray queue data into a struct and pass it around.
337
338 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
339
340         * class.c (mono_method_can_access_method_full): Handle type
341         accessibility with very deep nested types.
342
343         * class.c (mono_method_can_access_field_full): Ditto.
344
345         Fixes #619300.
346
347 2010-07-10  Mark Probst  <mark.probst@gmail.com>
348
349         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
350         sgen-scan-object.h: Use a macro for rounding up sizes and
351         addresses to ALLOC_ALIGN.
352
353 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
354
355         * file-io.c: fix GetFileSystemEntries for patterns containing
356         directories.
357
358 2010-07-09  Mark Probst  <mark.probst@gmail.com>
359
360         * sgen-marksweep.c (major_finish_major_collection): Don't free
361         major heap blocks on 32 bit platforms because it can lead to
362         address space fragmentation.  We'll figure this out later.
363
364 2010-07-09  Mark Probst  <mark.probst@gmail.com>
365
366         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
367         heap blocks for mark&sweep eventually.
368
369 2010-07-09  Mark Probst  <mark.probst@gmail.com>
370
371         * sgen-protocol.c: Fix build when binary protocol is disabled.
372
373 2010-07-09  Mark Probst  <mark.probst@gmail.com>
374
375         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
376         thread-safe.
377
378 2010-07-08 Neale Ferguson <neale@sinenomine.net>
379
380         * sgen-archdep.h: Add support for s390x
381         * domain.c: Use gsize so that 64-bit big endian systems produce 
382         bitmap.
383
384 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
385
386         * pedump.c (verify_image_file): Initialize the vtable as well.
387
388 2010-07-07  Geoff Norton  <gnorton@novell.com>
389
390         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
391         header.
392
393 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
394
395         * assembly.c (mono_assembly_load_reference): Replace a g_warning
396         with a mono_trace calls. This makes compiling MD a lot less scary.
397
398 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
399
400         * verify.c (do_stobj): Improve error message.
401
402 2010-07-08  Mark Probst  <mark.probst@gmail.com>
403
404         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
405         from the object because it might have pinned/forwarding bits set.
406
407 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
408
409         * Makefile.am (sgen_sources): Add missing sgen files.
410
411 2010-06-07  Martin Baulig  <martin@ximian.com>
412
413         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
414         New helper function since mono_thread_get_abort_signal() is now
415         internal.
416
417 2010-06-07  Martin Baulig  <martin@ximian.com>
418
419         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
420
421 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
422
423         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
424         public, as mono_string_to_utf_8 is deprecated.
425
426         * object.(c|h): Added mono_object_to_string, a public helper function 
427         that calls ToString on a MonoObject and returns a MonoString.
428
429         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
430
431 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
432
433         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
434         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
435         match their declarations and vice-versa.
436
437
438 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
439
440         * class-internals.h, domain-internals.h: mark functions that are
441         needed by the llvm module.
442
443 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
444
445         * assembly.c (framework_assemblies): Add 3.5 assemblies.
446
447         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
448         by one to have room to remap 3.5 assemblies.
449
450         * domain.c (supported_runtimes): Add 3.5 remapping information.
451
452 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
453
454         * reflection.c (mono_image_create_token): Handle a
455         FieldBuilder from a different assembly.
456
457         Fixes #611836.
458
459 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
460
461         * verify.c (do_store_static_field): Improve error
462         message.
463
464 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
465
466         * assembly.c: Revert r159692 since it breaks loading 3.5
467         assemblies under 2.0.
468
469 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
470
471         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
472         TypedByRef is passed.
473
474         * icall.c (ves_icall_Type_make_byref_type): Ditto.
475
476         * icall.c (ves_icall_Type_MakePointerType): Ditto.
477
478         Fixes #612780.
479
480 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
481
482         * assembly.c: Add a few more assemblies to the list of framework
483         assemblies.
484
485         Fixes #617714.
486
487 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
488
489         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
490         fails.
491
492 2010-06-25  Mark Probst  <mark.probst@gmail.com>
493
494         * class.c (mono_class_inflate_generic_method_full_checked): Added
495         a comment regarding a hack in mini-trampolines.c.
496
497 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
498
499         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
500         sizeof(SIZEOF_VOID_P) which is 4.
501
502         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
503
504 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
505
506         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
507         GCs too.
508
509         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
510
511         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
512         objects.
513
514         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
515         desktop mode.
516
517 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
518
519         * *-gc.c (mono_gc_get_description): New function returning a human readable
520         description of the current GC.
521
522 2010-06-24  Miguel de Icaza  <miguel@novell.com>
523
524         * mono-hash.c: Moved here from mono/utils as this file is
525         GC-aware, and the utils directory is not.
526
527 2010-06-23  Miguel de Icaza  <miguel@novell.com>
528
529         * Makefile.am: Add support for building a sgen-aware versions of
530         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
531         they share all the components of the default, but use a differen
532         set of CFLAGS to enable SGEN instead.
533
534         Put the BOEHM defines in the CFLAGS definition. 
535
536         * domain-internals.h (MonoJitInfo): this structure used to have
537         different sizes depending on the GC that was configured (Boehm vs
538         SGen).   I have removed this difference for the sake of avoiding
539         the complexity of dealing with the mono/arch directory requiring
540         GC-specific changes to their Makefiles.
541
542 2010-06-23  Mark Probst  <mark.probst@gmail.com>
543
544         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
545
546 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
547
548         * metadata.c (mono_metadata_type_hash): Don't hash
549         the type kind for dynamic types since it can change.
550
551 2010-06-22 Geoff Norton  <gnorton@novell.com>
552
553         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
554         alloca instead to prevent a deadlock.
555
556 2010-06-22  Geoff Norton  <gnorton@novell.com>
557
558         * domain.c: Allow gettings the tls key, since we need it for
559         cross thread tls poking in sgen-mach
560         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
561         in external files for platform specific STW support.
562         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
563         * sgen-os-posix.c: Move the existing posix signal based STW here.
564
565 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
566
567         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
568
569 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
570
571         * object-internals.h: Map new PropertyBuilder fields.
572
573         * reflection.c (property_encode_signature): Emit an instance
574         signature if property's callconv is hasthis.
575
576         * appdomain.c: Bump corlib version.
577
578 2010-06-20  Jb Evain  <jbevain@novell.com>
579
580         * metadata-verify.c: do not consider the assembly invalid if it
581         doesn't have a #Blob stream as resource assemblies don't
582         necessarily have one.
583
584 2010-06-17  Geoff Norton  <gnorton@novell.com>
585
586         * sgen-archdep.h: sgen support for arm linux and darwin.
587
588 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
589
590         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
591         has a faulty header.
592
593 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
594
595         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
596         way to mono_gc_wbarrier_value_copy but takes a bitmap that
597         indicates which slots need a write barrier.
598
599 2010-06-14  Jonathan Pryor <jpryor@novell.com>
600
601         * Makefile.am (EXTRA_DIST): Add runtime.h.
602
603 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
604
605         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
606
607 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
608
609         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
610         IMT slot which is passed to callbacks.get_imt_trampoline.
611
612 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
613
614         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
615         imt trampoline per imt slot when using LLVM.
616
617 2010-06-10  Jonathan Pryor <jpryor@novell.com>
618
619         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
620           runtime.c:mono_runtime_shutdown().
621         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
622           AppDomain.ProcessExit event in all AppDomains.
623
624 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
625
626         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
627         done by the caller.
628
629 2010-06-05  Mark Probst  <mark.probst@gmail.com>
630
631         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
632         up freeing.
633
634 2010-06-05  Mark Probst  <mark.probst@gmail.com>
635
636         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
637         segments of memory at once, to reduce the number of mmap/munmap
638         calls.
639
640 2010-06-05  Mark Probst  <mark.probst@gmail.com>
641
642         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
643         allocations and distinguish between normal, degraded and pinned
644         allocations.
645
646 2010-06-05  Mark Probst  <mark.probst@gmail.com>
647
648         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
649         allocations count toward major collections and trigger major
650         collections from degraded allocations if appropriate.
651
652 2010-06-05  Mark Probst  <mark.probst@gmail.com>
653
654         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
655
656 2010-06-05  Mark Probst  <mark.probst@gmail.com>
657
658         * sgen-gc.c: Enable mark&sweep again.
659
660 2010-06-05  Mark Probst  <mark.probst@gmail.com>
661
662         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
663
664 2010-06-05  Mark Probst  <mark.probst@gmail.com>
665
666         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
667         major heap allowance for minor collections, instead of two
668         separate ones for small and large objects.  This reduces the
669         number of major collections.
670
671 2010-06-04  Marek Habersack  <mhabersack@novell.com>
672
673         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
674         the BFLAGS_IgnoreCase is raised
675
676 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
677
678         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
679         all information in a single structure. Return information about scopes as well.
680
681         * mono-debug.c (mono_debug_lookup_locals): Ditto.
682
683 2010-06-02  Geoff Norton  <gnorton@novell.com>
684
685         * appdomain.c: If we are running with IOMAP we might
686         have been provided a string that isn't case-aware for our file-
687         system, so we need to use io-portability to check if the file 
688         exists, rather than a simple glib test.
689
690         Fixes #608849
691
692 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
693
694         * verify.c (verify_generic_parameters): Verify if
695         there are not loops in constraints.
696
697 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
698
699         * verify.c (is_compatible_boxed_valuetype): Constaints
700         must be recursively checked if one generic argument
701         has a constraint on another.
702
703         Fixes #610625.
704
705 2010-05-31  Miguel de Icaza  <miguel@novell.com>
706
707         * console-unix.c (terminal_get_dimensions): Fix my previous
708         botched commit and return the actual value obtained from the ioctl.
709
710 2010-05-29  Mark Probst  <mark.probst@gmail.com>
711
712         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
713         references so that we don't have to do the cache-cold fetch of the
714         class in copy_object_no_checks().
715
716 2010-05-29  Robert Jordan  <robertj@gmx.net>
717
718         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
719         mono_marshal_string_to_utf16_copy () to avoid memory allocation
720         mismatches under Windows. Fixes pinvoke2:test_0_asany.
721
722 2010-05-28  Mark Probst  <mark.probst@gmail.com>
723
724         * sgen-gc.c: Change default nursery size to 4MB, because it
725         improves performance on many applications and benchmarks.
726
727 2010-05-28  Mark Probst  <mark.probst@gmail.com>
728
729         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
730         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
731         the GC descriptor by one bit, and don't encode the size for value
732         types not containing references.  Also get rid of
733         DESC_TYPE_STRING.
734
735 2010-05-28  Mark Probst  <mark.probst@gmail.com>
736
737         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
738         other than for remset processing.
739
740 2010-05-28  Mark Probst  <mark.probst@gmail.com>
741
742         * sgen-gc.c: More and better remset consistency checks.
743
744 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
745
746         * sgen-gc.c: Add a note about the int[] trick to avoid some
747         memset.
748
749 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
750
751         * sgen-gc.c (sort_addresses): Use heap sort since it has better
752         performance.
753
754         This helps programs with lots of threads or thread with big stacks
755         since the bottleneck the pin queue can get quite big.
756
757 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
758
759         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
760         a separate function called setup_fragment.
761
762         * sgen-gc.c (search_fragment_for_size_range): Variant of
763         search_fragment_for_size that does search for a secondary smaller
764         size.
765
766         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
767         for tlab allocation so small fragments are used.
768
769         This patch uses small fragments for tlab allocation when possible in order
770         to improve nursery utilization. With a fixed size tlab this patch is not very
771         usefull but once size gets dynamically adjusted, this will be invaluable.
772
773         Performance under pystone 500k is unchanged. Nursery utilization improves by
774         3.5% and 18 more fragments are used per minor GC.
775
776         Performance under modified binary-tree is unchanged. Nursery utilization
777         improves by 0.5% and 3 more fragments are used per minor GC.
778
779         These numbers make sense since as more pinning happens, more fragments are
780         created and so are the chances of having a bunch of small ones.
781
782 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
783         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
784         the current fragment when allocating a TLAB.
785
786         Reduces number of pystone 500k minor collections by 7%.
787
788 2010-05-25  Martin Baulig  <martin@ximian.com>
789
790         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
791
792         * debug-mono-symfile.c: Release memory from symfiles that were
793         loaded from memory.
794
795 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
796
797         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
798         during shutdown.
799
800 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
801
802         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
803         target class and remove some dead code.
804
805 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
806
807         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
808         the MonoTypes inside method headers can be freed when the header is freed.
809
810 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
811
812         * threadpool.c: Fix the DISABLE_SOCKETS build.
813
814 2010-05-19 Martin Baulig  <martin@novell.com>
815
816         Fix #604911.
817
818         * threads.c (wait_for_tids_or_state_change): Use an
819         alertable WaitForMultipleObjectsEx().
820         (wait_for_tids): Likewise.
821
822 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
823
824         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
825         icall.
826
827         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
828         gc tracked memory.
829
830         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
831         argument from a gchandle.
832
833         * marshal.c: Get rid of the delegate_target_locations hash table.
834
835         Fixes #605295.
836
837 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
838
839         * sgen-gc.c: Use _fast variants for string and array length.
840
841 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
842
843         * sgen-gc.c: Fix counters to be 64 bits.
844
845         * sgen-gc.c (dump_heap): Fix formating strings.
846
847 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
848
849         * sgen-gc.c (global_remset_location_was_not_added): New
850         function that implements a 2 element LRU cache for just
851         added remsets. It is used to avoid adding duplicate ones.
852
853         * sgen-gc.c (add_to_global_remset): Check cache before
854         adding new entry.
855
856         * sgen-gc.c (scan_from_remsets): Don't process global remsets
857         that fail the cache test.
858
859         * sgen-gc.c (scan_from_remsets): Simplify the global remset
860         loop removing one condtion that is not possible.
861
862         A 2 element LRU cache was chosen by profiling IronPython 2.6
863         pytones with 1M passes and corlib compilation.
864
865         For the ipy test duplication was originally 940.92, measured
866         by "Store remsets" divided by "Unique store remsets".
867
868         With a 2-element LRU, duplication went to 1.007. Without the
869         check in scan_from_remsets 1.438.
870
871         With a 16-elements LRU, duplication reduction was negligibe.
872         A single element cache was basically of no use.
873
874         With corlib compilation duplication went from  1.4 to 1.02.
875
876         Performance results is a 20% time decrease for ipy and 2%
877         with corlib.
878 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
879
880         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
881
882 2010-05-15  Geoff Norton  <gnorton@novell.com>
883
884         * mono-debug.c: Fix a leak of the global table on shutdown.
885
886 2010-05-15  Geoff Norton  <gnorton@novell.com>
887
888         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
889         to clean up MonoDebugSourceLocation's.
890
891 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
892
893         * class.c (mono_class_create_from_typedef): Fail a class
894         if there is a loop with its parent.
895
896         Fixes #598239.
897
898 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
899
900         * loader.c (mono_loader_set_error_type_load): Convert
901         a g_warninig to mono_trace_warning.
902
903 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
904
905         * class.c (mono_class_get_full): Release strings on failure
906         to avoid leaking them.
907
908 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
909
910         * class.c (mono_class_create_from_typedef): Only return
911         the class if no exceptions were detected.
912
913         * class.c (mono_class_create_from_typedef): Don't remove
914         broken classes from class_cache. Just set failure and
915         bail out.
916
917         This fixes a memory a memory leak where resolving the same
918         broken class multiple times resulted in a memory leak.
919
920         The right behavior would be to actually return the class
921         a let the caller figure it out.
922
923 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
924
925         * mono-ptr-array.h: Add mono_ptr_array_sort.
926
927         * reflection.c (mono_image_build_metadata): Replace that ugly
928         qsort call with mono_ptr_array_sort.
929
930 2010-05-13  Mark Probst  <mark.probst@gmail.com>
931
932         * sgen-gc.c: Switch to the copying major collector, because
933         Mark&Sweep is still buggy.
934
935 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
936
937         * reflection.c (mono_image_build_metadata): Don't put managed
938         references on non-tracked memory.
939
940 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
941
942         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
943
944 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
945
946         * icall.c: Switch to mono-ptr-array.h.
947
948 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
949
950         * Makefile.am: Add mono-ptr-array.h.
951
952         * mono-ptr-array.h: New header that implements
953         a GC tracked equivalent of g_ptr_array. 
954
955 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
956
957         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
958         method to avoid initializing the class.
959
960         Fixes #605115.
961
962 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
963
964         * icall.c (ves_icall_System_MonoType_getFullName): It
965         doesn't require to init the class.
966
967 2010-05-11  Miguel de Icaza  <miguel@novell.com>
968
969         * console-unix.c: Signal handlers now save and restore errno.   We
970         have never had a bug report about this, ioctl does change errno. 
971
972         Hide the unused method.   
973
974         Remove internal declarations from public headers.
975
976         Document what the signal handler is doing
977
978 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
979
980         * sgen-gc.c (clear_unreachable_ephemerons): Clear
981         unreachable keys with a tombstone.
982
983         * sgen-gc.c (mark_ephemerons_in_range): Ignore
984         tombstone keys.
985
986 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
987
988         * icall-def.h:
989         * gc-internals.h:
990         * gc.c: New GC:get_ephemeron_tombstone.
991
992 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
993
994         * appdomain.c (create_exceptions): Rename to
995         create_domain_objects. Create the ephemeron tombstone object.
996
997         * domains-internals.h (MonoDomain): Add new field for the
998         ephemeron tombstone.
999
1000         * domain.c (mono_domain_free): Set ephemeron_tombstone to
1001         NULL.
1002
1003 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
1006         and dislinks must be processed before LOS since they
1007         could end up with pointers to memory returned to the
1008         OS.
1009
1010 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * class.c (mono_class_alloc): New helper function to centralize memory allocation
1013         for classes, allocates either from the image mempool or from the heap.
1014
1015         * class.c: Use mono_class_alloc to allocate memory owned by classes.
1016
1017         * metadata.c (free_generic_class_dependents): Free more items belonging to
1018         generic classes.
1019
1020 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
1023         as well. Fixes #604054.
1024
1025 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         * metadata-verify.c: MS doesn't mind duplicates in the
1028         typeref table. Move it to full verification.
1029
1030         Fixes #600508.
1031
1032 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1033
1034         * image.c (do_mono_image_load): Report verification
1035         errors when loading an image fails.
1036
1037 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1038
1039         * reflection.c (mono_type_get_object): Remove chunk of code
1040         no longer in use.
1041
1042 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1043
1044         * icall-def.h
1045         * icall.c: Delete some unused icalls.
1046
1047 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1048
1049         * appdomain.c (mono_domain_has_type_resolve): Check for
1050         NULL domain objects to make pedump happy.
1051
1052         * object.c (mono_field_get_value): Assert on NULL object.
1053         It's the caller resposibility to check for this.
1054
1055         * object.c (mono_field_get_value_object): Ditto.
1056
1057         Fixes #601384.
1058
1059 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
1062         checks can avoid doing a mono_class_init.
1063
1064         * icall.c: Remove mono_class_init from a bunch of icalls that
1065         don't need it.
1066
1067         Hopefully we're now lazy enough to fix most victims of #601431.
1068
1069 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1070
1071         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
1072
1073 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1074
1075         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
1076
1077 2010-05-07  Marek Habersack  <mhabersack@novell.com>
1078
1079         * culture-info-tables.h: updated to include en-TT culture. Fixes
1080         bug #594035
1081
1082 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         Move mono_class_init from mono_type_get_object to icalls.
1085         This causes massive memory savings for Assembly::GetTypes () and
1086         make it fail a lot less due to missing dependencies.
1087
1088         This is a conservative, naive change as it doesn't remove some
1089         mono_class_init from places that might not need them. Carefull
1090         review of those should follow.
1091
1092         * reflection.c (mono_type_get_object): Don't mono_class_init the
1093         returning type.
1094
1095         * reflection.c:
1096         * cominterop.c:
1097         * icall.c:
1098         * marshal.c: Call mono_class_init in functions receiving a MonoType
1099         object.
1100
1101         First step into fixing #601431.
1102
1103 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * gc-internal.h: Add new functions required for ephemeron support.
1106
1107         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
1108
1109         * icall-def.h: Add GC::register_ephemeron_array.
1110
1111         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
1112         under sgen. Its fields must not be marked.
1113
1114         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
1115
1116         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
1117         handling finalizable objects. Clean dead ones after all finalizable
1118         handling.
1119
1120         * sgen-gc.c (dump_heap): Add new kind of internal memory.
1121
1122         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
1123         arrays from the dead domain.
1124
1125         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
1126
1127         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
1128         whose keys are reachable.
1129
1130         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
1131         list of live ephemeron arrays.
1132
1133 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1134
1135         * class.c (mono_class_layout_fields): Don't perform alignment
1136         if align is zero.
1137
1138         * class.c (mono_class_layout_fields): Init field related information
1139         to sane defaults.
1140
1141 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * verify.c (mono_verifier_verify_class): Verify the constraint
1144         of generic type definitions.
1145
1146 2010-05-04  Mark Probst  <mark.probst@gmail.com>
1147
1148         * sgen-marksweep.c: Simplify free list maintenance in sweep.
1149
1150 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1151
1152         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
1153         major_do_collection() across the two major collectors.
1154
1155 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1156
1157         * sgen-gc.c: Add heavy statistics counter for re-added global
1158         remsets.
1159
1160 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1161
1162         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
1163         get rid of a division in critical code.
1164
1165 2010-04-29  Mark Probst  <mark.probst@gmail.com>
1166
1167         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
1168         blocks for objects without references in mark&sweep, to improve
1169         performance.
1170
1171 2010-04-28  Mark Probst  <mark.probst@gmail.com>
1172
1173         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
1174         statistics up-to-date.
1175
1176 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1177
1178         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
1179         heap-dump for mark&sweep.
1180
1181 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * loader.c (mono_method_get_header): Move the is_inflated case before the
1184         wrapper case, as a method can be both.
1185
1186 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1187
1188         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
1189         separate pass to scan pinned and large object but use the gray
1190         queue like for regular objects.
1191
1192 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
1195         string.h for memmove.
1196
1197         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
1198         ipaddress_to_struct_in6_addr() is only needed when
1199         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
1200
1201 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1202
1203         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
1204         separate copy_object functions for major vs nursery.  Allows us to
1205         get rid of a few checks and the start and end parameters for many
1206         functions.
1207
1208 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1209
1210         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
1211         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
1212         collector.
1213
1214 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
1217         calling setup_mono_type () since the nested parent could recursively reference
1218         the nested class using generic constraints. Fixes #599469.
1219
1220 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1221
1222         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
1223         abstraction.
1224
1225 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1226
1227         * sgen-gc.c: Remove more unneeded code.
1228
1229 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1230
1231         * sgen-gc.c: Disable managed allocator and wbarrier when the
1232         binary protocol is enabled.
1233
1234 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1235
1236         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1237
1238 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1239
1240         * sgen-gc.c: Remove a few commented out and unneeded bits.
1241
1242 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1243
1244         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1245         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1246
1247 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1248
1249         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1250         types.
1251
1252         Fixes #331126
1253
1254 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1255
1256         * sgen-gc.c: Turn off semi-precise stack mark.
1257
1258 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1259
1260         * reflection.c (mono_custom_attrs_from_index): Use right function
1261         to free 'list' (i.e. g_list_free) if the verifier fails.
1262
1263 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1264
1265                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1266                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1267                 and MONO_TYPE_VALUETYPE in those case.
1268
1269                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1270
1271                 Hopefully Fixes #564253.
1272
1273 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1274
1275         * domain-internals.h: made threadpool_jobs volatile.
1276         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1277         all local jobs.
1278         * threadpool.c:
1279                 -When two threads try to initialize the socket IO pool,
1280                 the second one waits until the intialization is finished
1281                 instead of continuing right away.
1282                 -Add checks for domain unload: no items added in this case.
1283                 -Only measure the time every 10 elements added to the queue.
1284                 This is an experiment since linux x86 gettimeofday() sucks.
1285                 -Create new thread if there are none waiting for work items.
1286                 -There was a missing decrement of the busy threads.
1287                 -Make sure the local queue is cleaned up before exiting the
1288                 thread when the program ends.
1289
1290 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1291
1292         * reflection.c (mono_type_get_object): Normalize generics types
1293         as to how managed code expect them to be. A generic instance over
1294         the GTD arguments must have the same mirror as the GTD itself.
1295
1296         Fixes #473289.
1297
1298 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * locales.c: Implement support for DISABLE_NORMALIZATION.
1301
1302 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1305         since it is not a MonoMethod.
1306
1307 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1308
1309         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1310         System.Security.SecurityManager - used only by Moonlight
1311         * security-core-clr.c|h: Add Elevated Trust/Permission support
1312         for CoreCLR / Moonlight
1313
1314 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1315
1316         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1317         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1318
1319 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1320
1321         * mono-perfcounters.c: added code for the "Mono
1322         Memory/Total Physical Memory" performance counter.
1323
1324         * mono-perfcounters-def.h: added definition of the "Mono
1325         Memory/Total Physical Memory" performance counter.
1326
1327 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1328
1329         * class.c (mono_class_get_method_by_index): Return NULL
1330         on type load failures.
1331
1332 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         * class.c (mono_class_from_typeref): Check if the supplied
1335         image has an assembly bound to it.
1336
1337         Fixes #567884.
1338
1339 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1340
1341         * loader.c (mono_method_get_signature_full): Use new function
1342         inflate_generic_signature_checked to check for errors.
1343
1344         Fixes #560839.
1345
1346 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1347
1348         * loader.c (inflate_generic_signature): Add _checked variant
1349         and move this function to use it.
1350
1351 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1352
1353         * class.c (mono_class_setup_vtable_general): Use error checking
1354         version of mono_class_inflate_generic_method_full.
1355
1356         Fixes #596975.
1357
1358 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1359
1360         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1361         error handling passing MonoError around.
1362
1363         Fixes #560336.
1364
1365 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1366
1367         * socket-io.c: make GetHostByName ("") work on windows.
1368         Fixes bug #456723.
1369
1370 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1371
1372         * object-internals.h:
1373         * threads.c: use a spin lock when accesing the per-thread appdomain
1374         list.
1375
1376 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1377
1378         * threads.c: no need to take the threads lock in push/pop appdomain.
1379
1380 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1381
1382         * reflection.c (_mono_reflection_parse_type): MS supports
1383         non-assembly-qualified types in a generic type parameter list
1384         when enclosed in '[]' (which signals that they should be a fqn).
1385
1386         This breaks ECMA specs for how type names are encoded in cattr
1387         blobs but F# does it.
1388
1389         Fixes #576342.
1390
1391 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1394         for instance methods/ctors.
1395
1396         Fixes #422113.
1397
1398 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1399
1400         * reflection.c: Use the new verifier support for checking
1401         custom attributes.
1402
1403         Fixes #595306.
1404
1405 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1406
1407         * metadata-verify.c: Implement structural verification
1408         of custom attributes. This check requires access to the
1409         loader since to resolve the size of an enum we have to
1410         look it up.
1411         We don't check if named argumenments are encoded in a
1412         compatible fashion to their underlying field/prop.
1413         Maybe we should?
1414
1415         * verify-internals.h: Add two new cattr verification API.
1416
1417 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1418
1419         * metadata-verify.c (decode_signature_header): Fix signature.
1420
1421 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * verify.c (mono_verifier_is_enabled_for_method): Handle
1424         assembly less images.
1425
1426         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1427
1428 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1429
1430         * loader.c (mono_method_signature_checked): Properly
1431         init MonoError.
1432
1433         * loader.c (mono_method_signature): It's the calee
1434         resposibility to init the error object.
1435
1436 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1437
1438         * metadata-verify.c (decode_signature_header): Do proper
1439         overflow checking.
1440
1441 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1442
1443         * reflection.c: maintain the invariants required by
1444         mono_class_layout_fields() also in typebuilder_setup_fields ().
1445
1446 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1447
1448         * security-core-clr.c: Call mono_class_setup_methods in 
1449         get_default_ctor before checking klass->methods. Fix typo in
1450         comment
1451
1452 2010-04-10  Jb Evain  <jbevain@novell.com>
1453
1454         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1455         add .net 4.0 RTM version.
1456
1457 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1458
1459         * reflection.c (resolve_object): Properly inflate generic
1460         methods when a context is supplied.
1461
1462         Fixes #591226.
1463
1464 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1465
1466         * verify.c (mono_method_verify): A switch op don't empty
1467         the stack for the next one. Fixes a bug when running fsi
1468         under --verify-all.
1469
1470 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1473         fields as valid standalone sig too. F# does generate them.
1474
1475         * metadata-verify.c (verify_typedef_table_full): Ignore
1476         what <module> extends.
1477
1478 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1479
1480         * verify.c (do_invoke_method): It's ok to do use call with
1481         virtual, non-final methods if their class is sealed.
1482
1483 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1484
1485         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1486         is a near identical copy of mono_field_get_value_object. So simply
1487         call it.
1488
1489         * object.c (mono_field_get_value_object): Handle literal fields
1490         on open generic classes.
1491
1492         Fixes #594942.
1493
1494 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1495
1496         * reflection.c (mono_reflection_create_runtime_class): Setup
1497         parent/supertype information again since it can be changed
1498         without notice.
1499
1500 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1501
1502         * verify.c (verify_type_compatibility_full): Properly handle
1503         stores between arrays of primitives.
1504
1505         Fixes the verifier side of #555950.
1506
1507 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1508
1509         class.c (mono_bounded_array_class_get): Properly init
1510         cast_class to take the fact that uint[] and int[] can be
1511         casted between each other.
1512
1513         Fixes #555950.
1514
1515 2010-04-07  Geoff Norton  <gnorton@novell.com>
1516
1517         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1518
1519 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1522         builders. Fixes #594464.
1523
1524 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1527         waiting for all threads to suspend, as those threads can't be suspended.
1528
1529 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1532         to avoid crashes on newly created threads.
1533
1534 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1535
1536         * file-io.c: reset the MonoIOStat structure in case of error.
1537         Fixes bug #582667.
1538
1539 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1540
1541         * class.c (print_implemented_interfaces): Print proper type name.
1542
1543         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1544         the override map for generic instances since it later ignored.
1545
1546         * class.c (mono_class_implement_interface_slow): Don't break for
1547         dynamic generic instances.
1548
1549         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1550
1551         * reflection.c (mono_reflection_method_get_handle): New method that
1552         resolves a method handle.
1553
1554         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1555         case when we override methods from a dynamic generic instance interface.
1556
1557         Fixes #575941.
1558
1559 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1560
1561         * threadpool.c: don't attempt to close the pipe when it has not been
1562         created.
1563
1564 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1565
1566         * threadpool.c: if there are no waiting threads, try to start a new
1567         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1568         No need to use InterlockedCompareExchange to read volatile variables.
1569
1570 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1571
1572         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1573         and reference types that point to the same class.
1574
1575         Fixes #565598.
1576
1577 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1578
1579         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1580         when verifying compatibility between a generic instance and a generic
1581         parameter.
1582
1583         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1584
1585         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1586         name.
1587
1588         Fixes #587849.
1589
1590 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1591
1592         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1593
1594 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1597
1598 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1599
1600         * process.c: when cross-compiling with MinGW, force GetProcessId
1601         lookup using GetProcAddress.
1602
1603 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1604
1605         * sgen-gc.c: parse_environment_string_extract_number() must be
1606         static.
1607
1608 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1609
1610         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1611         gray_object_dequeue(), to make sure they're inlined.
1612
1613 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1614
1615         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1616         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1617
1618 2010-04-02  Jb Evain  <jbevain@novell.com>
1619
1620         * exception.c: remove dead code.
1621
1622 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1625         with mono-gc.h.
1626
1627 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1628
1629         * sgen-gc.c: Make the nursery size adjustable by the
1630         MONO_GC_PARAMS environment variable.
1631
1632         Code is contributed under MIT/X11 license.
1633
1634 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1635
1636         * threadpool.c: threadpool threads wait is alertable.
1637         Fixes bug #592964.
1638         Reduced the stack size of the *poll_wait thread.
1639
1640 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1641
1642         * exception.c|metadata-internals.h: Add new mono_get_exception_
1643         field_access_msg and mono_get_exception_method_access_msg 
1644         functions that accept a const char* parameter to provide more 
1645         details when the exception is thrown.
1646         * security-core-clr.c|h: Rework code to allow logging exceptions
1647         (export MONO_LOG_MASK="security") and to supply more details in
1648         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1649         mono_security_core_clr_is_field_access_allowed and 
1650         mono_security_core_clr_is_call_allowed to return an exception,
1651         with messages and logging, that can be emitted by method-to-ir.c
1652
1653 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1654
1655         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1656         pinned object.
1657
1658 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1659
1660         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1661         the assembly name is not well formed utf8. Fixes #567882.
1662
1663 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1666         the generic parameters from the builder. Fixes #473298.
1667
1668 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1669
1670         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1671
1672         * marshal.c (emit_marshal_boolean): Eliminate possible
1673         uninitialized local warning. 
1674
1675 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1676
1677         * class.c (mono_class_init): Postpone coreclr inheritance check
1678         until the end of the initialization (so we can check up the 
1679         default ctor manually for the core-clr inheritance rules).
1680         * security-core-clr.c: Add the missing (undocumented) checks on
1681         default constructors when verifying inheritance rules.
1682
1683 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1684
1685         * domain-internals.h (MonoJitExceptionInfo): Add new field
1686         handler_end to the data union. To be used to point the end
1687         of a finally block.
1688
1689 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1690
1691         * reflection.c: Add support for new v4 type
1692         System.Reflection.MonoModule that is the concrete version
1693         of Module which is abstract unver v4.
1694
1695 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1696
1697         * class.c (mono_class_init): Don't set class failure after
1698         inited = 1 is set. It must be done before.
1699
1700 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1701
1702         * mono-config.c: Add support for OS "haiku"
1703         * ChangeLog: Fix UTF-8 encoding
1704
1705         Code is contributed under MIT/X11 license.
1706
1707 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1708
1709         * console-unix.c: fixed include logic for sys/ioctl.h.
1710
1711 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1712
1713         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1714         systems.
1715
1716 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1719         unfinished/broken typebuilders.
1720
1721 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1722
1723         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1724         for the minor section allowance.
1725
1726 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1727
1728         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1729         "NoOptimization".
1730
1731 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1732
1733         * sgen-gc.c: Count bytes allocated with heavy statistics.
1734
1735 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1736
1737         * sgen-gc.c: More detailed time statistics.
1738
1739 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1740
1741         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1742         fix the user defined mark interface to pass a pointer
1743         to the object location and not the object itself.
1744
1745 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1746
1747         * reflection.c (mono_method_body_get_object): Release
1748         the method header before the call to CACHE_OBJECT since
1749         this is a macro that returns.
1750
1751 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1752
1753         * class.c (inflate_generic_type): mono_metadata_type_dup
1754         already dupes array information, the g_memdup was just
1755         leaking memory.
1756
1757 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1758
1759         * verify.c: Add stack_peek function. Fix CEE_DUP
1760         to not read from invalid memory if push did expand
1761         the stack.
1762
1763 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1764
1765         * verify.c: Remove old table verification code that has
1766         been superseeded by the new metadata verifier.
1767
1768         * verify.h: Remove mono_image_verify_tables from the public
1769         API.
1770
1771         * pedump.c: Fix for removed bits.
1772
1773 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1774
1775         * verify.c: Allocate stack slows lazily to reduce stack usage
1776         in case of methods with huge stacks. Reduces memory consumption
1777         for mcs yyparse from 459Mb to 1.8Mb.
1778
1779 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1780
1781         * threadpool.c: don't try executing items from domains being
1782         unloaded. Fixes appdomain-async-invoke test.
1783
1784 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1785
1786         * threadpool.c: spin while the threadpool initializes.
1787         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1788         down, don't do anything.
1789
1790 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * threads.c (mono_thread_create_internal): Set the GC type of the
1793         threads_starting_up hash table.
1794
1795 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1796
1797         * threadpool.c: reset 'state' to avoid returning non-null when the
1798         event type is not found.
1799
1800 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1801
1802         * sgen-gc.c: make copy_object () take the address of the
1803         slot holding the reference. This allows saving memory stores
1804         when not needed and it allows keeping track of oldspace->nursery
1805         references for the card table code.
1806
1807 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1808
1809         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1810
1811         Code is contributed under MIT/X11 license.
1812
1813 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1814
1815         * object.c, threads.c, threads-types.h, threads.h: make the
1816         managed thread local storage references precisely tracked.
1817
1818 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1819
1820         * threadpool.[ch]: reworked the threadpool:
1821                 -Threadpool threads use a work-stealing queue. Adding a work
1822                 item from a threadpool thread will queue it in the thread
1823                 local queue without locking (in most cases).
1824                 -epoll events are coalesced before being added to the IO
1825                 queue.
1826                 -Dynamically change the number of active threads
1827                 -Changed the global queue to be more GC friendly
1828
1829         * class-internals.h: add 2 new performance counters for the number of
1830         threads in the threadpool and the IO threadpool.
1831
1832         * object-internals.h: new field in MonoAsyncResult.
1833         * icall-def.h: new internal call for queueing work items.
1834
1835         * Makefile.am: add 2 new files.
1836
1837         * appdomain.c: bump up corlib version.
1838
1839         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1840
1841         * mono-perfcounters-def.h:
1842         * mono-perfcounters.c: added 2 new performance counters.
1843
1844 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1845
1846         * sgen-gc.c: More FIXME/TODO updates.
1847
1848 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1849
1850         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1851         function mono_gc_invoke_with_gc_lock() which invokes a function
1852         with the guarantee that no collection will occur during its execution.
1853
1854 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1855
1856         * sgen-gc.c: Update a few comments.
1857
1858 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * reflection.c: Add support for new v4 type
1861         System.Reflection.MonoAssembly that is the concrete version
1862         of Assembly which is abstract unver v4.
1863
1864 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1865
1866         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1867         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1868
1869         Expose a few macros that are needed for SR but not SRE to the
1870         world (previous inside the SRE ifdef)
1871
1872 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1873
1874         * sgen-gc.c (gc_register_current_thread): We need
1875         stack_start_limit as well in the non-attribute pthread case.
1876
1877 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1878
1879         * threads.c: Fix windows build.
1880
1881 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1882
1883         * thread-types.h: Add mono_thread_resume_interruption.
1884
1885         * threads.c: Add mono_thread_resume_interruption, this
1886         function should be called after the last protected handler
1887         found at interruption time has finished.
1888
1889 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1890
1891         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1892         Check MonoInternalThread's ::state instead of ::abort_exc
1893         since the later can be lazily created.
1894
1895         This is specially problematic when running a finally block
1896         under AbortRequested state. ResetAbort must work, but the
1897         abort_exc object has not been created because interruption
1898         has not began.
1899
1900 2010-03-22  Geoff Norton  <gnorton@novell.com>
1901
1902         * locales.c: Its possible for CFStringGetCStringPtr
1903         to return null and not convert encodings.  Use
1904         CFStringGetCString instead.
1905
1906 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1907
1908         * class-internals.h, class.c, object.c: introduce compressed
1909         interface bitmaps (for now only under small config): this saves
1910         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1911         startups.
1912
1913 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1914
1915         * mono-debug.c: don't try to get the method header, it causes a
1916         deadlock and it is not used for anything anymore.
1917
1918 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1921         broken by the last change.
1922
1923 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1924
1925         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1926         SOCK_RDM.
1927         
1928         Code is contributed under MIT/X11 license.
1929
1930 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1931
1932         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1933         nursery.
1934
1935         Code is contributed under MIT/X11 license.
1936
1937 2010-03-19  Martin Baulig  <martin@ximian.com>
1938
1939         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1940         dummy field, containing an empty string.
1941         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1942
1943
1944 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1945
1946         * class.c: setup_interface_offsets() refactor to not call
1947         mono_class_get_implemented_interfaces () more times than needed and
1948         to reduce the runtime memory requirements to be O(num_interfaces)
1949         instead of O(max_interface_id).
1950
1951 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1952
1953         * mono-mlist.[ch]: add mono_mlist_set_next ().
1954
1955 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1956
1957         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1958         associated changes to support holes in the protected range of a
1959         try block.
1960
1961         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1962         retrieves the holes table from a given MonoJitInfo.
1963
1964 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1965
1966         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1967         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1968         hide the contents of the MonoString and MonoArray structs from the
1969         public API. Change the accessor macros to accessors functions where
1970         needed. Adjusted the array API to allow for pointer-sized lengths and
1971         starting positions, so 64 bit arrays can be optionally provided in an
1972         API compatible way if needed on 64 bit systems.
1973
1974 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1975
1976         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1977         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1978
1979 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1980
1981         * class-internals.h: remove the method header from MonoMethod since
1982         from now on it will be transient. We have a header pointer for method
1983         wrappers, since in that case we need to keep track of it. For this
1984         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1985         structs now. The same happens with MonoMethodInflated.
1986         * class.c: reset the sre_method flag for inflated method structures:
1987         this makes the code that cares look at the header in the MonoMethodInflated
1988         structure.
1989         * loader.c: lookup the method header in the appropriate field now that
1990         it is removed from MonoMethod.
1991         * metadata-internals.h: add a flag to the method header to know if it
1992         can be freed inside mono_metadata_free_mh ().
1993         * method-builder.c: updates after moving the header field from
1994         MonoMethod to MonoMethodWrapper.
1995         * reflection.c: MonoMethods generated from Reflection.Emit use
1996         MonoMethodWrapper structs if they need a method header now (later take
1997         advantage of this and remove all the current unsafe uses of method_aux_hash).
1998         * metadata.c: make method header parsing not leak when verification
1999         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
2000         These changes save a few hundred KB of runtime memory in a mcs
2001         bootstrap or a monodevelop startup.
2002
2003 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2004
2005         * verify.c: Improve error message.
2006
2007 2010-03-12  Jb Evain  <jbevain@novell.com>
2008
2009         * reflection.c (add_exported_type): populate the exported
2010         table with the type's nested type.
2011
2012 2010-03-10  Mark Probst  <mark.probst@gmail.com>
2013
2014         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
2015         can't read parentheses.
2016
2017 2010-03-10  Mark Probst  <mark.probst@gmail.com>
2018
2019         * threads.c (thread_cleanup): Add a guard to dereferencing
2020         "thread" to avoid an unlikely race condition.
2021
2022 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
2023
2024         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
2025         instead of an empty string.
2026
2027 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2028
2029         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
2030         convert to a boolean, recent gcc versions compile this differently.
2031
2032 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2033
2034        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
2035        inlined.
2036
2037 2010-03-09  Mark Probst  <mark.probst@gmail.com>
2038
2039         * sgen-gc.c (STRING_SIZE): Off by one.
2040
2041 2010-03-09  Mark Probst  <mark.probst@gmail.com>
2042
2043         * sgen-archdep.h: Fix the signal context register access for
2044         AMD64.
2045
2046 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2047
2048         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
2049
2050 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
2051
2052         * verify.c: Store the initial basic block returned by mono_basic_block_split
2053         so we can release the whole list and not just the first one.
2054
2055 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2056
2057         * verify.c, debug-helpers.c, profiler.c, loader.c,
2058         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
2059         MonoMethodHeader a transient entity.
2060
2061 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
2064         uncontrolled growth of the gray stack.
2065
2066         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
2067         added items are removed first, improving cache locality. Avoid freeing queue
2068         segments in the fast path, use the list of segments as the free list, truncate
2069         it to its max size at the start of collection.
2070
2071 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
2072
2073         * metadata-internals.h: more memory savings, both with small config and without.
2074
2075
2076 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
2077
2078         * appdomain.c, domain-internals.h, domain.c, object.c:
2079         make class_vtable_hash into an array to reduce memory usage.
2080
2081 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
2082
2083         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
2084         object-internals.h, object.c, reflection.c, threadpool.c:
2085         reduce resource usage when the small config is selected.
2086         In particular, up to 64K of methods/fields/properties/events
2087         are allowed and "other" methods in events are ignored.
2088
2089 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
2090
2091         * threads.c: reduce resource usage when compiled for a small config.
2092
2093 2010-03-05  Mark Probst  <mark.probst@gmail.com>
2094
2095         * sgen-gc.c: Also collect number of degraded-alloced objects with
2096         heavy statistics.
2097
2098 2010-03-04  Geoff Norton  <gnorton@novell.com>
2099
2100         * assembly.c: Only support OSX bundling if the bundle is 
2101         actually detectable.
2102
2103 2010-03-04  Geoff Norton  <gnorton@novell.com>
2104
2105         * loader.c: The marshal specs are freed at the end of the call
2106         but it explicitly frees the strings as well as the container,
2107         so we need to dup them too to avoid referencing free'd memory.
2108
2109 2010-03-04  Geoff Norton  <gnorton@novell.com>
2110
2111         * icall-def.h:
2112         * icall.c: Add a new private internal icall to construct
2113         an object from its type without running the ctor.
2114
2115 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
2116
2117         * profiler.c: allow multiple profiler engines to be loaded
2118         at the same time.
2119
2120 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2121
2122         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
2123         profiler event to track object moves.
2124
2125 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
2126
2127         * object.c, profiler.c, profiler.h, string-icalls.c:
2128         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
2129
2130 2010-03-03  Miguel de Icaza  <miguel@novell.com>
2131
2132         * decimal.c (mono_double2decimal): Add support for reducing the
2133         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
2134         expected.
2135
2136 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * icall-def.h:
2139         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
2140
2141 2010-03-03  Marek Habersack  <mhabersack@novell.com>
2142
2143         * mono-config.c (mono_config_parse_assembly_bindings): added -
2144         parses assembly binding redirections from appdomain's config
2145         file.
2146
2147         * metadata-internals.h: added definition of a new function -
2148         mono_config_parse_assembly_bindings - to support parsing assembly
2149         binding redirections defined in appdomain's config file.
2150
2151         * domain-internals.h: added two new fields to _MonoDomain - a list
2152         of assembly bindings and a flag to parse the config file only
2153         once.
2154
2155         * assembly.c (assembly_binding_maps_name): empty culture name and
2156         NULL culture name are considered equal.
2157         (mono_assembly_apply_binding): added support for domain specific
2158         assembly binding redirections, read from the appdomain's
2159         configuration file. Fixes bug #580185
2160
2161 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
2162
2163         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
2164         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
2165         support.
2166
2167 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
2170         from this function. The new function receive the parent token instead of a type.
2171
2172         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
2173         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
2174         typebuilders. This make it possible to properly encode generic type builders since
2175         their unmanaged type don't have generics data while unfinished.
2176
2177         Fixes #583655.
2178
2179 2010-03-02  Mark Probst  <mark.probst@gmail.com>
2180
2181         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
2182         writing binary log files (can be enabled by #define'ing
2183         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
2184         bugs in longer running programs.
2185
2186 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
2187
2188         * metadata.c: added some API documentation.
2189
2190 2010-03-01  Robert Jordan  <robertj@gmx.net>
2191
2192         * filewatcher.h: Include glib.h to fix the MSVC build.
2193
2194 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
2197         a GC handle instead. This is a bit slower to access, but avoids burdening the
2198         GC with 100s of individual roots.
2199
2200         * reflection.c (mono_class_get_ref_info):
2201         (mono_class_set_ref_info):
2202         (mono_class_free_ref_info): New internal helper fuctions.
2203
2204         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
2205         of accessing klass->reflection_info directly.
2206
2207         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
2208         words.
2209
2210         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
2211         the previous array.
2212
2213 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
2216         needs an indirection.
2217
2218 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
2221         so all generic sharing code is in one place.
2222
2223         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
2224         we don't call setup_interface_offsets () for unfinished types.
2225
2226 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2227
2228         * class.c (mono_class_generic_sharing_enabled): Move this to
2229         generic-sharing.c.
2230
2231         * image.c: Add an unload hook which is called before an image is unloaded.
2232
2233         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2234         metadata.c having to depend on generic sharing.
2235
2236 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2237
2238         * class.c: reduce size of ridiculously large cache.
2239
2240 2010-02-26  Martin Baulig  <martin@ximian.com>
2241
2242         * mono-debug.h
2243         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2244
2245         * threads.c (mono_thread_internal_reset_abort): New method; resets
2246         the abort, but doesn't throw any exception if no abort was requested.
2247
2248 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * class.c (get_implicit_generic_array_interfaces): Call
2251         mono_class_setup_interface_offsets () before accessing
2252         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2253         some reason.
2254
2255 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2256
2257         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2258         icall internal.
2259
2260 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2261
2262         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2263         direct access to the MonoType fields.
2264
2265 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2266
2267         * threads.h: Move some internal functions which were added to this header by
2268         mistake to threads-types.h.
2269
2270         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2271
2272 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2273
2274         * class-internals.h, class.h, object.h: make MonoRemoteClass
2275         and mono_remote_class() internal.
2276
2277 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2278
2279         * metadata-internals.h, class-internals.h, metadata.h: make the
2280         MonoType guts internal as well.
2281
2282 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2283
2284         * reflection.h: the MonoTypeNameParse guts are internal now.
2285         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2286         are internal now, provide accessors as needed.
2287         * metadata.h, metadata-internals.h: the MonoMethodSignature
2288         guts are internal now.
2289         * Makefile.am: mempool.h is an internal header now.
2290         * *.h, *.c: remove glib.h usage from the public headers.
2291
2292 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2293
2294         * culture-info-table.h : regenerated.
2295
2296 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2297
2298         * metadata.c: Add mono_method_get_header_summary which returns minimal
2299         information about the header of a method. This is the information used
2300         by the inline oracle to reject methods.
2301
2302         This method doesn't decode local variables and doesn't cache it's result,
2303         so it should cause a minimal reduction in memory usage.
2304
2305         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2306         mono_method_get_header_summary.
2307
2308 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2309
2310         * threads.c (mono_thread_exit): Make sure that the main thread is
2311         non-null before dereferencing it.
2312
2313 2010-02-21  Geoff Norton  <gnorton@novell.com>
2314
2315         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2316         locale.
2317         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2318         before falling back to the posix lookup.
2319
2320 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2323         the DONT_MANAGE flag set.
2324
2325 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2326
2327         * domain.c: Remove old v1 version strings. Let the runtime
2328         default to 2.0 instead of failing because it can't find a
2329         working 1.0 instalation.
2330
2331 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2332
2333         * domain.c: Add v4 RC version string.
2334
2335 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2336
2337         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2338         of overflow checking function.
2339
2340 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2343         generic methods.
2344
2345         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2346         cases for ParameterInfo.
2347
2348         Fixes #579493.
2349
2350 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2353         have has_cctor set. Fixes #575946.
2354
2355 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2356
2357         * appdomain.c: display a warning if the parsing the config file
2358         produces any error.
2359         Skip the BOM in UTF-8 files.
2360         Copy the AppDomainSetup before setting the privateBinPath so that the
2361         correct configuration file is read.
2362
2363 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2366         vtable trampoline per vtable slot index. Not used yet.
2367
2368 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2369
2370         * icall-def.h:
2371         * icall.c: add internal call that returns the system page size.
2372
2373 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2376         'int' for system classes.
2377
2378 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2379
2380         * icall.c, icall-def.h: new icall to check for sufficient
2381         stack space.
2382
2383 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2384
2385         * reflection.c (ensure_complete_type): Check that reflection_info
2386         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2387
2388 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2389
2390         * attrdefs.h:
2391         * tabledefs.h: Add NoOptimization flag.
2392
2393 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2394
2395         * sgen-gc.c: Don't consider it a missing remset if the target
2396         object is pinned - we might have done the store but not added the
2397         remset yet.
2398
2399 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2400
2401         * sgen-gc.c: When checking for missing remsets, don't assert on
2402         the first one, but print them all and then assert.
2403
2404 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2405
2406         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2407
2408 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2409
2410         * console-unix.c: On OSX Control-Y is assigned to
2411         VDSUSP (non-Posix), the
2412         suspend-program-next-time-it-tries-to-read-input command (this is
2413         different than C-z, which suspends immediately).
2414
2415         Do the same thing that bash does and ignore this setting,
2416         making our repl/getline support pasting.
2417
2418 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2419
2420         * sgen-gc.c: Simple plausibility check for scan_starts.
2421
2422 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2423
2424         * sgen-gc.c: Round up when calculating the number of scan starts.
2425
2426 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2427
2428         * reflection.c: Export mono_get_object_from_blob.
2429
2430         * object-internals.h: Ditto.
2431
2432         * icall.c: New icall property_info_get_default_value to get the default
2433         value of a property. Since using this is not common, no caching is done.
2434
2435         * icall-def.h: Add new icall.
2436
2437 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2438
2439         * class.c: Add mono_class_get_property_default_value.
2440
2441         * class-internal.h: Export mono_class_get_property_default_value.
2442
2443 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2444
2445         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2446
2447 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2448
2449         * sgen-gc.c: introduced critical regions to allow some lockless
2450         operations and increase scalability.
2451
2452 2010-02-10  Geoff Norton  <gnorton@novell.com>
2453
2454         * reflection.c: Support building with DISABLE_REFLECTION
2455
2456 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2457
2458         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2459         Closes bug #566057.
2460
2461         * exception.c: fix typo in comment.
2462
2463 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2464
2465         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2466         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2467
2468         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2469
2470         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2471         the internal API.
2472
2473         Fixes #574434.
2474
2475 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2476
2477         * threads.c: Removed two assertions that were too strict.  Added a
2478         clarifying comment.  Fixes #577090.
2479
2480 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2483         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2484
2485         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2486
2487         * verify.c (mono_type_get_stack_name): Fix a warning.
2488
2489 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2492         mono_marshal_wrapper_info_from_wrapper.
2493
2494         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2495         mono_marshal_method_set_wrapper_data, and export.
2496
2497         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2498         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2499         by calling mono_marshal_get_wrapper_info ().
2500
2501         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2502         small objects which does no size checks.
2503
2504 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2505
2506         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2507
2508 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * verify.c (mono_method_verify): Use the new basic block formation pass
2511         to avoid verifying dead basic blocks. This is the same behavior as the
2512         runtime MS verifier.
2513
2514 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2515
2516         * mono-basic-block.c:
2517         * mono-basic-block.h: New implementation of a basic block formation pass.
2518         The formation pass does static liveness analysis as well to detect dead
2519         basic blocks.
2520
2521 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2524         'this' argument in icalls.
2525
2526 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2527
2528         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2529
2530 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2531
2532         * object.c, domain.c: When using SGen, we must register
2533         vtable->type as a root if it's not a MonoType, because then it
2534         wasn't pin-alloced.
2535
2536 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2537
2538         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2539         at the start of nursery collections, because we might have had
2540         degraded allocations which changed next_data.
2541
2542 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2545         custom attr so this function works in cross-compiling mode.
2546
2547 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * class.c (make_generic_param_class): Initialize interface offsets since we
2550         set klass->inited. Fixes #574819.
2551
2552 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2555         calling the JIT domain cleanup hook.
2556
2557 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2558
2559         * pedump.c (main): Properly set the verifier mode when running the metadata
2560         verifier.
2561
2562 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2563
2564         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2565         overlapping fields now that we're called before has_references is set.
2566
2567         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2568         method. Otherwise all sort of weird stuff happens.
2569
2570 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2571
2572         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2573         Fixes #572874.
2574
2575 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2578         Fixes #573322.
2579
2580 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2581
2582         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2583         pin_staging_area_index is greater than 0.
2584
2585 2010-01-22 Miguel de Icaza (miguel@novell.com)
2586
2587         * loader.c: Since we do nothing with the error returned, pass NULL
2588         to ignore the error.
2589
2590 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2593         happened before starting to encode the actual fields. This avoid ciclic
2594         dependencies and eventual crashes.
2595
2596         Fixes #572660.
2597
2598 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2599
2600         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2601         atomic and remove the half-constructed hack in SGen.
2602
2603 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2604
2605         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2606         has a recursive reference to itself.
2607
2608         Fixes #571863.
2609
2610 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * loader.c (mono_method_signature): Fix error message.
2613
2614 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2615
2616         * sgen-gc.c: Reuse to-space sections between nursery collections.
2617
2618 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2619
2620         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2621         from the current assembly or mscorlib. Fixes bug #322957.
2622
2623 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2626         get_wrapper_target_class.
2627
2628 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2629
2630         * sgen-gc.c: Fix warnings.
2631
2632 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2633
2634         * verify.c (store_local): Better error message.
2635
2636 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2637
2638         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2639         arguments.
2640
2641 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2642
2643         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2644         function is generics variance aware.
2645
2646 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2647
2648         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2649         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2650
2651 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2652
2653         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2654           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2655
2656         Code is contributed under MIT/X11 license.
2657
2658 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2659
2660         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2661         on a GTD.
2662
2663 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2664
2665         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2666         return a point to a wrapper specific info structure describing the wrapper.
2667         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2668  
2669 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2670  
2671         * sgen-gc.c: Make minor collection section allowance adaptive,
2672         depending on the amount of memory reclaimed in the last major
2673         collection.  If more memory was reclaimed (i.e. more garbage
2674         produced), do the next collection earlier.
2675
2676 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2677
2678         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2679         to itself.
2680
2681         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2682         the token as parameter.
2683
2684         * verify-internals.h: Ditto.
2685
2686         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2687
2688         Fixes #571460.
2689
2690 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2691
2692         * sgen-gc.c: Make store_remset_buffer_index long.
2693
2694 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2695
2696         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2697
2698         Fixes #569579.
2699
2700 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2701
2702         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2703         off precise marking if it is available.
2704         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2705
2706 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2709
2710         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2711         pinned objects.
2712
2713         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2714         to the array allocator.
2715
2716 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2719         result of mono_compile_method (), it already includes an ftnptr.
2720
2721 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2724
2725 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2726
2727         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2728         hash value which doesn't depend on glib/eglib versions.
2729         (mono_metadata_type_hash): Use it.
2730
2731         * object.c (mono_method_get_imt_slot): Ditto.
2732
2733 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2734
2735         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2736         independently of the GTD.
2737
2738         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2739
2740         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2741         to the upper limit since instance_size includes this amount.
2742
2743         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2744
2745         Fixes #569544.
2746
2747 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2748
2749         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2750         with static methods.
2751
2752         * object.c (build_imt_slots): Avoid asserting when static methods are
2753         encountered in an interface.
2754
2755 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2756
2757         * sgen-gc.c (to_space_expand): Fix assertion.
2758
2759 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2760
2761         * string-icalls.c: missing declaration fixes.
2762         * sgen-gc.c: portability fixes.
2763
2764 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2767
2768         * class.c:
2769         * cominterop.c:
2770         * icall.c:
2771         * object.c: 
2772         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2773
2774 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2775
2776         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2777         it can fail loading the type.
2778
2779         * class.c: Add mono_class_inflate_generic_class_checked.
2780
2781         * class.c:
2782         * verify.c:
2783         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2784
2785 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * loader.c (mono_method_signature_checked): New internal function taking an
2788         MonoError argument.
2789
2790         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2791         Fixes build on rh 7.3.
2792
2793 2010-01-10  Aaron Bockover  <abockover@novell.com>
2794
2795         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2796         at runtime in the same way as on Windows, which yields a relocatable
2797         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2798         of the running mono process.
2799
2800         On TARGET_ARM, fallback () will always be executed.
2801
2802 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2803
2804         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2805
2806 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2807
2808         * class.c (mono_class_is_assignable_from_slow): Support variant
2809         generic delegates.
2810
2811         * class.c (mono_class_implement_interface_slow): Support types with
2812         variant generic arguments.
2813
2814 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2815
2816         * verify.c: Remove some code duplication.
2817
2818 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2819
2820         * object.c: Update docs.
2821
2822 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2823
2824         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2825
2826         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2827         fallback trampoline as well.
2828
2829         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2830         out argument that is set to TRUE if the match was direct. 
2831
2832         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2833
2834         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2835
2836 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2837
2838         * class.c: Add mono_class_interface_offset_with_variance function that does same
2839         as mono_class_interface_offset but takes variance into account.
2840
2841         * class-internal.h: Export mono_class_interface_offset_with_variance.
2842
2843         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2844
2845 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2846
2847         * object.c:
2848         * icall.c:
2849         * class.c: Add some FIXME for due to variant generic arguments.
2850
2851         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2852         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2853         the bitfield check fails.
2854
2855 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2856
2857         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2858         to be easier to read and fix bugs in the case a non generic type implements a variant
2859         interface.
2860
2861         * class.c (mono_class_has_variant_generic_params): Make non static.
2862
2863         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2864         the private API.
2865
2866 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2867
2868         * assembly.c: fix MONO_PATH debug output.
2869
2870 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2871
2872         * culture-info-table.h : regenerated.
2873
2874 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2875
2876         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2877         types that are meant to not have a parent.
2878
2879 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2880
2881         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2882         from the image mempool, so it is not leaked.
2883
2884 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2885
2886         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2887
2888 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2889
2890         * verify.c (verify_valuetype_layout_with_target): Fix case
2891         that can lead to infinite recursion. Fix bug #567861
2892
2893 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2894
2895         * pedump.c: Run code verifier even if image verification fails
2896         due to a failed type we. This allows more errors to be shown.
2897
2898 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2899
2900         * class.c (count_virtual_methods): Remove the assert and now
2901         fail properly.
2902         
2903         * class.c (setup_interface_offsets): This can fail now.
2904
2905         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2906         errors. Check setup_interface_offsets errors.
2907
2908         * class.c (setup_interface_offsets): Simplify the return error logic
2909         and remove class_init_ok.
2910
2911         Fixes #560327.
2912
2913 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2914
2915         * class.c (mono_class_init): Do class verification at the beginning. Add
2916         some asserts to avoid tripping into invalid memory.
2917
2918         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2919         g_error and a decent message.
2920
2921         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2922
2923         Fixes #567548.
2924
2925 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2926
2927         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2928         as inline functions instead of defining them in mempool.c.
2929
2930         * metadata-internals.h (MonoImageSet): New structure representing a set of
2931         MonoImages, which own a collection of generic instances.
2932
2933         * metadata.c: Get rid of the global generic caches, instead assign each generic
2934         instance to the image set which consists of all the images referenced by the
2935         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2936         the memory used by generic instances to be allocated from a per image-set mempool
2937         later.
2938
2939 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2942
2943 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * appdomain.c (zero_static_data): Fix a warning.
2946
2947         * locales.c (construct_culture_from_specific_name): Applied patch from
2948         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2949         not found. Fixes #567900.
2950
2951 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2952
2953         * loader.c (mono_method_get_signature_full): Remove two asserts.
2954         Return NULL instead so that the verifier can handle both cases 
2955         gracefully.
2956
2957 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2960         so we can properly fail types instead of crashing.
2961
2962         Fixes #567676.
2963
2964 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2965
2966         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2967         generic method.
2968
2969 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2970
2971         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2972
2973 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2976         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2977         we can't remove it from it since we don't hold the lock.
2978         (mon_new): Free the orphaned events here when a mon structure is added to the
2979         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2980         this down.
2981
2982 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2983
2984         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2985         as max stack might be zero.
2986
2987         Fixes #562320.
2988
2989 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2990
2991         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2992
2993         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2994         instances if the GTD did.
2995
2996         * class.c (mono_class_setup_properties): Ditto.
2997
2998         * class.c (mono_class_setup_events): Ditto.
2999
3000         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
3001
3002         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
3003         error setting.
3004
3005         * class.c (mono_class_init): Fail if GTD did.
3006
3007         * cominterop.c:
3008         * generic-sharing.c:
3009         * icall.c:
3010         * loader.c:
3011         * object.c:
3012         * verify.c: Properly handle failure of mono_class_setup_methods.
3013
3014 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
3015
3016         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
3017         mono_class_inflate_generic_method_full internal.
3018
3019         * class.c (inflate_generic_context): Now takes a MonoError argument.
3020
3021         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
3022         errors.
3023
3024 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
3027         they cannot be patched. Partly fixes #564408.
3028
3029 2009-12-24  Mark Probst  <mark.probst@gmail.com>
3030
3031         * metadata-internals.h, reflection.c: Use the
3032         MonoDynamicImage.handleref hash table only with unmanaged keys,
3033         and add a managed hash table handleref_managed for managed keys.
3034
3035 2009-12-24  Mark Probst  <mark.probst@gmail.com>
3036
3037         * sgen-gc.c: Unset to-space bumper between collections.  It might
3038         become invalid due to degraded allocations.
3039
3040 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
3041
3042         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
3043         with the one from the original method.
3044
3045         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
3046         compatibility.
3047
3048         * verify-internals.h: Add new function to the internal API.
3049
3050 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
3051
3052         * culture-info-tables.h: regenerated it to include the Georgian culture.
3053
3054 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * sgen-gc.c: Include mono/utils/memcheck.h.
3057
3058         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
3059         instead of the current domain, since the two might not match if this is called
3060         from the debugger.
3061
3062         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
3063         domain which created this assembly.
3064
3065 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
3066
3067         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
3068
3069 2009-12-17  Mark Probst  <mark.probst@gmail.com>
3070
3071         * sgen-gc.c: Managed implementation of the specialized generic
3072         store write barrier.
3073
3074 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
3075
3076         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
3077         A private virtual newslot method is used to implement an interface method without exposing
3078         it to users. When querying for public instance methods, such method would hide a public one
3079         on a parent type.
3080
3081         Fixes #564379.
3082
3083 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
3086         conventions.
3087
3088 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3089
3090         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
3091
3092 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3093
3094         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
3095         as they are no longer used.
3096         
3097          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
3098
3099         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
3100
3101 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3102
3103         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
3104         if the owner class has not been finished before returning reflection_info.      
3105
3106         Fixes #565127.
3107
3108 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
3111         param doesn't have custom attributes. Fixes #565117.
3112
3113         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
3114         #565120.
3115
3116 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3117
3118         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
3119
3120 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3121
3122         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
3123         same amount done by a core-clr enabled runtime.
3124
3125 2009-12-15  Marek Habersack  <mhabersack@novell.com>
3126
3127         * appdomain.c (mono_make_shadow_copy): make sure access mode of
3128         the target files is reset to writable by owner and readable by
3129         everyone else to prevent problems when updating shadow copies of
3130         files whose source is read-only. Fixes bug #556884
3131
3132 2009-12-15  Mark Probst  <mark.probst@gmail.com>
3133
3134         * class.c (mono_generic_class_get_class): Allocate the generic
3135         class via malloc again, so that it can be freed when any one of
3136         the images of its constituent types is closed.
3137
3138         * metadata.c: When closing an image, don't free generic insts and
3139         generic classes right away, but put them into a list for later
3140         freeing.
3141
3142         * image.c, metadata-internals.h: Store the free list and in the
3143         second pass of closing an image, free it.
3144
3145 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3146
3147         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
3148
3149         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
3150         types in type_hash.
3151
3152         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
3153
3154 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3155
3156         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
3157         user type.
3158
3159         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
3160         is used.
3161
3162 2009-12-14  Miguel de Icaza  <miguel@novell.com>
3163
3164         * verify.c (mono_method_verify): The Unused opcodes produce an
3165         InvalidProgramException on .NET
3166
3167 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
3168
3169         * loader.c (mono_method_get_header): Move assert after the verifier
3170         has been called on the method header.
3171
3172 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3173
3174         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
3175
3176         * appdomain.c: Bump corlib version.
3177
3178 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3179
3180         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
3181         types as well since otherwise generic instances would not return UT as arguments but
3182         their undelying system type.
3183
3184         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
3185         to reflect the fact that they can have now multiple different types.
3186
3187         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
3188
3189         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
3190
3191         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
3192
3193         * reflection.c (mono_reflection_register_with_runtime): Init super types
3194         if the image is not dynamic.
3195
3196         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
3197         check if the generic type definition is a TypeBuilder.
3198
3199         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
3200         doesn't belong to a dynamic image, skip initialization.
3201
3202         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
3203         base definition is not a dynamic type.
3204
3205 2009-12-11  Marek Habersack  <mhabersack@novell.com>
3206
3207         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
3208         mono_profiler_string_allocation
3209
3210         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
3211         if string profiling is enabled, call
3212         mono_profiler_string_allocation
3213
3214         * profiler.h: added two MonoProfileFlags -
3215         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
3216         installation functions for the hooks below.
3217
3218         * profiler-private.h, profiler.c: added two hooks:
3219         mono_profiler_string_allocation called whenever a string is
3220         allocated by InternalAllocateStr and mono_profiler_iomap called
3221         whenever IOMAP code performs an adjustement on a file path.
3222
3223 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
3224
3225         * boehm-gc.c: fixed race condition while getting the target of a
3226         disappearing link (bug #522233).
3227
3228 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3229
3230         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3231         the error.
3232
3233 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3234
3235         * reflection.c: Add mono_reflection_register_with_runtime icall to
3236         allow a MonoGenericClass to register itself as the managed mirror of
3237         a given generic instance.
3238         This is a temporary workaround until all MGC instantiation happens in
3239         managed code.
3240
3241         * object-internals.h: Ditto.
3242
3243         * icall-def.h: Ditto.
3244
3245 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3246
3247         * sgen-gc.c (find_in_remsets): Also search the generic store
3248         remsets.
3249
3250 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3251
3252         * sgen-gc.c: Don't access class names in debugging code when
3253         unloading a domain, because they might not be valid anymore.
3254
3255 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3256
3257         * domain.c, domain-internals.h: New function mono_domain_unset().
3258
3259         * appdomain.c (unload_thread_main): Detach the thread again at the
3260         end.
3261
3262         * threads.c: When a thread exists or is detached, unset its domain
3263         so that it's NULL when, for example, a pthread destructor runs.
3264
3265         * sgen-gc.c: Assert that there is no domain set after a thread is
3266         done.
3267
3268 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3269
3270         * class.c (mono_generic_class_get_class),
3271         metadata.c (free_generic_class): Allocate generic MonoClass's from
3272         the image mempool, not via malloc.  The problem with malloc is
3273         that when unloading a domain those classes are freed before
3274         clearing the heap and SGen needs the classes.  Rewriting the
3275         unloading code to do the free later would be more work and there's
3276         no point in using malloc anyway.
3277
3278 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3279
3280         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3281         before returning.
3282
3283 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3286         user string blobs.
3287
3288         * verify-internals.h: Add new function to the internal API.
3289
3290         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3291         check if it's a valid string.
3292
3293         * object.c (mono_ldstr): Ditto.
3294
3295         Fixes #561943.
3296
3297 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3298
3299         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3300         from a method before returning it. This is the expected behavior.
3301
3302 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3303
3304         * reflection.c (inflate_method): Handle the case of a regular system type.
3305
3306 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3307
3308         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3309         gathering code.
3310
3311         * mempool.c, mempool-internals.h: New function
3312         mono_mempool_get_bytes_allocated().
3313
3314         * Makefile.am: sgen-pinning-stats.c added.
3315
3316 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3317
3318         * sgen-gc.c (create_allocator): Only use the fast path if the
3319         object size is within the small object size limit.
3320
3321 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3322
3323         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3324         possibly adding padding to sizeof (GCMemSection).
3325
3326 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3327
3328         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3329         reference is not in the nursery.
3330
3331 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3332
3333         * class.c (mono_class_from_typeref): Bounds check idx against the 
3334         assemblyref table.
3335
3336 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3337
3338         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3339         through the potential roots, then sort the results and find the
3340         pinned objects from there.
3341
3342         * Makefile.am: sgen-pinning.c added.
3343
3344 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3345
3346         * sgen-gc.c: Record generic stores in specialized remset buffers.
3347
3348 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3349
3350         * sgen-gc.c: Make pinned chunks the same size as major heap
3351         sections, and align them as well, so that we can check whether an
3352         object is in a pinned chunk or a major section in constant time.
3353
3354 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3355
3356         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3357
3358 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3359
3360         * sgen-gc.c: Make all major heap sections the same size (currently
3361         128k) and allocate them on aligned addresses.  Small heap sections
3362         give us better granularity with pinned objects - we can free up
3363         much more memory.
3364
3365 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3366
3367         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3368         output removed.
3369
3370 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3371
3372         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3373
3374         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3375         names in addition to the runtime generated one.
3376
3377         * mono/metadata/image.h: Add a function to take the real name of the assembly
3378         image.
3379
3380         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3381         use it instead of the runtime generated one.
3382
3383         Code is contributed under MIT/X11 license.
3384
3385 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3388         before the other checks to prevent problems if the DateTime class is blittable.
3389         Hopefully fixes #559600.
3390
3391 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3392
3393         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3394         returns the largest string length that will not be put into the
3395         LOS.
3396
3397         * sgen-gc.c, gc-internal.h: New function that returns the largest
3398         object size that will not be put into the LOS.
3399
3400         * appdomain.c: Bump corlib version.
3401
3402 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3403
3404         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3405
3406         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3407
3408 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3409
3410         * reflection.c (inflate_method): Fix signature.
3411
3412         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3413         in managed code.
3414
3415 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3416
3417         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3418
3419 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3420
3421         * sgen-gc.c: Abstract to-space handling.
3422
3423 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3424
3425         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3426
3427         Fixes #559906.
3428
3429 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3430
3431         * sgen-gc.c: Only add references from outside the nursery to
3432         within the nursery to the global remset list.
3433
3434 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3435
3436         * appdomain.c (create_exceptions): Set the domain temporarily if
3437         necessary to avoid cross-domain references.
3438
3439 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3440
3441         * verify.c (get_stack_type): Return that the type is invalid instead of
3442         asserting.
3443
3444         * verify.c (mono_method_verify): Verify that all locals and arguments
3445         have valid stack types.
3446
3447         Fixes #559913.
3448
3449 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3452         bounds checking overflow aware.
3453
3454         Fixes #559910.
3455
3456 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3457
3458         * verify.c (do_invoke_method): Check for invalid method signatures.
3459
3460         Fixes #553450.
3461
3462 2009-12-02  Jb Evain  <jbevain@novell.com>
3463
3464         * appdomain.c (MONO_CORLIB_VERSION): bump.
3465         * icall-def.h (get_base_definition): renamed to get_base_method
3466         and add a boolean argument indicating we want the original
3467         method definition, or the immediate base method.
3468         * icall.c: apply the get_base_definition to get_base_method change.
3469
3470 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3471
3472         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3473
3474         Fixes #558042.
3475
3476 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3477
3478         * class.c: remove asserts for invalid type token in
3479         mono_class_name_from_token(), mono_assembly_name_from_token() and
3480         mono_class_create_from_typedef () (fixes bug #553318).
3481
3482 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3483
3484         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3485         incorrect assemblies (bug #553322).
3486
3487 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3488
3489         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3490
3491         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3492
3493         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3494
3495         * class.c (inflate_generic_context): Ditto.
3496
3497         * loader.c (method_from_methodspec): Ditto.
3498
3499         Fixes #558230.
3500
3501 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3502
3503         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3504
3505         * class.c (mono_class_create_from_typespec): Ditto.
3506
3507         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3508
3509         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3510
3511         Fixes #558184.
3512
3513 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3514
3515         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3516
3517         * verify.c (verify_delegate_compatibility): Ditto.
3518
3519         * verify.c (do_newobj): Ditto.
3520
3521         Fixes #558046.
3522
3523 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3524
3525         * sgen-gc.c: Use a gray queue instead of requiring that gray
3526         objects are in a contiguous region.
3527
3528         * sgen-gray.c: The gray queue implementation.
3529
3530         * Makefile.am: sgen-gray.c added.
3531
3532 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3533
3534         * appdomain.c: When unloading a domain, zero its static data and
3535         perform a minor collection when using SGen.  That will get rid of
3536         all the remsets pointing into that domain's static data.
3537
3538         * sgen-gc.c: Allow remsets into static data.  By doing this we
3539         need less checks so we're more efficient.
3540
3541 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3542
3543         * verify.c (mono_method_verify): Check for catch clauses with broken
3544         types.
3545
3546         Fixes #558465.
3547
3548 2009-12-01  Jb Evain  <jbevain@novell.com>
3549
3550         * class.c (make_generic_param_class): set the namespace of
3551         the generic parameter class from its owner, if available.
3552
3553 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3554
3555         * verify.c (code_bounds_check): Do proper overflow checking.
3556
3557         * verify.c (mono_method_verify): The number of switch entries is
3558         an unsigned int. Properly bounds check it.
3559
3560         Fixes #558594.
3561
3562 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3563
3564         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3565         mono_metadata_method_has_param_attrs which only checks if a given param
3566         list has a non zero flags entry.
3567
3568         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3569         to inform how many params should we expect to decode.
3570
3571         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3572         as it's faster than mono_metadata_get_param_attrs.
3573
3574         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3575         add mono_metadata_method_has_param_attrs.
3576
3577 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3578
3579         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3580         failures.
3581
3582         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3583         is -1 but its class is broken.
3584
3585         Fixes #558522.
3586
3587 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3590         for parameter overflow.
3591
3592         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3593         of mono_metadata_get_param_attrs.
3594
3595         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3596         API.
3597
3598         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3599
3600 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3601
3602         * class.c (mono_class_setup_fields): Check for fields with broken types.
3603
3604         Fixes #558741.
3605
3606 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3607
3608         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3609         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3610         its TypeBuilder::CreateType ().
3611
3612         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3613         if not needed.
3614
3615         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3616         to make setup_interface_offsets happy.
3617
3618         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3619         compilation now works.
3620
3621 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * appdomain.c (create_exceptions): New helper function extracted from
3624         mono_runtime_init () to precreate objects used during exception handling.
3625         (mono_runtime_init): Call it.
3626         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3627
3628 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3629
3630         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3631         compilation until the proper one is found.
3632
3633 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3634
3635         * class.c (mono_class_setup_vtable_general): Cache the result of
3636         get_virtual_methods () since it can be slow because of the metadata
3637         optimization.
3638
3639         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3640         from a MonoValueHashTable for now, since the later is based on an earlier
3641         version of hpj's internal probing code and seems to have serious collision
3642         issues.
3643
3644         * loader.c (mono_get_method_full): Update after the change above.
3645
3646 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3649
3650 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3651
3652         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3653         the GTD instead of the DGC instead of crashing.
3654
3655         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3656         required. Inflate fields if needed.
3657
3658         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3659         finished. Renamed.
3660
3661 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3662
3663         * class.c (check_interface_method_override): Check for NULL signatures and fail
3664         the type.
3665
3666         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3667
3668         Fixes #553428.
3669
3670 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3673         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3674
3675 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3676
3677         * loader.c (field_from_memberref): Resolve the class first then the field
3678         signature. Remove a lot of duplicated code and make sure we don't pass valid
3679         values to mono_loader_set_error_field_load.
3680
3681         Fixes #553306.
3682
3683 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3684
3685         * class.c (inflate_generic_type): Change code to use new signature of
3686         mono_error_set_bad_image.
3687
3688         Fixes #558124.
3689
3690 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3691
3692         * verify.c (mono_method_verify): Don't free ctx.params items if 
3693         we aborted while inflating the ctx.locals. Complete previous fix
3694
3695 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3696
3697         * verify.c (mono_method_verify): Use the uninflated type name, 
3698         when the inflated is null, to report errors. Also take care when
3699         freeing, not to free everything since, in case of an error, some
3700         stuff would be copies (i.e. not allocated by the function itself)
3701         Fix bug #558145
3702
3703 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3704
3705         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3706         or overflow. The caller must have done this check explicitly. This guard us
3707         from accessing invalid memory.
3708
3709         * verify.c (do_push_static_field): Check for stack overflow.
3710
3711         Fixes #553333.
3712
3713 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3714
3715         * loader.c (find_method_in_class): Don't crash if the signature cannot
3716         be resolved.
3717
3718         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3719         of asserting for the case of invalid params.
3720
3721         Fixes #553304.
3722
3723 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3724
3725         * image.c (mono_image_load_module): Fix crash when a bad assembly
3726         has no module at all (fix bug #553412) and also replace the 
3727         g_assert with a return NULL (documented return value for failure)
3728
3729 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3732
3733 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3734
3735         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3736         file attribute to managed code and avoid doing the mask/attribute
3737         checks here. 
3738
3739 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3740
3741         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3742         the managed world.
3743
3744         * icall-def.h: New entry points.
3745         
3746 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3747
3748         * process.c: Don't put references to managed objects into a
3749         g_ptr_array.
3750
3751 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3752
3753         * class.c (can_access_internals): Allow CoreCLR to participate in
3754         allowing (or not) [InternalsVisibleTo] between assemblies.
3755         * security-core-clr.c|h: Make sure that only trusted code (a 
3756         superset of platform code) can access the internals of platform
3757         code.
3758
3759 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3760
3761         * reflection.c: use the correct base class to get the virtual method
3762         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3763
3764 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3765
3766         * security-core-clr.c (get_caller_no_reflection_related): 
3767         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3768         it's still reflection and must be filtered correctly.
3769
3770 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3771
3772         * object.c (compute_class_bitmap): Fix for large bitmaps.
3773
3774 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3775
3776         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3777
3778         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3779         koush@koushikdutta.com). Disable GC_no_dls on android.
3780
3781 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3782
3783         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3784         tlab_next points outside the TLAB because the allocator was
3785         interrupted.
3786
3787 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3790
3791 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3792
3793         * object-internals.h: Change signature for mono_string_to_utf8_image.
3794
3795         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3796         argument.
3797
3798         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3799         exceptions due to mono_string_to_utf8.
3800
3801 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3802
3803         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3804
3805         * object.c (mono_remote_class): Make sure all resources are released before
3806         raising an exception.
3807
3808         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3809
3810 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3811
3812         * mono-perfcounters.c (network_get_impl): Change variable initialization
3813         ordering to fix potential memory leak in case of exceptions.
3814
3815         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3816         encoded strings.
3817         
3818 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3819
3820         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3821         variable initialization ordering to fix potential memory leak in case
3822         of exceptions.
3823
3824 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3827         needed.
3828
3829 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3830
3831         * appdomain.c: Fix shadow path code to better deal with exceptions.
3832
3833 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3834
3835         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3836         exception in the middle of the runtime code.
3837
3838 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3839
3840         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3841         leak memory with broken envvar value.
3842
3843 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3844
3845         * reflection.c (mono_reflection_setup_internal_class): Because
3846         nested classes are not added to the name cache, we must put them
3847         in the reflection_info_unregister_classes list.
3848
3849 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3850
3851         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3852         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3853         platform (trusted) code. Instead we return a TypeLoadException to
3854         be thrown later. This is the exception thrown by Silverlight 2 if
3855         a type, inside application (user) code is marked with [ComImport]
3856
3857 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3858
3859         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3860         mono_is_debugger_attached () too.
3861
3862         * mono-debug.c (mono_is_debugger_attached): New helper function.
3863         (mono_set_is_debugger_attached): Ditto.
3864
3865 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3866
3867         * object-internals.h: Add mono_string_to_utf8_checked.
3868
3869         * object.c: Implement mono_string_to_utf8_checked.
3870
3871 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3872
3873         * class.c: Add missing check for load errors after every
3874         call to mono_class_setup_fields
3875
3876         Fixes #552282.
3877
3878 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3879
3880         metadata-verify.c (verify_tables_schema): Fix the error message.
3881
3882 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3883
3884         * metadata.c: Change event table schema to use TDOR for event type
3885         as this is what it's meant to be.
3886
3887         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3888         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3889         entry.
3890
3891         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3892         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3893         rows in MONO_TABLE_GENERICPARAM.
3894
3895         Fixes #552289.
3896
3897 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3898
3899         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3900         insertion.
3901
3902         * reflection.c (mono_reflection_setup_internal_class): Avoid
3903         registering a gc root the same MonoClass multiple times.
3904         Don't register nested types on the global scope as they should
3905         not be available there.
3906
3907 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3908
3909         * culture-info-tables.h: regenerated.
3910
3911 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3912
3913         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3914
3915 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3916
3917         * string-icalls.c|h: Remove string internal calls that are not 
3918         used anymore by the class libraries.
3919         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3920         which is not used in the class librairies.
3921         * icall-def.h: Update tables.
3922
3923 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3924
3925         * class.h: Move mono_class_inflate_generic_type_checked...
3926
3927         * class-internals.h: to here and make it internal. We don't want to
3928         further expose MonoGenericContext. 
3929
3930 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * verify.c (mono_method_verify): Improve error message.
3933
3934 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3935
3936         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3937         the token is already properly encoded. Fixs 4.0 build.
3938
3939 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3940
3941         * locales.c (construct_number_format): Check if the number index is
3942         valid before trying to use it, if not, just return.
3943         
3944 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3945
3946         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3947         since that loses the abort state. Fixes #539394.
3948
3949 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3952         explicit this argument to the call signature.
3953         (mono_marshal_get_icall_wrapper): Ditto.
3954
3955 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3956
3957         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3958         to indicate which assembly to use when resolving a custom-mod.
3959
3960         Fixes handling of volatile fields used across assemblies as reported in #551513.
3961
3962 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3963
3964         * loader.c: Improve error messages.
3965
3966 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3967
3968         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3969         of interfaces. Fixes IKVM.
3970
3971         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3972
3973 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3974
3975         * verify.c (verifier_inflate_type): Return the inflated type on success.
3976
3977 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3978
3979         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3980
3981         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3982
3983         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3984
3985         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3986         flag set.
3987
3988         * profiler.c: Add new profiler callbacks for runtime invoke.
3989
3990         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3991
3992 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3993
3994         * sgen-gc.c: Keep track of the reason for a major collection and
3995         write it to the heap-dump file.
3996
3997 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3998
3999         * threads.c: refactor the code that initializes the
4000         thread_start_args into a reusable function and use this in the two
4001         methods that start up threads.
4002
4003 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
4006         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
4007
4008 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4009
4010         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
4011         Until now, we only had the per-cpu(core) counters.
4012
4013 2009-10-28  Mark Probst  <mark.probst@gmail.com>
4014
4015         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
4016         mono_gc_get_suspend_signal(), which returns the suspend signal
4017         number used by the GC.
4018
4019 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
4020
4021         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
4022
4023         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
4024         signalling start_notify.
4025
4026 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4027
4028         * appdomain.c: do not test the st_mode field for shadow-copies.
4029         Fixes bug #545276.
4030
4031 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4032
4033         * threadpool.[ch]: added hooks for thread start/finish and item
4034         processing begin/end. For monotouch use only.
4035
4036 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * threads.c (mono_thread_get_name): New helper function.
4039
4040         * reflection.c (resolve_object): Set handle_class for strings too.
4041         (mono_reflection_create_custom_attr_data_args): New helper function to decode
4042         a cattr blob into a set of arrays and structures without creating the custom
4043         attributes themselves.
4044         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
4045
4046         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
4047
4048         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
4049         function.
4050
4051 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4052
4053         * verify.c: Replace calls to mono_class_inflate_generic_type with
4054         mono_class_inflate_generic_type_checked. Fixes #480005.
4055
4056 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4057
4058         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
4059         object since not all paths lead to callees initing it.
4060
4061 2009-10-23  Alp Toker  <alp@nuanti.com>
4062
4063         Fix embedding API breakage from r144688. mono-compiler.h is an internal
4064         header and should not be shipped:
4065
4066         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
4067         which is specific to the mono build. Not going to work.
4068
4069 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
4070
4071         * security-manager.c: Report if core-clr is active from
4072         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
4073         to allow Moonlight BCL to behave appropriately (both in browser
4074         and outside, e.g. smcs)
4075
4076 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4077
4078         * mono-config.c: ignore UTF-8 BOM and report parser errors.
4079         Fixes bug #549108.
4080
4081 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4082
4083         * class.c: fix typo.
4084
4085 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
4086
4087         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
4088         a MonoError parameter.
4089
4090         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
4091         version that can does proper error handling.
4092
4093         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
4094
4095         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
4096
4097         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
4098
4099 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
4102         NO_UNALIGNED_ACCESS is defined.
4103
4104 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * marshal.c (mono_string_builder_to_utf16): Applied patch from
4107         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
4108         Fixes #549173.
4109
4110 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4111
4112         * sgen-gc.c: Shorten sections whenever possible.
4113
4114 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4115
4116         * sgen-gc.c: Use our portable semaphore #defines.
4117
4118 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4119
4120         * sgen-gc.c: A debug option for dumping the heap layout to a file
4121         after each collection.
4122
4123 2009-10-21  Mark Probst  <mark.probst@gmail.com>
4124
4125         * sgen-gc.c: Make managed write barriers atomic via
4126         thread-restarts.
4127
4128 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4129
4130         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
4131         methods. Fixes #543021.
4132
4133 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4134
4135         * socket-io.[ch]: fix VS build.
4136
4137 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4138
4139         * icall-def.h:
4140         * socket-io.[ch]: implemented SendFile.
4141
4142 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * class.c (mono_class_create_from_typedef): Initialize class->element_class
4145         before the interfaces to avoid crashes later if class initialization fails.
4146         Fixes #548417.
4147
4148         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
4149         Fixes #548276.
4150
4151 2009-10-20  Marek Safar  <marek.safar@gmail.com>
4152
4153         * domain.c: Bump 4.0 version.
4154
4155 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
4156
4157         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
4158         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
4159         check since 'pubkey' can't be NULL at this stage
4160         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
4161         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
4162         initialization of 'iter'
4163
4164 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
4165
4166         * cominterop.c : Search the interface parts of vtable to find 
4167           method matches.  Fixes 547030.
4168
4169         Code is contributed under MIT/X11 license.
4170
4171 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
4172
4173         * marshal.c: BeginInvoke cannot be called on multicast delegates with
4174         multiple targets. Fixes bug #574426.
4175
4176 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4177
4178         * profiler.h: Put here the definition of
4179         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
4180         (and fix the build...).
4181
4182 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4183
4184         * profiler.c, profiler.h, profiler-private.h:
4185         Added support for different ways of getting call chains in stat mode.
4186
4187 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4188
4189         * object.c, object-internals.h: New function for computing the
4190         size of an array, factored out of mono_array_new_full().  Use
4191         SGen's functions for allocating arrays and vectors.
4192
4193         * sgen-gc.c, gc-internal.h: Special functions for allocating
4194         arrays and vectors without race conditions.  A managed array
4195         allocator method.
4196
4197         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
4198
4199 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4200
4201         * object.c, object.h, icall.c: Write barriers do the copying now,
4202         as well, so no need for an additional memcpy.
4203
4204         * sgen-gc.c: Lock when storing remsets.  Do the memory
4205         copying/moving in the write barriers.
4206
4207         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
4208
4209         * reflection.c: Added an assert.
4210
4211 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4212
4213         * threads.c, process.c: A few missing write barriers.
4214
4215 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
4216
4217         * mono-perfcounters.c, mono-perfcounters-def.h: Add
4218         network performance counters for bytes sent per second, bytes
4219         received per second, and bytes total per second.
4220
4221         Code is contributed under MIT/X11 license.
4222
4223 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4224
4225         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
4226         Fix warning.
4227
4228 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4229
4230         * threads.c, object-internals.h, object.c: Move code for
4231         transferring an object to a different domain (via
4232         serialization/remoting) to object.c.
4233
4234         * object.c (call_unhandled_exception_delegate): If the exception
4235         is in a different domain than the delegate, transfer the exception
4236         to that domain.
4237
4238 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4239
4240         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4241         Fixes #322934.
4242
4243 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4246
4247 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4248
4249         * object.c (mono_method_return_message_restore): Handle the case
4250         where the argument is an instance of a generic type.  Fixes
4251         #544446.
4252
4253 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4254
4255         * object.c (set_value): Write barrier fix - we must pass the
4256         count, not the size.
4257
4258 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * domain.c (mono_init_internal): Print a useful error message when encountering
4261         an old mscorlib, instead of crashing. Fixes #544307.
4262
4263 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4264
4265         * appdomain.c (copy_app_domain_setup): Fix a warning.
4266
4267         * debug-helpers.c (dis_one): Ditto.
4268
4269 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4270
4271         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4272         into the new domain, instead of referencing the original one.
4273
4274         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4275         non-static.
4276
4277         * appdomain.c: Corlib version bump.
4278
4279 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4280
4281         * threadpool.c: one more...
4282
4283 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4284
4285         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4286         threads to die because we're shutting down. delgate5.exe works again.
4287
4288 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4289
4290         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4291           ccw_interface_hash table when a ccw is finalized.
4292
4293         Code is contributed under MIT/X11 license.
4294
4295 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4296
4297         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4298         domain and image unloading into two steps.  We must do this
4299         because clearing the domain in SGen requires the class metadata to
4300         be intact, but we need to free the mono_g_hash_tables in case a
4301         collection occurs during domain unloading and the roots would trip
4302         up the GC.
4303
4304 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4305
4306         * object-internals.h: Remove serialized culture fields from
4307         MonoInternalThread.
4308
4309         * icall-def.h, thread-types.h, threads.c: Remove serialized
4310         culture icalls.
4311
4312         * appdomain.c: Corlib version bump.
4313
4314 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4315
4316         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4317         Fixes #543133.
4318
4319 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4320
4321         * sgen-gc.c: Try to shorten the new section after a major
4322         allocation to avoid ever-growing sections.
4323
4324 2009-10-13  Martin Baulig  <martin@ximian.com>
4325
4326         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4327         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4328         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4329         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4330
4331         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4332
4333 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4334
4335         * threadpool.c: fixed the order in which 'completed' and the wait
4336         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4337         No need to use the wait_handle field of ASyncCall. Make sure the
4338         threadpool is active when adding a job or queueing an idle thread.
4339
4340 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4341
4342         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4343
4344         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4345         when using --compile-all.
4346
4347 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4348
4349         * metadata.c (free_generic_class): Unregister the field_objects
4350         roots if we're using SGen.
4351
4352 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4353
4354         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4355         for GenericParamTableEntry.gparam.
4356
4357 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4358
4359         * marshal.c: don't create the handle when calling. It is created later
4360         if needed.
4361
4362 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4363
4364         * sgen-gc.c: Warning fixes.
4365
4366 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4367
4368         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4369         whole heap for cross-domain references before each collection.
4370
4371         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4372         object.
4373
4374         * threadpool-internals.h, threadpool.c: New function
4375         mono_thread_pool_is_queue_array() for checking whether a given
4376         array is used as a (cross-domain) queue by the thread pool code.
4377
4378 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4379
4380         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4381         searches the whole heap for objects containing a specific
4382         reference.  Only for debugging.
4383
4384 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4385
4386         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4387
4388         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4389         byte arrays between domains.
4390
4391 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4392
4393         * threadpool.c:
4394         * class-internals.h:
4395         * mono-perfcounters-def.h:
4396         * mono-perfcounters.c:
4397         -There is a list of idle threads
4398         -Each of those idle threads wait on their own WaitHandle instead
4399         of all of them using the same semaphore. When a new work item is
4400         added, the job is assigned directly to an idle thread or a newly
4401         created one if possible and then the handle for that thread is
4402         signaled. Compare that to the current approach where all the
4403         threads in the pool compete to dequeue a job from the same
4404         queue.
4405         -New struct ThreadPool that brings together the bunch of static
4406         variable for each threadpool (IO and regular).
4407         -New performance counters: # of items added and its rate per
4408         threadpool. The rate will be used later, perhaps together with
4409         other perf. counters, to decide when idle threads should exit.
4410
4411 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4412
4413         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4414         Fix typo on Windows build.      
4415         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4416         
4417         Code is contributed under MIT/X11 license.
4418
4419 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4420
4421         * object-internals.h: The Thread class is split up into Thread and
4422         InternalThread now.  We have exactly one InternalThread per
4423         thread, and at most one Thread per appdomain per thread.  Most
4424         data is stored in InternalThread.  All InternalThread objects live
4425         in the root domain.
4426
4427         * class-internals.h: Add internal_thread_class to MonoDefaults.
4428
4429         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4430         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4431         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4432         resulting from the split of the Thread class.
4433
4434         * gc-internal.h: Prototype for new function for checking whether a
4435         thread is the finalizer thread.
4436
4437         * appdomain.c: Corlib version bump.
4438
4439 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4440
4441         * appdomain.c|h: Add a mono_domain_try_unload method which is
4442         equivalent to mono_domain_unload, except that it returns an exception
4443         instead of throwing it. Make mono_domain_unload use the
4444         mono_domain_try_unload method to avoid code-duplication.
4445
4446 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4449         a problem.
4450
4451 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4452
4453         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4454         aborting when a conversion is not implemented.
4455
4456 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4457
4458         * verify.c: when comparing culture strings, use g_ascii_strcmp
4459
4460         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4461         when comparing public key tokens to use memcmp on 16 bytes.   I do
4462         not believe this ever worked as advertised in the past.
4463
4464         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4465         which would have always failed earlier.
4466
4467 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4468
4469         * gc.c: Raise a NullArgumentException if the object passed is
4470         null.
4471
4472 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * image.c (mono_image_close): Atomically decrement the reference count and
4475         remove the image from the hash tables, to prevent another thread from seeing a
4476         dying MonoImage. Fixes #541194.
4477
4478 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4479
4480         * threadpool.c: actually use the minimum number of 'completion ports'
4481         (for us is just a potential worker thread).
4482
4483 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4484
4485         * threadpool.c: remove ares_htable. It does not make sense any more
4486         since the same objects are now stored in GC-tracked arrays while they are
4487         in the queue.
4488
4489 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4490
4491         * threadpool.c: increase the minimum length of the queues to 128.
4492         Remove warning.
4493
4494 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4495
4496         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4497         return the modified signature used by string ctors.
4498
4499 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4500
4501         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4502         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4503         method, to be used by full-aot.
4504
4505 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4506
4507         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4508         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4509         be known to be good.
4510
4511         * class.c (mono_class_init): Fail array types if their element type fails initialization
4512         as well.
4513
4514         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4515         initialization, additionally we request the element_type vtable to be initialized as well.
4516
4517         This is fine and should not increase the working set in any meaningful way since it's reasonable
4518         to assume       that most code will create an array and eventually populate it, which will require the
4519         type's vtable to be initialized.
4520
4521         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4522
4523 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4524
4525         * normalization-tables.h : regenerated.
4526
4527 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4530         a leb128 encoding can take up to 5 bytes.
4531
4532 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4533
4534         * class.c (verify_class_overrides): Remove useless argument.
4535
4536         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4537         before interface enumeration as this is no longer required.
4538
4539 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4540
4541         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4542         used under mono_class_init context. This functions avoid any code path that
4543         calls mono_class_init, which leads it to be slow as some things like the interface
4544         bitmap are not available.
4545
4546         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4547         of it's own broken version. Fixes the verifier part of #538588.
4548
4549         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4550         API.
4551
4552 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4553
4554         * class.c (mono_class_init): Always set an exception in a class if
4555         vtable setup fails.  Fixes #538577.
4556
4557         * generic-sharing.c: Raise an exception if mono_class_vtable()
4558         returns NULL.
4559
4560 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4561
4562         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4563         methods of vtypes, as they could be incorrectly shared with static methods
4564         taking an IntPtr argument.
4565
4566 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4567
4568         * domain.c:
4569         * object.c:
4570         * class-internals.h: renamed waithandle_class to
4571         manualresetevent_class.
4572         * marshal.c: propagate the exception if a remoting BeginInvoke call
4573         fails.
4574
4575 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4576
4577         * object.c: Properly handle vtable failures.
4578
4579 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * socket-io.c: Assert on vtable failure.
4582
4583         * mono-mlist.c: Assert on vtable failure.
4584
4585 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4586
4587         * marshal.c: Assert on vtable failure.
4588
4589 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4590
4591         * icall.c: Properly handle vtable failures.
4592
4593 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4594
4595         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4596
4597 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4600
4601         * console-unix.c (do_console_cancel_event): Same.
4602
4603 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4604
4605         * class-internals.h: Add mono_class_vtable_full function that allows control
4606         if an exception should be raised or not.
4607
4608         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4609         to do what its documentation say, that is to return NULL and set exception_type on
4610         failure.
4611
4612         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4613         and change the code to honor it.
4614
4615 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4616
4617         * verify.c: Fix typo in error message.
4618
4619 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4620
4621         * security-core-clr.c: Fix default_platform_check so it can run
4622         the runtime coreclr tests (without an infinite recursion when
4623         throwing an exception).
4624
4625 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4626
4627         object.c (mono_delegate_ctor_with_method): Guard against null method.
4628
4629 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4632         that should be replaced with error handling later.
4633
4634 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4635
4636         * marshal.c (mono_delegate_end_invoke): Fix warning.
4637
4638 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * loader.c (mono_field_from_token): Properly handle invalid
4641         dynamic tokens.
4642
4643 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * pedump.c (verify_image_file): Skip types that can't be
4646         decoded.
4647
4648 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4649
4650         * verify.c: Look for recursive valuetypes only against the
4651         type been initialized as this is a lot simpler and works.
4652
4653 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * verify.c: Ensure that fields are properly loaded before
4656         checking them.
4657
4658 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4659
4660         * object.c (mono_object_get_virtual_method) : Call 
4661           mono_cominterop_get_invoke if the object is a COM object.
4662
4663         Code is contributed under MIT/X11 license.
4664
4665 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4666
4667         * verify.c: Check for recursive valuetype definitions.
4668
4669 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         Use inheritance-aware interface offsets. Inherited types use the same offsets
4672         of their parents. This reduce offset duplication in case more than one type in
4673         the inheritance tree explicitly implements the same interface.
4674
4675         This also removes a source of vtable bubbles found in #532409. An abstract type
4676         isn't required to provide abstract methods to all interfaces it implements, which
4677         resulted in a bubble with the previous scheme as the child would get a non-full
4678         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4679         should be fixed.
4680
4681         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4682         it's expected to not cause any significant increase beyond that.
4683
4684         * class.c (setup_interface_offsets): Compute super class iface offsets
4685         first to force sharing.
4686
4687         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4688         dumping only the relevant ones.
4689
4690         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4691         methods a new slot regardless if they belong to an interface or not. This allows
4692         an inherited type to override the iface method separately from the class one.
4693
4694 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4695
4696         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4697         applications that take less than 2s to execute.
4698         Bug #524984 fixed.
4699
4700 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4701
4702         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4703
4704         * object.c (mono_get_runtime_callbacks): New helper function to return
4705         the runtime callbacks.
4706
4707         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4708         mono_get_runtime_build_info () as the display name.
4709         
4710 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4711
4712         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4713         argument, since NEWARR expects a native int. Fixes #481559.
4714
4715 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4716
4717         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4718         against broken SRE methods.
4719
4720 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4721
4722         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4723         a NULL variable. Abort early on failure.
4724
4725 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4726
4727         * class.c (can_access_type): Fail visibility test for non nested
4728         types with nested visibility.
4729
4730 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4731
4732         * assembly.c (parse_public_key): Avoid allocating (and not 
4733         freeing) the public key array when it's not requested by the 
4734         caller.
4735         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4736         ves_icall_System_Threading_Thread_Thread_internal): Free 
4737         allocated memory on error.
4738
4739 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4740
4741         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4742
4743 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4744
4745         * class.c (mono_class_setup_fields): Remove duplicated local variable
4746         named gklass.
4747         Rename gklass to gtd to reflect the fact that it points to the generic
4748         type definition.
4749         Remove the duplicated call to mono_class_setup_fields on gtd and move
4750         the error check to the beginning.
4751
4752 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4753
4754         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4755         Remove cruft of the previous patch.
4756
4757 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4758
4759         * metadata-verify.c (verify_method_table): Check for abstract + final.
4760         Fixes #534175.
4761
4762 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4763
4764         * verify.c (verify_class_fields): Check for duplicate fields.
4765
4766 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4767
4768         * metadata-verify.c: Verify the typeref table for duplicates.
4769
4770 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         This reverts r140936 and properly handles interfaces with static methods. The
4773         right fix is to ensure vtables without bubles which is an easier to verify
4774         constraint. We should avoid such special cases as of the reverted patch as those
4775         only make the runtime more brittle.
4776
4777         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4778         static methods on interfaces.
4779
4780         * class.c (setup_interface_offsets): Use the number of virtual methods when
4781         calculating interface offsets instead of the number of methods. This way we
4782         avoid bubles on the layout.
4783
4784 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4785
4786         * metadata-verify.c (verify_metadata_header): Some very smart
4787         obfuscators like to add extra stream headers. Ignore them.
4788
4789 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4792         methods correctly.
4793
4794 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * metadata-verify.c: Verify for duplicated types.
4797
4798 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4799
4800         * metadata-verify.c (verify_typedef_table): Verify for nested types
4801         without an entry on the nested class table.
4802
4803 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4806         <tom_hindle@sil.org>. Add locking around hash table accesses.
4807
4808 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4809
4810         * verify.c (mono_verifier_verify_class): Verify all interface if
4811         really are interfaces. Fixes #534184.
4812
4813 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4814
4815         * pedump.c: Initialize all types during metadata validation so we report
4816         errors only detected as part of class initialization.
4817
4818 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4819
4820         * metadata-verify.c (verify_method_table): PInvoke requires method to
4821         be static. Fixes #534189
4822
4823 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4824
4825         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4826         being NULL.
4827
4828 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4829
4830         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4831         for holes or bad methods. Fixes #525314.
4832
4833 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4834
4835         * class.c (setup_interface_offsets): Don't allocate slot
4836         for the same interface multiple times. This creates bubbles
4837         that waster space and make vtable verification harder.
4838
4839         The same interface get a slot multiple times since we need
4840         to get the closure of all implemented interfaces, which means
4841         the same interface is reported multiple times.
4842
4843 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4844
4845         * verify.c (mono_verifier_verify_class): Don't check the fields
4846         of generic instances since the context on which they got expanded
4847         might lead to false positives.
4848
4849         Such thing happens when a generic type is inflated in the context
4850         of a generic method and the inflated type of a field turns into a
4851         generic method argument, which causes the checking code to think
4852         it's an invalid class when it's not.
4853
4854 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * verify.c (mono_type_is_valid_in_context): Verify if type
4857         is NULL and remove duplicate test.
4858
4859 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4860
4861         * verify.c (mono_verifier_verify_class): Check fields for
4862         invalid generic arguments.
4863
4864 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4865
4866         * class.c (verify_class_overrides): Verify if for static
4867         and non virtual methods.
4868
4869 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4870
4871         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4872         Check for errors after retrieving the vtable.
4873
4874 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4875
4876         * class.c (mono_class_setup_vtable_general): Verify
4877         if method overrides are valid before processing them.
4878
4879 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4880
4881         * marshal.c (mono_array_to_lparray): Fix minimal build with
4882         cominterop disabled.
4883
4884         * marshal.c (mono_free_lparray): Same.
4885
4886 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4887
4888         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4889         the hash function for the ares_htable.
4890
4891 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4892
4893         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4894         bit for assembly flags. MS is ok with it but there is no spec anywhere
4895         on its mean
4896
4897 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4898
4899         * class.c (mono_class_create_from_typedef): Emit profiler events
4900         in all cases.
4901
4902 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4903
4904         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4905         Release memory on failure.
4906
4907 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4908
4909         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4910         to the internal API.
4911
4912         * metadata.c (get_constraints): Use a single-linked table as we don't
4913         traverse it backward. Fail and return FALSE if only of the contraint types
4914         is not found.
4915
4916         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4917         to mono_metadata_load_generic_param_constraints except for having a return value.
4918         This has to be done since the later is part of the public API.
4919
4920         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4921         and fail the type.
4922
4923         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4924         and fail the method.
4925
4926 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4927
4928         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4929         with MS broken behavior of emmitting EH section sizes without the
4930         header size added.
4931
4932 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4935         memory until we're sure that we'll need it. This avoids leaking for
4936         broken types or duplicated instantiation.
4937
4938 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4939
4940         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4941         mistake.
4942
4943 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4944
4945         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4946         and expected size calculation.
4947
4948 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4949
4950         * class.c (mono_class_get_field_idx): Add fixme for broken
4951         behavior for types with multiple fields with the same name.
4952         I would rather fix it, but have no idea on how to generate
4953         such artifact for testing.
4954
4955 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4956
4957         * verify.c (verifier_load_field): We should allow references to
4958         fields to be made using the generic type definition. It's up to
4959         the loader system to fail invalid ops.
4960
4961         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4962         are invalid.
4963
4964 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4965
4966         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4967
4968         * metadata-internals.h: Fix declaration of 
4969         mono_metadata_interfaces_from_typedef_full.
4970
4971         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4972         heap_alloc_result parameter that controls if the result should be
4973         g_malloc'd.
4974
4975         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4976         array be g_malloc'd and properly document this public API function.
4977
4978 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4979
4980         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4981         remove METHOD_HEADER_TINY_FORMAT1.
4982
4983         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4984
4985         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4986
4987         Both spec and MS uses only 2 bits to enumerate the kind of header.
4988         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4989         is superfluous, only used for tiny headers with odd code lengths.
4990
4991         This change also make sure that mono doesn't wronly interpret bit 2
4992         of fat header flags, which is currently reserved.
4993
4994 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4995
4996         * metadata.c (do_mono_metadata_parse_type): Do error
4997         checking for element types. Don't abort if presented
4998         with a broken type kind.
4999
5000 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5001
5002         * metadata.c (mono_metadata_parse_method_signature_full):
5003         Gracefully fail bad vararg signatures.
5004
5005 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5006
5007         * profiler.c:
5008         * class.c: Fix warnings for uninitialized variables.
5009
5010 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5011
5012         * icall.c: Fix _NSGetEnviron method declaration warning.
5013
5014 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5015
5016         * icall.c:
5017         * reflection.c: Make bitwise checks explicit.
5018
5019 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5020
5021         * debug-helpers.c:
5022         * marshal.c: Fix printf warnings.
5023
5024 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * reflection.c (encode_cattr_value): Fix a warning.
5027
5028 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5029
5030         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
5031         of array bounds.
5032
5033 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5034
5035         * loader.c (mono_method_signature): Don't assert on broken
5036         signature. Print a more useful error message.
5037
5038 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5039
5040         * loader.c (mono_method_get_marshal_info): Assert if
5041         signature is invalid. Bounds check stores to the
5042         mspecs array;
5043
5044 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5045
5046         * loader.c (field_from_memberref): Fix warning.
5047
5048 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5049
5050         * loader.c (mono_method_get_param_names): Check if signature
5051         is null. Don't store beyond the size of the name array.
5052
5053 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5054
5055         * loader.c (mono_get_method_constrained): Check if signature
5056         is null.
5057
5058 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5059
5060         * loader.c (mono_loader_set_error_bad_image): Improve
5061         error messages.
5062
5063 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5064
5065         * loader.c (mono_get_method_full): Convert an assertion
5066         into a loader error.
5067
5068 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5069
5070         * class-internals.h, class.c: Better naming and documentation.
5071
5072 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
5073
5074         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
5075         obj is NULL.
5076
5077 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5078
5079         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
5080         parsing fails.
5081
5082 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * loader.c (mono_loader_error_prepare_exception): Handle missing field
5085         errors with no class set.
5086
5087         * loader.c (field_from_memberref): If the field signature is of the wrong
5088         type fail with a MissingFieldException instead of a BadImageException as
5089         this is the behavior observed on MS. 
5090
5091 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5092
5093         * loader.c (field_from_memberref): Don't crash if either the field
5094         signature or the typespec class are invalid.
5095
5096 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5097
5098         * verify.c (verifier_load_field): Don't allow field related
5099         ops to reference fields on generic type definition.
5100
5101 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5102
5103         * metadata-verify.c: Add new warning level for errors specified
5104         by ECMA 335 but that MS ignores.
5105
5106         * metadata-verify.c (verify_method_table): Make compiler controled
5107         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
5108         this check is safe because the end result will only be some visibility
5109         exceptions been thrown.
5110
5111 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5112
5113         * verify.c (get_boxable_mono_type): Don't allow the
5114         use of the generic type definition on boxed type positions.
5115
5116         Fixes #531237.
5117
5118 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5119
5120         * threadpool.c: Make sure no cross-domain references remain in
5121         ares_htable or the arrays that are thrown away when resizing.
5122
5123 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5124
5125         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
5126         list of classes for which we have to unregister reflection_info
5127         with the GC and which are not in the namespace cache.
5128
5129         * reflection.c (mono_reflection_initialize_generic_parameter): Add
5130         the class to the list.
5131
5132 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5133
5134         * domain.c (mono_domain_free): Unregister the GC roots in
5135         MonoDomain.
5136
5137 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5138
5139         * reflection.c (mono_reflection_type_get_handle): Fix typo.
5140
5141 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5142
5143         * class.c: Add mono_class_get_field_from_name_full which does
5144         the same as mono_class_get_field_from_name but does check field
5145         signature as well.
5146
5147         * class-internals.h: Export mono_class_get_field_from_name_full as
5148         part of the internal API.
5149
5150         * loader.c (field_from_memberref): Search fields by name and signature
5151         as it's valid to have two fields with same name but different types.
5152
5153         Fixes #528055.
5154
5155 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
5156
5157         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
5158
5159         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
5160
5161         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
5162         System.Type.
5163
5164 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
5165
5166         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
5167
5168         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
5169
5170 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5171
5172         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
5173         to sgen-scan-object.h, which can be included and parameterized via
5174         macros.
5175
5176         * Makefile.am: sgen-scan-object.h added.
5177
5178 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5179
5180         * gc.c: #define GC_dont_gc if we're compiling with SGen.
5181
5182 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5183
5184         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
5185         before clearing a domain in the GC.
5186
5187 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5188
5189         * exception.c (mono_exception_from_name_domain): Actually create
5190         the exception in the specified domain.
5191
5192         * appdomain.c (mono_domain_create_appdomain_internal): Create the
5193         OutOfMemoryException a bit later so that the domain is inialized
5194         "enough" that it works.
5195
5196 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5197
5198         * threads.c (thread_cleanup): Clean up the cached_culture_info
5199         array to prevent cross-domain references.
5200
5201 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
5202
5203         * metadata.c: more documentation for MonoType accessors.
5204
5205 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
5206
5207         Fix incorrect size definitions where the tail array isn't a list
5208         of pointers
5209         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
5210         define size.
5211         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
5212         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
5213         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
5214
5215 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5216
5217         * reflection.h:
5218         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
5219
5220 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5221
5222         * metadata.c:
5223         * loader.c:
5224         * metadata-internals.h:
5225         * method-builder.c:
5226         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
5227
5228 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5229
5230         * cominterop.c:
5231         * metadata.c:
5232         * metadata.h:
5233         * loader.c:
5234         * marshal.c:
5235         * reflection.c: #define for sizeof in MonoType and
5236         MonoMethodSignature.
5237
5238 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5239
5240         * domain.c:
5241         * domain-internals.h: add and use #define's instead of sizeof()
5242         for MonoJitInfo and MonoJitInfoTable.
5243
5244 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5245
5246         * object.c:
5247         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5248
5249 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5250
5251         * metadata.c:
5252         * metadata.h:
5253         * object.c:
5254         * class-internals.h:
5255         * generic-sharing.c:
5256         * marshal.c: use a #define instead of sizeof() for a few
5257         structures that use a zero-length array.
5258
5259 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5260
5261         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5262         to handle inflated generic methods.
5263
5264         * appdomain.c: Bump corlib version.
5265
5266         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5267         instances.
5268
5269         * reflection.c (fixup_method): Same
5270
5271         * reflection.c (resolve_object): Same.
5272
5273         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5274         g_error and a decent message.
5275
5276 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5277
5278         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5279         from the object because it could not yet be available globally
5280         (it happens if the profiler tries to create a gchandle on the
5281         MonoThread object of a thread that is still registering itself
5282         with the runtime).
5283
5284 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5285
5286         * reflection.c (mono_generic_class_get_object): Initialized the
5287         managed type arguments array.
5288
5289         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5290
5291         * appdomain.c: Bump corlib version.
5292
5293 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5294
5295         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5296         #527902.
5297
5298 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5299
5300         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5301         Avoid a crash if synch_cs is not set.
5302         
5303         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5304         Handle the case when the handle is 0.
5305
5306         * appdomain.c: Bump corlib version.
5307
5308 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * reflection.c (mono_type_get_object): Fix a warning.
5311
5312 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5313
5314         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5315         descriptor here.  We assume it's already been computed.
5316
5317         * generic-sharing.c (instantiate_other_info): Compute the GC
5318         descriptor for info type MONO_RGCTX_INFO_KLASS.
5319
5320 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5321
5322         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5323         type, so don't use MONO_OBJECT_SETREF to set a field.
5324
5325 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5326
5327         * gc.c: We were missing one case where invoking a finalizer would
5328         not reset the domain.  Also, in the finalizer thread loop, assert
5329         that we're in the root domain.
5330
5331 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5332
5333         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5334         if the type is not an array.
5335
5336 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5337
5338         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5339         method bound to the declaring type of the method. Raise an exception
5340         if the type is not a generic param.
5341
5342 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5343
5344         * class.c (print_unimplemented_interface_method_info): Print the
5345         full type name.
5346
5347         * class.c (mono_class_setup_vtable_general): When dealing with a
5348         generic instance first check if the generic type definition is
5349         not broken.
5350
5351 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5352
5353         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5354
5355         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5356
5357         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5358
5359         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5360
5361         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5362
5363         Code is contributed under MIT/X11 license
5364
5365 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5366
5367         * verify.c: Fix naming of stelem and ldelem.
5368
5369 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5370
5371         * generic-sharing.c: Replace the templates lock with the loader
5372         lock because of very hard to resolve deadlock issues.
5373
5374 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5375
5376         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5377         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5378         directly. Fixes #525338.
5379
5380         * class.c (mono_class_get_vtable_size): New helper function.
5381
5382         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5383         the field belongs to the type. Fixes #525733.
5384
5385 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5386
5387         * sgen-gc.c: When we stop a thread and its stack top is not within
5388         its allocated stack (because it's in an altstack signal handler),
5389         restart it and stop it again, until it is.
5390
5391 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5392
5393         * sgen-gc.c: Take a thread's stack top and registers from the
5394         sigcontext in the suspend signal handler.
5395
5396         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5397         stuff to sgen-archdep.h.
5398
5399         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5400         caller, because have code in sgen-archdep.h to acquire that data.
5401
5402 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5403
5404         * profiler.c, profiler.h, profiler-private.h:
5405         Added support for keeping track of code chunks and buffers.
5406
5407 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5408
5409         * metadata-verify.c: Fix endianness problems on decoding functions.
5410         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5411
5412 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5413
5414         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5415         schema for vectors and one dimension SZARRAY.
5416
5417 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5418
5419         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5420         schema for vectors and one dimension SZARRAY.
5421
5422 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5423
5424         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5425         Interlocked.(Compare)Exchange with object arguments, which invoke
5426         write barriers.
5427
5428 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5429
5430         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5431         passed invalid arguments.   Fixes another crasher in the
5432         Silverlight test suite.
5433
5434         * class.c (mono_class_array_element_size): Return 0 for the size
5435         of the class;  This fixes the crasher exposed by :
5436
5437         typeof (void).MakeArrayType ();
5438
5439         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5440         if there is no method to dereference.    Put all the code that
5441         depends on this inside the if (method) block.
5442
5443         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5444         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5445
5446         With this change, we pass the test.
5447         
5448         * reflection.c (mono_reflection_sighelper_get_signature_local):
5449         Only dereference the assembly if it has been set.    Fixes a
5450         crasher exposed by #525328
5451
5452 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5453
5454         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5455         don't perform the store in mono_gc_wbarrier_generic_nostore().
5456         Remove the second argument (value), which is not needed.
5457
5458 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5461         the build.
5462
5463         * boehm-gc.c: Ditto.
5464         
5465 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5466
5467         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5468         not perform the store itself.  Introduce
5469         mono_gc_wbarrier_generic_nostore(), which is the same as
5470         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5471         store.
5472
5473 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5474
5475         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5476         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5477         we still need the memcpy().
5478
5479 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5480
5481         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5482         so that big arrays are handled correctly.  Always use
5483         safe_object_get_size() to calculate array object sizes, which
5484         takes bounds into account.
5485
5486 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5487
5488         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5489         GC descriptor is computed before we use it.
5490
5491 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5492
5493         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5494         write barrier if necessary.
5495
5496 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5497
5498         * icall-def.h, icall.c, thread-types.h: New separate icall for
5499         VolatileWrite(object&,object) that uses a write barrier.
5500
5501         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5502         barriers in icalls which write to "ref" or "out" arguments.
5503
5504 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5505
5506         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5507         handler in a separate icall, to reduce the size of the wrappers.
5508
5509 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5510
5511         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5512
5513 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5514
5515         * metadata-verify.c (parse_field): Allow byref field.
5516
5517         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5518
5519         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5520
5521 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5522
5523         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5524         Fixes #522784.
5525
5526 2009-07-20  Robert Jordan  <robertj@gmx.net>
5527
5528         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5529         Fix invalid IL in valuetype handling (STOBJ must push the
5530         corresponding class). Fixes bug #523149.
5531
5532         Code is contributed under MIT/X11 license.
5533
5534 2009-07-20  Geoff Norton  <gnorton@novell.com>
5535
5536         * gc.c: Use proper semaphores where available on posix and darwin.
5537
5538 2009-07-19  Geoff Norton  <gnorton@novell.com>
5539
5540         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5541
5542 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5543
5544         * refletion.c (is_sre_usertype): Change name to is_usertype and
5545         invert it's result so it returns true if the type is an user type
5546         and not the opposite.
5547
5548         * reflection.c (is_*_type): Change all of those to use new macro
5549         check_corlib_type_cached that cached the type lookup so we don't
5550         need to do string comparisons all the type. Changed the signature
5551         to take a MonoClass instead.
5552
5553         * reflection.c: Change mono_image_create_token and resolve_object
5554         to use is_sre_* functions.
5555
5556 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5557
5558         * sgen-gc.c: Check for writes to the stack in the managed
5559         wbarrier as well.
5560
5561 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5562
5563         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5564         but put them on a list which is processed with the other thread's
5565         remsets.
5566
5567 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5568
5569         * sgen-gc.c: Fix and enable the internal allocator instead of
5570         using malloc/free (which causes deadlocks).
5571
5572 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5573
5574         * refletion.c: Fix builds with SRE disabled by adding a minimal
5575         implementation of mono_reflection_type_get_handle.
5576
5577 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5578
5579         * refletion.c: Make mono_reflection_type_get_handle non static.
5580
5581         * object-internals.h: Export mono_reflection_type_get_handle.
5582
5583         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5584         unmanaged handle using mono_reflection_type_get_handle.
5585
5586 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5587
5588         * refletion.c: Replace all reads of MonoReflectionType::type with
5589         calls to mono_reflection_type_get_handle. Only the functions that
5590         deal with constructing TypeBuilder::type have not been changed
5591         because they have to deal with NULL values.
5592
5593         This is a first step into supporting reflection types that don't
5594         map directly into their unmanaged counterpart.
5595
5596 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5597
5598         * metadata-verify.c (parse_locals_signature): Don't complain
5599         on signature with zero locals since MS generates it and doesn't
5600         bother with.
5601
5602 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5603
5604         * reflection.c (mono_image_get_array_token): Resolve return
5605         type using mono_reflection_type_get_handle.
5606
5607         * reflection.c (mono_image_get_array_token): Resolve array method
5608         parent type using mono_reflection_type_get_handle.
5609
5610 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * reflection.c (mono_image_basic_init): Applied patch from
5613         <Dax@daxxfiles.net>. Set the public key token from the assembly
5614         builder. Fixes #518909.
5615
5616         * appdomain.c: Bump corlib version.
5617
5618 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5619
5620         * class.c (mono_class_needs_cctor_run): Make this return false if
5621         the class has no cctor.
5622
5623 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5624
5625         * sgen-gc.c: When the minor GC needs to allocate a new section,
5626         invoke the major GC afterwards.
5627
5628 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5629
5630         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5631           Applying the window_style field to the SHELLEXECUTEINFO struct.
5632
5633         Code is contributed under MIT/X11 license.
5634
5635 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5636
5637         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5638         locking earlier.  Fix it in the managed allocator by making sure
5639         that no thread is stopped there before the GC runs.  If we do stop
5640         a thread there, we restart it and let it run a but, until it stops
5641         somewhere else.
5642
5643         * gc-internal.h, gc.c: Function for getting the IP from a signal
5644         context via a function registered by mini.
5645
5646 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * object-internals.h (MonoIntPtr): New structure describing a boxed
5649         IntPtr.
5650
5651         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5652         returns. Fixes #519953.
5653
5654         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5655
5656 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5657
5658         * class-internals.h, generic-sharing.c: New RGCTX info type for
5659         getting a remoting invoke with check wrapper.
5660
5661 2009-07-07  Geoff Norton  <gnorton@novell.com>
5662
5663         * icall-def.h: Fix the enable-minimal build.
5664
5665 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5666
5667         * object-internals.h: Add MonoReflectionDerivedType.
5668
5669         * reflection.c: Implement support for PointerType.
5670         Fixed tons of warnings.
5671
5672 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5673
5674         * object-internals.h: Add MonoReflectionByRefType.
5675
5676         * reflection.c: Implement support for ByRefType.
5677
5678 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5679
5680         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5681
5682         * object-internals.h: Add MonoReflectionArrayType and
5683         mono_reflection_create_unmanaged_type.
5684
5685         * reflection.c: Implement support for ArrayType.
5686
5687 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5688
5689         * metadata-verify.c (is_valid_method_header): Parse EH block
5690         flags correctly.
5691
5692 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5693
5694         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5695         processing the disappearing links, and process disappearing links
5696         in a loop until no new objects are copied.
5697
5698 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5699
5700         * object.c (handle_enum): Invoke the write barrier when copying
5701         value type instances.
5702
5703         * sgen-gc.c: Register remsets for unmanaged write barriers only
5704         when the address written to is actually on the heap.  This makes
5705         set_value() in object.c work without requiring that the result be
5706         on the heap.
5707
5708 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5709
5710         The runtime wrappers are all bound to a given type that must
5711         exist in the same image. For regular images we use the <Module>
5712         type, which is required to exist for all images.
5713
5714         The <Module> type can't be used for dynamic images because it
5715         might not exist at the time the wrapper is required, so we create
5716         a synthetic type to use instead.
5717
5718         The current code works because of the 2 stage setup of MonoClass,
5719         but once this is gone it will no longer work.
5720
5721         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5722
5723         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5724
5725         * object-internals.h: Export mono_image_set_wrappers_type icall
5726         as part of the internal API.
5727
5728         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5729         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5730
5731         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5732         image wrappers_type to the provided value.
5733
5734 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5735
5736         * appdomain.c (deregister_reflection_info_roots): No need
5737         to use the image lock here.
5738
5739 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5740
5741         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5742
5743 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * threads.c: Store the thread start argument in a hash table instead of
5746         registering it as a root, as libgc doesn't support unregistering roots
5747         under windows, leading to 'too many root sets' errors when many threads
5748         are created.
5749
5750         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5751         shutdown, they can still be referenced by the other dying objects.
5752         Fixes #514506.
5753
5754 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5755
5756         * socket-io.c: DontLinger does not allow LingerOptions.
5757
5758 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5759
5760         * metadata-verify.c: The spec doesn't mention that it's possible to add
5761         custom attribute to a generic parameter. Fixed.
5762
5763 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * class.c (inflate_generic_type): Don't crash while trying to output a message
5766         on why we're aborting.
5767
5768 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5769
5770         * socket-io.c: DontLinger can take an int or a boolean too.
5771
5772 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5773
5774         * gc.c: check for a null argument to SuppressFinalize () and
5775         ReRegisterForFinalize ().
5776
5777 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5778
5779         * loader.c (method_from_methodspec): Call into the verifier to check
5780         the signature.
5781
5782         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5783
5784         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5785         part of the internal API.
5786
5787 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5788
5789         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5790         the signature.
5791
5792         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5793
5794         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5795         part of the internal API.
5796
5797 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5798
5799         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5800         the signature.
5801
5802         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5803         blob verification.
5804
5805         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5806         part of the internal API.
5807
5808 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5809
5810         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5811         when doing basic verification. 
5812
5813         This check must be done since the runtime peeks into signatures in much
5814         more places than it does decoding so it makes sense to ensure that all
5815         pointers to blob objects are well formed.
5816
5817 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5820         Use proper overflow dectection. Fix usage of it.
5821
5822 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5823
5824         * loader.c (field_from_memberref): Call into the verifier to check
5825         the signature.
5826
5827         * loader.c (mono_method_get_signature_full): Same.
5828
5829         * loader.c (method_from_memberref): Same.
5830
5831         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5832
5833         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5834         part of the internal API.
5835
5836 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5837
5838         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5839         or unloaded, still return an AsyncResult, but don't add it to the
5840         threadpool.
5841
5842 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5843
5844         * threads.c: fix missing colon when DEBUG is defined.
5845
5846 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5847
5848         * threadpool.c: Don't add new calls to a threadpool if the domain
5849         of the call is unloading or unloaded.  When dequeuing a job, null
5850         the reference in the queue.
5851
5852 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5853
5854         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5855         generation if an object was moved.
5856
5857 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5858
5859         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5860           parameters of type SAFEARRAY[VARIANT].
5861
5862         * reflection.c (encode_marshal_blob): Properly generate element type
5863           (SafeArraySubType marshal attribute option).
5864
5865         Code is contributed under MIT/X11 license.
5866
5867 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5868
5869         * reflection.c: in mono_method_clear_object () really ensure all the
5870         objects are removed.
5871
5872 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5873
5874         * loader.c (mono_method_signature): Call into the verifier to check
5875         the method signature.
5876
5877         * metadata-verify.c (verify_method_table): Move signature verification
5878         to verify_method_table_full.
5879
5880         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5881
5882         * verify-internals.h: Export mono_verifier_verify_method_signature as
5883         part of the internal API.
5884
5885 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5886
5887         * loader.c (mono_method_get_header): Call into the verifier to
5888         check the method header.
5889
5890         * metadata-verify.c: Add mono_verifier_verify_method_header.
5891
5892         * verify-internals.h: Export mono_verifier_verify_method_header as
5893         part of the internal API.
5894
5895 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5896
5897         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5898         check the field signature. Replace an assert with an explicit check.
5899
5900         * class.c (mono_class_setup_fields): Call into the verifier to check
5901         the field signature.
5902
5903         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5904
5905         * verify-internals.h: Export mono_verifier_verify_field_signature as
5906         part of the internal API.
5907
5908 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5909
5910         * class.c (mono_class_find_enum_basetype): Simplify this function
5911         by moving code outside of the loop and not decoding static fields.
5912
5913 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5914
5915         * metadata-verify.c (verify_typedef_table): Check the extends
5916         token here. Move to here a flags check from verify_typedef_table_full.
5917
5918 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5919
5920         * metadata-verify.c (is_valid_method_header): Fix a warning.
5921
5922         * metadata-internals.h (MonoImage): Remove the unused 
5923         static_rgctx_invoke_wrapper_cache.
5924
5925         * image.c marshal.c: Ditto.
5926
5927 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5928
5929         * image.c (do_mono_image_load): Enable table data verification.
5930
5931 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5932
5933         * metadata-verify.c (is_valid_constant): Fix nullref check.
5934
5935 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5936
5937         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5938
5939 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5940
5941         * sgen-gc.c: Managed allocation with pthreads TLS.
5942
5943         * threads.c, threads-types.h: Functions for the JIT to tell the
5944         runtime whether it supports the MONO_TLS opcode.
5945
5946 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5947
5948         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5949         without methods.
5950
5951 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5952
5953         * metadata-verify.c (is_valid_constant): Fix the string length check.
5954         Use safe overflow checking. Add decent error messages.
5955
5956 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5957
5958         * metadata-verify.c: Move remaininh blob checks to the offline
5959         verification path.
5960
5961 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5962
5963         * metadata-verify.c: Move more blob checks to the offline verification
5964         path.
5965
5966 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5967
5968         * object-internals.h : Adding interrupt_on_stop field.
5969
5970         * threads.c (mono_thread_request_interruption) : On Windows exit the
5971           thread if interrupt_on_stop is set.
5972
5973         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5974          Removing old interrupt logic and setting the interrupt_on_stop for the
5975          thread when calling accept.
5976
5977         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5978          setting the interrupt_on_stop for the thread when calling accept.
5979
5980         Contributed under MIT/X11 license.
5981
5982 2009-06-20  Martin Baulig  <martin@ximian.com>
5983
5984         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5985
5986 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5987
5988         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5989         running in no-exec mode.
5990
5991 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * metadata-verify.c (verify_method_table): Move header
5994         checking to verify_method_table_full.
5995
5996         * metata-verify.c (mono_verifier_verify_full_table_data):
5997         Call verify_method_table_full.
5998
5999 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6000
6001         * metadata-verify.c (verify_field_table): Move signature
6002         checking to verify_field_table_full.
6003
6004         * metata-verify.c (mono_verifier_verify_full_table_data):
6005         Call verify_field_table_full.
6006
6007 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6008
6009         * metadata-verify.c (verify_typedef_table): Move remaining
6010         stuff to verify_typedef_table_full.
6011
6012 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6013
6014         * metadata-verify.c: Kill is_corlib from VerifyContext.
6015         It is only used by the offline mode.
6016         So we better remove it from the runtime path.
6017
6018 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6019
6020         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
6021         function that perform the offline metadata verification steps.
6022
6023         * metadata-verify.c (verify_typedef_table): Move some checks to
6024         verify_typedef_table_full and make it been called by new function
6025         mono_verifier_verify_full_table_data.
6026
6027         * pedump.c: Call mono_verifier_verify_full_table_data.
6028
6029         * verify-internals.h: Export mono_verifier_verify_full_table_data as
6030         part of the internal API.
6031
6032 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6033
6034         * metadata-verify.c (typedef_is_system_object): Fix System.Object
6035         check.
6036
6037         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
6038         flags bits. SupportLastError was confused as bit 7 instead of 6.
6039
6040         * metadata-verify.c (verify_implmap_table): Fix import scope verification
6041         to check against the module ref table instead of module.
6042
6043         * metadata-verify.c (verify_implmap_table): Fix corlib check.
6044
6045         * pedump.c: Call mono_image_load_names.
6046
6047 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6048
6049         * image.c: Extract mono_image_load_names from do_mono_image_load.
6050
6051         * metadata-internals.h: Export mono_image_load_names as part of
6052         the internal API.
6053         
6054 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * metadata.c (mono_metadata_cleanup): Free the generic method cache
6057         first, as it could reference data in the other caches.
6058
6059 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6060
6061         * metadata-verify.c: Finished with method header verification.
6062
6063 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6064
6065         * metadata-verify.c: Added more header verification code.
6066         Now only EH clauses are missing.
6067
6068 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
6069
6070         * marshal.c (get_runtime_invoke_type): Don't share primitive types
6071         for return values.
6072
6073 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6074
6075         * metadata-verify.c: Initial method header verification.
6076
6077 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6078
6079         * metadata-verify.c (verify_import_table): The IAT contents
6080         might end been patched by the windows DL when running with
6081         coree enabled.
6082
6083 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
6084
6085         * class.c (mono_class_from_typeref): If the enclosing type is not
6086         found return null instead of crashing. Fixes #508487.
6087
6088 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
6089
6090         * normalization-tables.h : updated to the latest unicode charcter
6091           data.
6092         * appdomain.c : bump corlib version.
6093
6094 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
6095
6096         * class.c (mono_class_from_name): Fix support for assembly references
6097         in the EXPORTEDTYPE table. Fixes #511704.
6098
6099 2009-06-13  Geoff Norton  <gnorton@novell.com>
6100
6101         * domain.c: Ensure that mono_domain_assembly_open actually opens the
6102         assembly in the target domain.
6103
6104 2009-06-12  Robert Jordan  <robertj@gmx.net>
6105
6106         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
6107         because "this" of the managed signature has become an
6108         ordinary parameter in the unmanaged signature.
6109
6110 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
6111
6112         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
6113         field for owner-less generic containers.
6114
6115         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
6116         image field of the owner-less generic containers created here.
6117
6118         * metadata.c (mono_metadata_load_generic_params): Ditto, the
6119         contain is ownerless until the caller sets its owner.
6120
6121         * metadata.c (type_in_image): Handle owner-less generic containers
6122         correctly.
6123         
6124 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6125
6126         * image.c (mono_image_close): Support debug_assembly_unload for
6127         dynamic images too.
6128
6129 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
6130
6131         * class.c: Fix some typos in comments.
6132
6133 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
6136
6137         * threads.c (mono_thread_execute_interruption): Avoid creating the
6138         abort exception object while holding the synch_cs lock.
6139
6140 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6141
6142         * metadata-verify.c: Verify basic cattr content.
6143
6144 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
6145
6146         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
6147         nested types.
6148         
6149         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
6150         support for nested types. Fixes #511704.
6151
6152 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6153
6154         * metadata-verify.c: Verify methodspec signatures.
6155
6156 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6157
6158         * metadata-verify.c: Verify typespec signatures.
6159
6160 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * metadata.c (free_inflated_method): Call 
6163         mono_marshal_free_inflated_wrappers (), which was missed earlier.
6164
6165 2009-06-08  Miguel de Icaza  <miguel@novell.com>
6166
6167         * mono-config.c: Small change to report the PPC64/ILP32 model.
6168
6169 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6170
6171         * metadata-verify.c (parse_type): Check szarray.
6172
6173 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6174
6175         * metadata-verify.c (parse_type): Check fnptr.
6176
6177 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6178
6179         * metadata-verify.c (parse_type): Check generic instances.
6180
6181 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6182
6183         * metadata-verify.c (parse_type): Check array shape.
6184
6185 2009-06-05  Robert Jordan  <robertj@gmx.net>
6186
6187         * class.c (mono_class_create_from_typedef): Check only for
6188         mscorlib's System.Array.
6189
6190 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6191
6192         * metadata-verify.c (parse_type): Check pointer, class/valuetype
6193         and generic params. 
6194
6195         * metadata-verify.c (parse_field): Check the signature.
6196
6197 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * metadata-verify.c: Implement locals signature check.
6200
6201 2009-06-04  Marek Safar  <marek.safar@gmail.com>
6202
6203         * domain.c: Add .NET 4.0 Beta 1 version.
6204
6205 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
6206
6207         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
6208           For QueryInterface on CCWs consider the base class
6209           interfaces as well.
6210
6211         Code is contributed under MIT/X11 license.
6212
6213 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6214
6215         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
6216
6217         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
6218         used.
6219
6220         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6221         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
6222
6223         * generic-sharing.c (inflate_other_data): Ditto.
6224         
6225 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6226
6227         * metadata-verify.c: Implement property signature check.
6228
6229 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6230
6231         * sgen-gc.h: Register saving support for PPC.
6232
6233 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6234
6235         * sgen-gc.c: Fixed a pthread TLS screwup.
6236
6237 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6238
6239         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6240         supported.
6241
6242 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6243
6244         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6245         keyword is not supported.
6246
6247 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6248
6249         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6250         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6251         the inflated method is freed. Fixes #508389.
6252
6253         The code is contributed under the MIT/X11 license.
6254         
6255 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * marshal.c (get_wrapper_target_class): New helper function.
6258         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6259         the <Module> class of the image. Fixes #509049.
6260
6261 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6264         Check if the thread was interrupted and proccess it straight away.
6265         Makes abortion much more responsive.
6266
6267 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6268
6269         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6270         MonoThread::interruption_requested to match it's counterpart.
6271
6272         Fixes a hang in abort-stress-1 on a 2 core x86.
6273
6274         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6275         Fix warning.
6276
6277 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6278
6279         Change MonoImage::name_cache to be protected by the image lock
6280         instead of the loader lock.
6281
6282         * appdomain.c (deregister_reflection_info_roots): Protect access
6283         to name_cache.
6284
6285         * class.c (mono_image_init_name_cache): Change from the loader lock
6286         to the image lock. Check if the cache wasn't already created.
6287
6288         * class.c: Change from the loader to the image lock.
6289
6290         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6291         the code to hold the image lock while iterating over name_cache and
6292         not go into mono_array_new holding it.
6293
6294         * metadata-internals.h: Add a comment about this change.
6295
6296 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6297
6298         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6299         Under the 2.0 profile raise the loader error.
6300
6301         Fixes #508532.
6302
6303 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6304
6305         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6306         of ldind opcode for generic instances so we don't fail for direct wrappers.
6307         This only affect direct calls.
6308
6309 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6310
6311         * reflection.c (create_dynamic_mono_image): Fix warnings.
6312
6313         * generic-sharing.c (other_info_equal): Ditto.
6314         
6315 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6316
6317         * metadata-verify.c: Implement field signature check.
6318
6319 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * metadata-verify.c: Implement standalone signature check.
6322
6323 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * metadata-verify.c: Implement methodref signature check.
6326
6327 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6330         callbacks supplied by the runtime.
6331
6332         * object.c (mono_install_callbacks): New internal function to install
6333         the callbacks.
6334
6335         * object.c (mono_create_ftnptr): Move the implementation of this to
6336         mini/.
6337
6338         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6339
6340 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6341
6342         * metadata-verify.c (parse_return_type): Proper byref check.
6343         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6344         generic signatures and method params.
6345
6346 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6347
6348         * metadata-verify.c (decode_signature_header): Fix bounds check.
6349
6350         * metadata-verify.c (parse_custom_mods): Check custom mods.
6351
6352         * metadata-verify.c (parse_type): Do initial basic verification
6353         of valid values.
6354         
6355         * metadata-verify.c (is_valid_method_signature): Parse the generic
6356         param count.
6357
6358 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6359
6360         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6361         discarded based on their most specific definition so we set the method_slots
6362         array before checking if the method is acceptable or not.
6363
6364         Fixes #506757.
6365
6366 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6367
6368         * icall.c: Free the old array when resizing a mono_ptr_array.
6369
6370 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6371
6372         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6373         for the hashes whose keys are managed objects.
6374
6375 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6376
6377         * object-internals.h, threads.c: Set the execution context on
6378         thread start here, not in corlib.
6379
6380         * appdomain.c: Bump corlib version.
6381
6382 2009-05-27  Martin Baulig  <martin@ximian.com>
6383
6384         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6385         if `_mono_debug_using_mono_debugger' is set to make things work
6386         properly when embedding Mono.
6387
6388 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6389
6390         * class.c (mono_class_setup_fields): Don't mark simd types as having
6391         16 bytes alignment as the whole runtime doesn't support.
6392
6393 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * metadata-verify.c (safe_read): Use endian safe read macros.
6396
6397 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6400         it is read-only when using full aot.
6401
6402 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6403
6404         * metadata-verify.c (is_valid_method_signature): Verify parts
6405         of the return type. Provide an error message in case of failure.
6406
6407 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6408
6409         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6410
6411 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6412
6413         * metadata-verify.c: Include the size prefix in the bounds check.
6414
6415 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6416
6417         * icall.c: Remove warnings.
6418
6419         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6420         prevent auto-detection based on GCC defines.
6421
6422         Add PS3
6423
6424         * metadata-verify.c: Do not include signal.h
6425
6426         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6427         messages.  Not sure why the g_assert_not_reached is not enough to
6428         quiet the compiler.
6429         
6430
6431         * appdomain.c: Remove code that is not used when
6432         DISABLE_SHADOW_COPY is set.
6433
6434         * image.c: use g_getenv
6435
6436 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6437
6438         * reflection.c: Remove code that it not used with
6439         DISABLE_REFLECTION_EMIT is defined.
6440
6441 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6442
6443         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6444         invoke wrappers.
6445
6446 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6447
6448         * socket-io.c
6449         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6450         the ifdef here and instead put that on io-layer
6451
6452 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6453
6454         * metadata-verify.c: Verify the generic param constraint table.
6455
6456 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6457
6458         * metadata-verify.c (verify_generic_param_table): Fix
6459         thinko on the valid flags bits for generic params.
6460
6461 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * metadata-verify.c: Verify the methodspec table.
6464
6465 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6466
6467         * metadata-verify.c: Verify the generic param table.
6468
6469 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6470
6471         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6472
6473 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6474
6475         * sgen-gc.c: Use generation enum more consistently and use the
6476         correct generation in mono_gc_register_for_finalization().
6477
6478 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6479
6480         * metadata-verify.c: Verify the nested class table.
6481
6482 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6483
6484         * metadata-verify.c: Verify the manifest resource table.
6485
6486 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6487
6488         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6489
6490 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6493         wrappers, this is now done in the JIT.
6494         
6495         * class.c (mono_set_generic_sharing_supported): New internal function.
6496         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6497
6498 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6499
6500         * metadata-verify.c: Verify the exported type table.
6501
6502 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6503
6504         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6505
6506 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6507
6508         * metadata-verify.c: Verify the file table.
6509
6510 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6511
6512         * metadata-verify.c (verify_assembly_table): Fix an error message.
6513
6514         * metadata-verify.c: Verify the assemblyref table.
6515
6516 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6517
6518         * metadata-verify.c (verify_assembly_table): Fix the valid
6519         bits mask for flags.
6520
6521 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6524         generic methods as well.
6525
6526 2009-05-15  Geoff Norton  <gnorton@novell.com>
6527
6528         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6529         use-case and is significantly more performant than the wapi layer.
6530
6531 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6532
6533         * metadata-verify.c: Verify the assembly table.
6534
6535 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6536
6537         * metadata-verify.c: Fix rows limit check.
6538
6539 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * metadata-verify.c: Verify the fieldrva table.
6542
6543 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6544
6545         * sgen.c: Speed up weak links and finalizers by grouping them by
6546         generation.
6547
6548 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6549
6550         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6551         free the old GCHandle (only applies to SGen).
6552
6553 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6554
6555         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6556         mono_metadata_load_generic_params () for non-generic methods.
6557
6558 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6559
6560         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6561         New function for returning a monitor's weak link if it has one.
6562
6563         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6564         one) when clearing a domain.  These can still be around because
6565         the object might not have been collected.
6566
6567 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6568
6569         * gc.c: Fix a warning.
6570
6571 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6572
6573         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6574         prevous wait that resulted in a deadlock on Windows when initializing
6575         the runtime form DllMain. Also results in improved startup time.
6576         (finalizer_thread): Get rid of thread_started_event.
6577         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6578         resulting MonoThread.
6579
6580         Contributed under MIT/X11 license.
6581
6582 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6583
6584         * metadata-verify.c: Verify the implmap table.
6585         Don't require that #US and #Strings be present.
6586
6587 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6588
6589         * security-core-clr.c: Delegate checks are done at creation time,
6590         not a invocation time. Fix exception for Telerik Silverlight demo
6591
6592 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6593
6594         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6595         case for the Thread class.
6596
6597         * threads.c: Do clean-up of abort exception/state in
6598         thread_cleanup() instead of Thread.free_internal().  Also clean up
6599         current_appcontext.  The reason we have to do that is because
6600         those references might point into another domain and if that
6601         domain is unloaded before the thread is finalized, they point to
6602         invalid data.
6603
6604 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6605
6606         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6607         stub signatures.
6608         
6609         Contributed unter MIT/X11 license.
6610
6611 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6612
6613         * verify.c, metadata-verifier.c: Add support for disabling the
6614         verifier in some builds.
6615
6616         [ Sorry, my previous commit accidentally commited some work in
6617         progress ]
6618
6619 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6620
6621         * class.c (mono_class_setup_fields): Set class->field.first for
6622         generic instances.
6623
6624 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6625
6626         * metadata-verify.c: Verify the typespec table.
6627
6628 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6629
6630         * metadata-verify.c: Verify the module table.
6631
6632 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6633
6634         * metadata-verify.c: Verify the methodimpl table.
6635
6636 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6637
6638         * metadata-verify.c: Verify the property table.
6639
6640 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6641
6642         * debug-helpers.c (mono_method_desc_match): Add support for generic
6643         glob patterns.
6644
6645 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6646
6647         * metadata-verify.c: Verify the propertymap table.
6648
6649 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6650
6651         * metadata-verify.c: Verify the event table.
6652
6653         * metadata-verify.c (search_sorted_table): Fix offset
6654         calculation.
6655
6656 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6657
6658         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6659
6660 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6661
6662         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6663         because mono_delegate_free_ftnptr() needs it.
6664
6665 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6666
6667         * metadata-verify.c: Verify the eventmap table.
6668
6669 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6670
6671         * metadata-verify.c: Verify the standalonesig table.
6672
6673 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * metadata-verify.c: Verify the field layout table.
6676
6677 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6678
6679         * class.c (mono_type_get_name_recurse): Don't crash
6680         for ownerless generic params.
6681
6682         * debug-helpers.c (mono_type_get_desc): Correct the format
6683         for ownerless generic params.
6684
6685 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * metadata-verify.c: Verify the class layout table.
6688
6689 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * metadata-verify.c: Verify the decl security table.
6692
6693 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6694
6695         * domain.c (mono_domain_set_internal_with_options): Don't do
6696         anything if the old domain is the same as the old one.  Fixes
6697         #499326.
6698
6699 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6700
6701         * appdomain.c: Deregister the reflection_info roots when unloading
6702         a domain.
6703
6704         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6705         memory allocated by a domain and frees its disappearing links.
6706
6707         * boehm-gc.c, null-gc.c: Empty implementation of
6708         mono_gc_clear_domain().
6709
6710 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6711
6712         * appdomain.c (clear_cached_vtable): Free the static fields memory
6713         block.
6714
6715 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6716
6717         * gc.c: Set the correct domain when invoking finalizers.
6718
6719         * appdomain.c: Set the correct domain when creating threads.
6720
6721 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6722
6723         * sgen-gc.c: Fix skip size for vectors.
6724
6725 2009-05-03  Martin Baulig  <martin@ximian.com>
6726
6727         * mono-debug-debugger.c
6728         (mono_debugger_check_breakpoints): Check class init handlers even
6729         if we don't have any method load handers.
6730
6731 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6734         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6735
6736 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6737
6738         * metadata-verify.c: Verify the field marshal table.
6739
6740 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * metadata-verify.c: Verify the custom attribute table.
6743
6744 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6745
6746         * metadata-verify.c: Verify the constant table.
6747
6748 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6749
6750         * metadata-verify.c: Verify the memberef table.
6751
6752 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6753
6754         * metadata-verify.c (get_coded_index_token): Remove
6755         dead argument.
6756
6757 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6758
6759         * metadata-verify.c: Verify the interfaceimpl table.
6760
6761 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6762
6763         * verify.c: Improve error message.
6764
6765         * debug-helpers.c (mono_type_get_desc): Harden the code that
6766         deals with VAR and MVAR.
6767
6768 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6771         part of #498692.
6772
6773 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6774
6775         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6776         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6777
6778 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6779
6780         * security-core-clr.c: Avoid redundant checks for platform code, 
6781         e.g. check for method and for class (very common) and check
6782         for class and outer class (less common)...
6783
6784 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6785
6786         * reflection.c: Avoid returning random cattrs for synthetic methods.
6787         Fixes #498545.
6788
6789 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6790
6791         * assembly.c: assemblies in the GAC should never be shadow-copied.
6792
6793 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6794
6795         * domain.c, domain-internals.h: Disable
6796         track_resurrection_{objects,handles}_hash in MonoDomain if using
6797         SGen.
6798
6799 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6800
6801         * metadata-verify.c: Verify the param table.
6802
6803 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6804
6805         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6806         MethodList.
6807
6808         * metadata-verify.c (verify_method_table): Proper check the ParamList
6809         field.
6810
6811 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6812
6813         * metadata-verify.c (verify_method_table): Check for runtime
6814         implemented functions such as delegate .ctors. Remove spurious
6815         printf.
6816         
6817 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6818
6819         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6820
6821 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6822
6823         Don't allocate MonoGenericInfo for ownerless generic params.
6824         * class-internals.h (MonoGenericParam::info): Move field to ...
6825         (MonoGenericParamFull): ... this.  New struct.
6826         (MonoGenericContainer::type_params): Change type to
6827         MonoGenericParamFull.
6828         (MonoGenericParam, MonoGenericContainer): Update accessors.
6829         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6830         'info' field for ownerless generic param.
6831         (mono_metadata_load_generic_params): Update to changes.
6832         * reflection.c (mono_reflection_create_generic_class): Likewise.
6833         (reflection_methodbuilder_to_mono_method): Likewise.
6834         (mono_reflection_initialize_generic_parameter): Likewise.
6835
6836 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6837
6838         Don't use MonoGenericParamInfo for ownerless generic params.
6839         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6840         use ParamInfo class at all.
6841         (mono_class_from_generic_parameter): Use them.
6842         (make_generic_param_class): Fix a couple of instances where 'pinfo
6843         == NULL' wasn't handle.
6844
6845 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6846
6847         * class.c (make_generic_param_class): Carve out of ...
6848         (mono_class_from_generic_parameter): ... here.
6849
6850 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6851
6852         Simplify mono_class_from_generic_parameter
6853         * class-internals.h (MonoGenericParamInfo::token): New field.
6854         * metadata.c (mono_metadata_load_generic_params): Initialize it
6855         from metadata.
6856         * class.c (mono_class_from_generic_parameter): Use it instead of
6857         searching through metadata.
6858
6859 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6860
6861         * metadata-verify.c: Add verification of the method table.
6862
6863 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6864
6865         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6866         Delegate::Invoke optimization.
6867
6868 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6869
6870         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6871         string returned by get_shadow_assembly_location_base.
6872
6873         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6874         about caller's ownership.
6875
6876 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6879         reflection memory on domain unload.
6880
6881         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6882         reflection cleanup code do it.
6883
6884         * domain-internals.h: Add mono_reflection_cleanup_domain.
6885
6886         This fixes a memory leak for managed mirrors of reflection objects
6887         on domain unload. 
6888
6889 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6890
6891         * metadata-verify.c: Implement more verification of the field table.
6892
6893 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6894
6895         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6896         doesn't try to parse the input assembly, which can be broken.
6897
6898 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6899
6900         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6901         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6902         by using the lowest bit in the link to store whether the link is
6903         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6904
6905 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6906
6907         * Makefile.am: Split the console support in platform specific code
6908         and put together a framework for making this easy in the future so
6909         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6910
6911 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6912
6913         * pedump.c: Fix a warning.
6914
6915 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6916
6917         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6918         mono_class_from_mono_type to avoid bad interactions with the dual representation
6919         of the generic type definition.
6920
6921 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6922
6923         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6924         get the MonoClass for the call context type as it might be a generic
6925         instance.
6926
6927         Fixes #491483.
6928
6929 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6930
6931         * object-internals.h: The Thread object has no execution_context
6932         member anymore.
6933
6934         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6935         the execution context.
6936
6937         * appdomain.c: Bump corlib version.
6938
6939 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * verify.c (do_newobj): Improve error message.
6942
6943 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6946         is nested in the filter block.
6947
6948         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6949         block is not fully nested.
6950
6951         Fixes #495656.
6952
6953 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6954
6955         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6956         not MonoType to check for equality of valuetypes as the generic type
6957         definition allows for two different encodings: the generic type definition
6958         class or a generic instance over the GTD arguments.
6959
6960         Fixes #496175.
6961
6962 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6963
6964         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6965
6966         * verify.c (do_initobj): Improve error message.
6967
6968 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6969
6970         * metadata-verify.c: Enable pe verification as the issue with #496453
6971         is that the authenticode data directory have a different unspecified
6972         format. Ignore it for now.
6973
6974         * pedump.c: Run the metadata verifier together with the IL verifier.
6975
6976         Fixes ##496453.
6977
6978 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6979
6980         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6981
6982 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6983
6984         * class.c (can_access_type): Check visibility against
6985         the element type for pointers and arrays.
6986
6987         Fixes #496150.
6988
6989 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6990
6991         * metadata-verify.c: Fix cli and table verification to use information
6992         from the MonoImage. A lot of duplicated code got killed.
6993
6994 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6995
6996
6997         This patch starts to integrate the metadata verifier with the runtime code.
6998
6999         This patch causes major regression in functionality for the metadata verifier
7000         as cli and table verification are disabled since they require to be ported to
7001         use MonoImage information.
7002
7003         * image.c (do_mono_image_load): Split the code in this function
7004         into mono_image_load_pe_data and mono_image_load_cli_data.
7005         Add     care_about_pecoff parameter to not load pecoff data.
7006         Call into the metadata verifier for pecoff and cli verification.
7007
7008         * image.c (mono_image_open_raw): New function that doesn't perform
7009         any parsing of the image contents.
7010         
7011         The reason for the 3 new functions is to give pedump better control
7012         into the interaction with the verifier.
7013
7014         * metadata-internals.h: Add new functions from image.c as part of the
7015         internal mono API.
7016
7017         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
7018         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
7019         to make those functions work together with the runtime.
7020
7021         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
7022         true if the image needs to be verified.
7023
7024         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
7025
7026         * pedump.c: Use new metadata verifier API.
7027
7028 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
7029
7030         * object.c (mono_install_vtable_trampoline): Make this receive a
7031         trampoline creation function instead of trampoline, allowing the JIT
7032         to use a different trampoline for each vtable.
7033
7034 2009-04-18  Mark Probst  <mark.probst@gmail.com>
7035
7036         * object.c (mono_raise_exception): Don't reset the thread abort
7037         exception state here.
7038
7039 2009-04-18  Mark Probst  <mark.probst@gmail.com>
7040
7041         * icall-def.h: New icall for getting the thread abort exception
7042         state for a thread.
7043
7044         * object.c, thread.c, object-internals.h: A thread's abort
7045         exception state is now a GC handle.  To get the object it stands
7046         for, we must move it into the current app domain, if it's
7047         different than the one where it originated from.
7048
7049         * appdomain.c: Bump corlib version.
7050
7051         * domain.c, domain-internals.h: New function for setting the
7052         domain and migrate the thread abort exception or not.
7053
7054 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * metadata-verify.c: Add initial verification of the
7057         field table.
7058
7059 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7060
7061         * metadata-verify.c: Add a macro to conditionally enable
7062         dumping of verification information. Add  make_coded_token
7063         and search_sorted_table to enable search sorted tables
7064         by a given coded token.
7065
7066 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7067
7068         * metadata-verify.c: Add array mapping from table index
7069         to description offset. Add get_col_offset and get_col_size
7070         functions.
7071
7072 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7073
7074         * metadata-verify.c: Add remaining table descriptions offsets.
7075         Add remaining coded index descriptions.
7076
7077 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7078
7079         * metadata-verify.c: Fixed constant table description.
7080         Fixed calculation of HasCustomAttribute coded index size.
7081         Fixed calculation of size for many table indexes. 
7082
7083 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7084
7085         * pedump.c (dump_metadata): Dump table offset instead
7086         of useless pointer in memory.
7087
7088 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7089
7090         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
7091
7092 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7093
7094         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
7095         a missing of for interface types.
7096
7097 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7098
7099         * metadata-verify.c (verify_pe_optional_header): Add comment of why
7100         the code is commented.
7101
7102         * metadata-verify.c (verify_resources_table): Remove spurious printf
7103         and don't fail if there are unmanaged resources. Gmcs generates a useless
7104         one     for all assemblies - I bet it's some MS compatibility junk.
7105
7106 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * metadata-verify.c (verify_typedef_table): Verify the extends field.
7109
7110         * metadata-verify.c (mono_image_verify): Add a is_corlib.
7111
7112         * verify-internals.h: Same.
7113
7114         * pedump.c: Fix for mono_image_verify new signature.
7115
7116 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * metadata-verify.c (verify_typedef_table): Verify for some invalid
7119         flags combinations.
7120
7121 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7122
7123         * metadata-verify.c (verify_module_table): Ignore the generation field.
7124
7125 2009-04-15  Martin Baulig  <martin@ximian.com>
7126
7127         * debug-mono-symfile.c
7128         (mono_debug_symfile_lookup_location): Don't print a warning for
7129         unknown extended opcodes if they're within 0x40 and 0x7f.
7130
7131 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
7134         invoke signatures returning an enum. Fixes #494847.
7135
7136 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7137
7138         * metadata-verify.c: Initial code to verify the typedef table.
7139
7140 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7141
7142         * verify.c (mono_method_verify): Don't fail if an unconditional branch
7143         with non empty stack happens before the beginning of a try block.
7144
7145         Fixes #494812.
7146
7147 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7148
7149         * metadata-verify.c: Verify typename and typenamespace fields of
7150         the typeref table.
7151
7152 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7153
7154         * metadata-verify.c: Initial code to verify the typeref table.
7155
7156 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7157
7158         * verify.c (verify_delegate_compatibility): Fix error message.
7159
7160 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
7161
7162         * security-core-clr.c: Fix typo
7163
7164 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7165
7166         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
7167         a MonoGHashTable to keep its values alive.
7168         (emit_marshal_boolean): Fix a warning.
7169
7170 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7171
7172         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
7173         not have any interface configured for IPv4/IPv6.
7174
7175 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7176
7177         * assembly.c: fix typo in error message.
7178
7179 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
7182         allocating the location holding the this argument to prevent
7183         'too many root sets' errors.
7184
7185         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
7186         to mark fields as special static.
7187         (mono_field_static_get_value): Handle special static fields.
7188         (mono_field_static_set_value): Ditto.
7189
7190         * class-internals.h (struct _MonoClassField): Document this.
7191
7192 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7193
7194         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
7195           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
7196           case.  This will handle when managed code returns null to native code.
7197
7198         Code is contributed under MIT/X11 license.
7199
7200 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7201
7202         * object.c (build_imt_slots): Changing a free to a g_free to match
7203           the g_malloc0 in add_imt_builder_entry that allocated this memory.
7204
7205         Code is contributed under MIT/X11 license.
7206
7207 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7208
7209         * marshal.c (emit_marshal_boolean): Adding code to ensure that
7210           the correct TRUE value is passed through the marshaling layer.
7211
7212         Code is contributed under MIT/X11 license.
7213
7214 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
7217         correctly. Fixes #492330.
7218         
7219         * marshal.c: Fix the embedding of object pointers into JITted code in
7220         the native-to-managed wrappers by allocating some GC tracked memory, and
7221         embedding the address of that.
7222
7223 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
7226         pointers into the vtable.
7227
7228 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7229
7230         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7231
7232         * verify.c (verify_ldftn_delegate): Improve error message.
7233
7234 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7235
7236         * reflection.c (my_mono_class_from_mono_type): Remove.
7237
7238 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7239
7240         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7241         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7242         and constraints fields into ...
7243         (MonoGenericParamInfo): ... this.
7244         (mono_generic_param_info, mono_generic_container_get_param_info):
7245         New accessors.
7246         * class.c, debug-helpers.c, icall.c: Update to changes.
7247         * metadata.c, reflection.c, verify.c: Likewise.
7248
7249 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7250
7251         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7252
7253         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7254         
7255         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7256         booleans with sbytes.
7257
7258 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7259
7260         * class.c (can_access_instantiation): Verify accesibility of element types
7261         for arrays and pointers.
7262
7263         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7264
7265         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7266
7267         Fixes #493068.
7268
7269 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7270
7271         * verify.c (do_invoke_method): Improve error messages.
7272
7273 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7274
7275         * verify.c:  Fixing the MSVC build.
7276
7277         Code is contributed under MIT/X11 license.
7278
7279 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7280
7281         * security-core-clr.c: Simplify get_reflection_caller not to call
7282         mono_method_get_last_managed (another stack walk) and adjust the
7283         callers to handle a (should not happen) NULL return value.
7284
7285 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7286
7287         Add accessors to some MonoGenericParam fields
7288         * class-internals.h (mono_generic_param_owner): New accessor.
7289         (mono_generic_param_num): Likewise.
7290         (mono_type_get_generic_param_owner): New helper.
7291         (mono_type_get_generic_param_num): New helper.
7292         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7293
7294 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7295
7296         * class-internals.h (mono_generic_container_get_param): New wrapper.
7297         * class.c, icall.c, metadata.c, verify.c: Use it.
7298
7299 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7300
7301         Fix gtest-252.cs
7302         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7303         the standard case/loop.  In particular, don't complain about
7304         references to generic type definitions.
7305
7306 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7307
7308         * debug-helpers.c (dis_one): Decode string arguments.
7309
7310 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7311
7312         * pedump.c (dump_verify_info): Dump type name correctly.
7313
7314 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7315
7316         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7317         are larger than code size.
7318
7319         This can happen in valid code if the try/catch block is not followed by any instruction
7320         and do a backward branch on the leave instruction.
7321
7322         Fixes #492494.
7323
7324 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7325
7326         * security-core-clr.c: Fix typo while comparing second method names
7327         in can_avoid_corlib_reflection_delegate_optimization
7328
7329 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7330
7331         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7332
7333         Fixes #487738.
7334
7335 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7336
7337         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7338         a MVAR using a class context.
7339
7340         Fixes #490335.
7341
7342 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7345
7346         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7347
7348         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7349         functions supplied by the JIT for the SGEN GC.
7350
7351         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7352         
7353 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7354
7355         monitor.c (mono_monitor_try_enter_internal):
7356         Added calls to profile monitor contentions.
7357         Also duplicated a small piece of code (the "get the monitor" logic)
7358         from the fast path to the slow path, and changed the relevant goto
7359         statements, so that monitor acquisition events can be emitted from the
7360         slow path (this is by Paolo Molaro).
7361
7362 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7363
7364         * profiler.c, profiler.h, profiler-private.h:
7365         Added support for profiling monitor contentions.
7366
7367 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7368
7369         * metadata-verify.c: Verify the modules table.
7370
7371 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7372
7373         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7374         using the context of the method been verifier and not of the method been called.
7375
7376         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7377         safely inflate generic types. 
7378
7379 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7380
7381         * security-core-clr.c: Change the strategy for checking the 
7382         "reflection using delegates optimization" to avoid unneeded 
7383         attributes in multiple class libraries.
7384
7385 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7386
7387         * sgen-gc.c: Remove object element in the disappearing link struct
7388         by storing the object pointer in the link.
7389
7390 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7391
7392         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7393
7394 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7397
7398         * verify.c (mono_method_verify): Do proper bounds checking of exception
7399         clause ranges.
7400
7401 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7402
7403         * loader.c (mono_field_from_token): Don't crash if the field parent could
7404         not be decoded.
7405
7406 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7407
7408         * sgen-gc.c: Execute critical finalizers after ordinary
7409         finalizers.
7410
7411         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7412         mono_defaults.
7413
7414 2009-03-31 Jb Evain <jbevain@novell.com>
7415
7416         * verify.c (do_ldstr): don't check if a string is in the user strings
7417         heap if the current image is dynamic.
7418
7419 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7420
7421         * sgen-gc.c: Wait until the last finalizer has executed when
7422         returning from WaitForPendingFinalizers.
7423
7424 2009-03-31  Martin Baulig  <martin@ximian.com>
7425
7426         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7427         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7428         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7429         (mono_debugger_event_create_appdomain): New function.
7430         (mono_debugger_event_unload_appdomain): New function.
7431
7432         * appdomain.c (mono_domain_create_appdomain_internal): Call
7433         mono_debugger_event_create_appdomain().
7434
7435 2009-03-31  Martin Baulig  <martin@ximian.com>
7436
7437         * mono-debug-debugger.c
7438         (mono_debugger_register_class_init_callback): Also register the
7439         class init callback if the class is already initialized to make
7440         things work with shadow copied assemblies.
7441
7442 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7443
7444         * security-core-clr.c
7445         (mono_security_core_clr_ensure_reflection_access_field): Let 
7446         critical code access the field (just like we do for methods). Use
7447         check_field_access helper.
7448         (mono_security_core_clr_ensure_reflection_access_method): Use 
7449         check_field_access helper.
7450
7451 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7452
7453         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7454         call the run-finalize function directly.
7455
7456         * gc.c, gc-internal.h: Make run_finalize() non-static.
7457
7458 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7459
7460         * sgen-gc.c: Use a separate struct for disappearing links.
7461
7462 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7463
7464         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7465         * MaxIOVectorLength enabled, just ignore them.
7466         Fixes bug #349688.
7467
7468 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7469
7470         * metadata-verify.c: Fix eglib build.
7471
7472 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * threads-types.h: Fix the win32 build.
7475
7476 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7477
7478         * class.c: move coreclr inheritance/override checks to 
7479         security-core.clr.c
7480         * security-core.clr.c|h: add code from class.c with additional
7481         documentation. Fix override check when the method is not critical.
7482
7483 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7484
7485         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7486         (match_class): Ditto.
7487
7488 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7489
7490         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7491
7492         * metadata-verify.c: Implement table layout row size calculation. Verify
7493         the total size of the tables.
7494
7495 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7496
7497         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7498
7499 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7500
7501         * appdomain.c:
7502         * console-io.[ch]: added new mono_console_init() to make sure that
7503         file descriptors 0, 1 and 2 are opened.
7504         Bug #489019 fixed.
7505
7506 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7507
7508         * appdomain.h: Export a new callback type and a new function to
7509         set this callback. This allow a mono host to provide it's own
7510         definition for "platform code".
7511         * metadata-internals.h: Add a core_clr_platform_code flag on 
7512         _MonoImage to (cache and) know if it is representing platform 
7513         code.
7514         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7515         on platform code images.
7516         * security-core-clr.c|h 
7517         (mono_security_set_core_clr_platform_callback): Allow the host
7518         to provide it's own platform check definition.
7519         (mono_security_core_clr_determine_platform_image): Detect if an 
7520         image is platform code (using the specified callback).
7521         (mono_security_core_clr_is_platform_image): Return cached value 
7522         for platform code.
7523
7524 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7525
7526         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7527         which has different parameter types for the 'tid' argument in windows and
7528         the io-layer.
7529
7530         * appdomain.c attach.c threads.c: Use the new helper.
7531
7532 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7533
7534         * metadata-verify.c: Verify valid table bits.
7535
7536 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7537
7538         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7539
7540         * metadata-verify.c: Add initial table schema verification.
7541
7542 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7545         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7546         #488383.
7547
7548         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7549
7550         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7551
7552 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7553
7554         * security-core-clr.c: Add/update documentation
7555
7556 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7557
7558         * marshal.c (emit_marshal_object): Generate code to throw an exception
7559         instead of throwing it. Fixes #488670.
7560
7561 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7562
7563         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7564         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7565         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7566         and add a call to mono_security_core_clr_ensure_delegate_creation
7567         to do the extra checks required by CoreCLR.
7568         * security-core-clr.c|h: Add function to check delegate creation,
7569         both in the binding and accessibility, under CoreCLR.
7570
7571 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7572
7573         * reflection.c (mono_reflection_create_dynamic_method): when 
7574         coreclr is enabled make sure that every resolved object are
7575         checked (e.g. field and method access).
7576         * security-core-clr.c|h: Add function to check objects resolved
7577         when a dynamic method is created.
7578
7579 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7580
7581         * metadata-verify.c: Cache directory rva translations.
7582
7583         * metadata-verify.c: Add cli-header and streams verification.
7584
7585 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7588         the wrong offset (8 instead of 6).
7589
7590 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7591
7592         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7593         methods, return the native function address itself. Fixes
7594         #487758.
7595
7596 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7597
7598         * console-io.c: some of the values for control characters might not be
7599         present.
7600
7601 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7602
7603         * exception.c|h: Add helpers to create [Field|Method]AccessException
7604         * icall.c: Add required coreclr check calls for field reflection.
7605         Move the existing (method) check logic into security-core-clr.c
7606         * security-core-clr.c: Add functions to check if the access of a
7607         field or method is allowed when reflecting under coreclr. This is
7608         mostly done using a stack walk to find the "real" caller: i.e. the
7609         code that is calling the reflection
7610
7611 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7612
7613         * gc-internal.h: Change location of gc_wrapper.h
7614
7615 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7616
7617         * class.c: Simplification to coreclr checks for overrides that
7618         makes it easier to set breakpoints.
7619
7620 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7621
7622         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7623         mono_security_core_clr_method_level): Avoid potential 
7624         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7625         user/application code) and make it easier to set breakpoints
7626
7627 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7628
7629         * metadata-verify.c: Reject cli header tables that mono don't handle.
7630
7631 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7632
7633         * pedump.c: Fix CLI header dumping.
7634
7635 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7636
7637         * metadata-verify.c: More CLI header verification.
7638
7639 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7640
7641         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7642
7643 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7644
7645         * metadata-verify.c: Initial verification of the CLI header.
7646
7647 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7648
7649         * metadata-verify.c (verify_resources_table): Fix verification of zero
7650         sized resource section and id entries count.
7651
7652 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7653
7654         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7655
7656 2009-03-17  Jb Evain  <jbevain@novell.com>
7657
7658         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7659
7660 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7661
7662         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7663         (mono_gc_make_descr_for_array): Ditto.
7664
7665 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7666
7667         * verify.c (mono_verifier_is_class_full_trust): Add support for
7668         CoreCLR security mode where trusted assemblies are defined as
7669         "platform code".
7670
7671 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7672
7673         * metadata-verify.c: Add minimal PECOFF resource verification.
7674
7675 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7676
7677         * metadata-verify.c: Be less restrictive with some coff fields.
7678
7679 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7680
7681         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7682         params as boxed values on stack. Fixes #485706.
7683
7684 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7685
7686         * console-io.c: the termios values may vary in different flavors of unix.
7687
7688 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7689
7690         * console-io.[ch]: return the entire set of control characters when
7691         initializing the terminal.
7692         * appdomain.c: bump corlib version.
7693
7694 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7695
7696         * mono-perfcounters.c: added support for in-process custom
7697         performance counters.
7698
7699 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7700
7701         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7702
7703 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7704
7705         * metadata-verify.c: Verify the data pointed by the import table. 
7706
7707 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7708
7709         * metadata-verify.c (load_data_directories): Store data
7710         directory contents.
7711
7712         * metadata-verify.c: Verify the import table. 
7713
7714 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7715
7716         * metadata-verify.c: Verify data directories.
7717
7718 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7719
7720         * metadata-verify.c: Check section header flags.
7721
7722 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7723
7724         * appdomain.c: if the assembly name is a shadow-copied file, return
7725         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7726         in mono_make_shadow_copy.
7727         * icall.c: if the assembly name is a shadow-copied file, replace it
7728         with the original assembly path.
7729
7730         Bug #484244 fixed. NUnit tests for corlib can be run without
7731         --noshadow now.
7732
7733 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7736         entries when the table is reallocated.
7737
7738         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7739         mono_gc_alloc_fixed () since it contains GC refs.
7740
7741 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * reflection.c (ensure_complete_type): New helper function to call
7744         type resolve handlers for unfinished dynamic types.
7745         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7746
7747 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7748
7749         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7750         #483247.
7751
7752 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7753
7754         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7755
7756 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7757
7758         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7759         between GCHandles of type WeakTrackResurrection and the objects they
7760         point to.
7761
7762         * gc.c: Partly implement the sematics of GCHandles of type 
7763         WeakTrackResurrection: these handles should only be cleared after the
7764         finalizer of the object they are pointing to has ran.
7765
7766 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7767
7768         * icall.c: Partially revert r126631 because using the jump
7769         trampolines for generic shared methods makes it superfluous.
7770
7771 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7772
7773         * threads.c (handle_store): Create the 'threads' hash table with the proper
7774         MONO_HASH_VALUE_GC type.
7775
7776 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7777
7778         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7779         FIRST_GC_TRACKED.
7780
7781         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7782         and LAST_GC_TRACKED as a GC root.
7783
7784         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7785
7786         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7787         the static data even if it consists of 1 reference.
7788
7789         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7790         if there is a GC descriptor.
7791
7792         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7793         instead of through the GC since they contain no object references.
7794
7795 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7796
7797         * generic-sharing.c (instantiate_other_info): Always return a jump
7798         trampoline for method code.
7799
7800 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7801
7802         * culture-info-tables.h: generated to include the en-tt culture.
7803
7804 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7805
7806         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7807         capture the thread context.
7808
7809         * object.c (mono_async_result_new): Cache the invoke wrappers to
7810         ExecutionContext::Capture.
7811
7812 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7813
7814         * marshal.h: Add a prototype for what mono_compile_method returns
7815         for invoke wrappers.
7816
7817         * gc.c: Use the new prototype declaration.
7818
7819 2009-03-04  Geoff Norton  <gnorton@novell.com>
7820
7821         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7822         * gc-internal.h:
7823         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7824
7825 2009-03-04  Martin Baulig  <martin@ximian.com>
7826
7827         * mono-debug.h
7828         (mono_debugger_runtime_invoke): Removed.
7829
7830         * mono-debug-debugger.c
7831         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7832
7833 2009-03-02  Martin Baulig  <martin@ximian.com>
7834
7835         * mono-debug.h
7836         (mono_debugger_unhandled_exception): Removed.
7837         (mono_debugger_handle_exception): Removed.
7838         (mono_debugger_throw_exception): Removed.
7839
7840         * mono-debug.c
7841         (mono_debug_debugger_version): Bump to 5.
7842
7843         * mono-debug-debugger.c: Moved the exception handling code to
7844         ../mini/debug-mini.c
7845
7846 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7847
7848         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7849         finalize_objects_hash.
7850
7851         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7852         
7853         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7854         field.
7855
7856         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7857         cache.
7858
7859         * image.c (mono_image_close): Free it.
7860         
7861         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7862         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7863         on the this argument.
7864
7865         * gc.c (run_finalize): Optimize the calling of the finalizers.
7866
7867 2009-03-03  Martin Baulig  <martin@ximian.com>
7868
7869         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7870         of the `MonoGenericInst' changes.
7871
7872 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7873
7874         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7875         mono_array_class_get_cached to reduce locking contention. Extract
7876         a domain var.
7877
7878         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7879         intermediary managed arrays. Use caching version of mono_array_new
7880         to allocate the result array.
7881
7882         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7883
7884         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7885
7886         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7887         to reduce locking contention.
7888
7889 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7890                 
7891         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7892         thunk builder code for the non-interface case.
7893
7894 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * object.c (get_generic_virtual_entries): New helper function to collect
7897         the virtual generic method instances which need to be added to an IMT
7898         thunk.
7899         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7900         Instead of creating a new IMT thunk, reset the vtable slot to the
7901         trampoline, the thunk will be created the next time the trampoline is called.
7902         (build_imt_slots): Add support for virtual generic methods in interfaces by
7903         adding to the IMT thunk all the methods registered using 
7904         mono_method_add_generic_virtual_invocation ().
7905
7906         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7907         (struct _MonoIMTCheckItem): Ditto.
7908
7909         * object.c (mono_method_add_generic_virtual_invocation): Take a
7910         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7911         the IMT thunk to include all items.
7912         
7913         * object.c (mono_class_create_runtime_vtable): Add a missing
7914         mono_loader_unlock ().
7915
7916 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7917
7918         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7919
7920         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7921
7922 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7923
7924         * object-internals.h: Rename _MonoReflectionEvent to
7925         MonoReflectionMonoEvent so it reflects the right managed type.
7926         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7927
7928         * icall.c:
7929         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7930         type.
7931
7932 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7933
7934         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7935         intermediary managed arrays. Use caching version of mono_array_new
7936         to allocate the result array.
7937
7938 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * reflection.c: Use cached version of mono_array_new alongside
7941         the mono_reflection_get_custom_attrs_by_type call path.
7942
7943 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7944
7945         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7946         intermediary managed arrays. Use caching version of mono_array_new
7947         to allocate the result array.
7948
7949         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7950
7951 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7952
7953         * icall.c: Add small implementation of a growable stack bound array.
7954
7955         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7956
7957         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7958         intermediary managed arrays. Use caching version of mono_array_new
7959         to allocate the result array.
7960
7961 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7962
7963         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7964         helps Enum::CompareTo to be implemented without reboxing all enums
7965         to their underlying type.
7966 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7967
7968         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7969         since it acquires a global lock leading to scalability problems.
7970
7971         * profiler.c: Make the stat profiler work with multiple appdomains, this
7972         currently only works when no appdomains are unloaded.
7973
7974 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7975
7976         * appdomain.c: make the check to avoid copying when the assembly is
7977         already shadow copied actually work.
7978
7979 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7982
7983         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7984         changes to the managed side.
7985
7986 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7987
7988         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7989         classes + a separate lock for it, as it is used frequently at runtime, not
7990         just during metadata loading/JIT compilation.
7991
7992         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7993         for szarrays.
7994         
7995         * object-internals.h (mono_class_from_name_cached): New macro to cache
7996         the results of the lookup locally without having to declare a static
7997         variable to hold it.
7998         (mono_class_get_field_from_name_cached): Ditto.
7999         (mono_array_class_get_cached): Ditto.
8000
8001         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
8002         the new macros.
8003         
8004         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
8005         slower search in metadata.
8006
8007         * pedump.c: Fix a warning.
8008
8009 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
8010
8011         * reflection.c (encode_locals): Add checks for user types.
8012         (method_encode_clauses): Ditto.
8013         (method_encode_code): Ditto.
8014         (mono_image_create_token): Ditto.
8015
8016         * object-internals.h: Change the type of more fields from MonoReflectionType*
8017         to MonoObject*.
8018
8019 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
8020
8021         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
8022         the a thread does not suspend within 100ms.
8023
8024         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
8025         in addition to StopRequested as well.
8026
8027         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
8028
8029         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
8030         search the method_hash before inserting a new entry, to avoid crashes when
8031         the same method is inserted multiple times, causing the old 
8032         MonoDebugMethodInfo structure to be freed by the value dtor function.
8033
8034 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
8035
8036         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
8037         SO_EXLUSIVEADDRUSE where available.
8038
8039 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
8040
8041         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
8042         runtime invoke wrappers, this time it is string ctor wrappers, which
8043         pass a dummy string as 'this' instead of their obj argument. Fixes
8044         #478473.
8045
8046 2009-02-21  Jb Evain  <jbevain@novell.com>
8047
8048         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
8049         only get create_culture once.
8050
8051 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
8052
8053         * reflection.c (mono_reflection_setup_internal_class): Move the user type
8054         check before the locking.
8055         
8056         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
8057         (mono_reflection_create_runtime_class): Ditto.
8058         (mono_reflection_sighelper_get_signature_local): Ditto.
8059         (mono_reflection_sighelper_get_signature_field): Ditto.
8060
8061         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
8062         is a System.MonoType object or similar.
8063         (monotype_cast): New helper function to cast a MonoObject to a 
8064         MonoReflectionType object.
8065
8066         * object-internals.h: Change MonoReflectionType* members in structures to
8067         MonoObject* members to force the usage of the monotype_cast () function.
8068
8069         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
8070         structures/arrays. This causes us to assert instead of crashing when 
8071         instances of user defined subclasses of System.Type are encountered.
8072
8073 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8074
8075         * cil-coff.h:
8076         * icall-def.h:
8077         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
8078         win32 resource loaded from a PE file.
8079
8080         * image.c: fix mono_image_lookup_resource.
8081
8082 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8083
8084         * icall-def.h:
8085         * threads-types.h:
8086         * threads.c: added internal call for WaitHandle.SignalAndWait.
8087
8088 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
8089
8090         * cominterop.c : Adding cominterop_type_from_handle and 
8091           registering it as an icall.  Replacing all references
8092           to type_from_handle.
8093
8094         Code is contributed under MIT/X11 license.
8095
8096 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8097
8098         * Makefile.am: Add lock-tracer.h and lock-trace.c.
8099
8100         * appdomain.c: Call the tracer init function.
8101
8102         * domain-internals.h: Enable the tracer for the domain locks.
8103
8104         * image.c: Enable the tracer for image locks.
8105
8106         * loader.c: Enable the trace for the loader lock.
8107
8108         * lock-tracer.h:
8109         * lock-tracer.c: Initial implementation of the lock trace utility.
8110         The tracer requires a compile time define to be enabled and a env var
8111         to be enabled at runtime.
8112
8113 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8114
8115         * domain.c (mono_domain_code_foreach): Improve documentation.
8116
8117 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8118
8119         * appdomain.c:
8120         * generic-sharing.c:
8121         * object.c:
8122         * reflection.c:  Adjust locking order to the new semantics where the loader lock
8123         comes first.
8124
8125 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
8126
8127         * domain.c: Add mono_domain_code_* functions that perform locking
8128         around the domain codeman.
8129
8130         * domain-internals.h: Export those functions.
8131
8132         * object.c: Use new functions instead of acquiring the domain lock.
8133
8134 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
8135
8136         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
8137         delegate. Fixes #477396.
8138
8139 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8140
8141         * reflection.c (create_custom_attr): Get rid of alloca.
8142
8143 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
8144
8145         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
8146           Adding exception handling for all CCW calls.
8147
8148         Code is contributed under MIT/X11 license.
8149
8150 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8151
8152         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
8153
8154         * marshal.c (emit_marshal_boolean): Add null checks to the new 
8155         native->managed marshalling code. Fixes #476247.
8156
8157 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * class.c (mono_class_get_vtable_entry): Move the addition of
8160         static rgctx invoke wrappers for vtable methods here, this simplifies
8161         a lot of code and causes fewer rgctx wrappers to be created.
8162
8163         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
8164         name of the statistics to begin with an uppercase.
8165
8166 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8167
8168         * reflection.c: Revert previous change as it breaks the build.
8169         
8170 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8171
8172         * verify.c: Properly handle SZARRAY element type.
8173
8174         Fixes #474271.
8175
8176 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8177
8178         * reflection.c (mono_image_create_method_token): Correctly encode
8179         MethodDef MemberRefParent token.
8180
8181         Fixes #472845.
8182
8183 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * image.c (mono_image_close): Delete the critical section before
8186         freeing the memory holding it.
8187
8188 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8189
8190         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
8191         Fixes #476257.
8192
8193 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8194
8195         * pedump.c (main): Call mono_marshal_init so pedump
8196         doesn't crash.
8197
8198 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8199
8200         * loader.c (method_from_memberref): Properly fix #474271 and
8201         don't break the runtime bad.
8202
8203 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8204
8205         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
8206         (mono_domain_alloc0): Ditto.
8207
8208 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8209
8210         * loader.c (method_from_memberref): Don't abort if the array
8211         method is not found. A regular loader failure is more informative
8212         and correct.
8213
8214         Fixes #474271.
8215
8216 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8217
8218         *loader.c: Guard MonoImage::method_cache/methodref_cache
8219         using the image lock instead of the loader lock.
8220
8221         * metadata.h: Add comments about which fields are protected by
8222         the image lock.
8223
8224 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
8227
8228         * generic-sharing.c (mono_method_construct_object_context): Remove the
8229         wrapper_type == NONE assert, it is not needed.
8230
8231 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8232
8233         * reflection.c (clear_cached_object): New helper function.
8234         (mono_method_clear_object): New function to clear the cached reflection
8235         objects for a dynamic method.
8236
8237         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8238         Partly fixes # 463323.
8239         
8240 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8241
8242         * class.c:
8243         * loader.c:
8244         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8245
8246 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8247
8248         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8249         take the image lock instead of the loader lock.
8250
8251         * metadata-internals.h: Export new functions.
8252
8253 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8254
8255         * domain.c (app_config_parse): Remove another use of stat that is
8256         not necessary as g_file_get_contents already does the presence
8257         check. 
8258
8259 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8260
8261         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8262
8263         * marshal.c: Move the bstr handling code to cominterop.c.
8264
8265         * marshal.c: Remove some COM interop code missed previously.
8266
8267 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8268
8269         More Paolo patches from the Wii port:
8270         
8271         * security.c: Remove ves_icall_System_Environment_get_UserName
8272         from here.
8273
8274         * icall.c: And put ves_icall_System_Environment_get_UserName
8275         here. 
8276
8277         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8278         redundant call to stat that was only used to test for the file
8279         existence.   Patch from Paolo.
8280
8281         * gc.c (run_finalize): If COM is disabled, do not link in
8282         mono_marshal_free_ccw.
8283
8284         * generic-sharing.c: Use alloca.h here as well.
8285
8286 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8287
8288         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8289
8290 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8291
8292         * cominterop.c cominterop.h: New files.
8293
8294         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8295         function/typedefs which are needed by cominterop.c global.
8296
8297 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8298
8299         * generic-sharing.c: Don't take the loader lock to guard image
8300         mempool allocs.
8301
8302 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8303
8304         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8305         called without the loader lock which is required to guard MonoImage:tokens.
8306
8307 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8308
8309         * class.c:
8310         * metadata.c:
8311         * method-builder.c:
8312         * marshal.c:
8313         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8314
8315 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8318         Rework the code to use regular mono_image_alloc/0.
8319
8320         * loader.c: Rework the code to use regular mono_image_alloc/0.
8321
8322         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8323
8324 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8325
8326         * object-internals.h : Fixing a typo in the 
8327           MonoReflectionComVisibleAttribute struct.
8328
8329         * marshal.c (cominterop_com_visible): Check the implemented 
8330           interfaces for ComImport.
8331
8332         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8333           assume that bools should be treated as VARIANTBOOLs.
8334
8335         * marshal.c (emit_marshal_boolean): Adding cases for 
8336           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8337
8338         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8339           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8340
8341         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8342           should be treated as VARIANTBOOLs.    
8343
8344         Code is contributed under MIT/X11 license.
8345
8346 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8347
8348         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8349         allocation with the image lock.
8350
8351 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8352
8353         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8354         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8355
8356         * object.c: Add mono_string_to_utf8_image.
8357
8358         * object-internals.h: Export mono_string_to_utf8_image.
8359
8360         * reflection.c: Rework all explicit references to the the image mempool to go thought
8361         the mono_image_alloc set of functions.
8362
8363 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8364
8365         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8366         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8367         and generics-sharing.c.
8368
8369         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8370         as first argument. Note that this function remains broken as it doesn't perform locking around the
8371         mempool allocation.
8372
8373         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8374
8375         * image.c: Add g_slist_append_image.
8376
8377         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8378         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8379
8380         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8381         Fix all related code to do the same.
8382
8383         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8384
8385         * metadata-internals.h: Fix the signatures.
8386
8387 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8388
8389         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8390         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8391         and similar to work using MonoImage.
8392
8393         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8394         MonoMemPool.
8395
8396         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8397
8398         * class.c (mono_metadata_signature_deep_dup): Same.
8399
8400         * class.c (inflate_generic_type): Same.
8401
8402         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8403
8404         * metadata.c (mono_metadata_signature_dup_full): Same.
8405
8406         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8407         mono_metadata_signature_dup_full.
8408
8409         * metadata.c (mono_metadata_type_dup): Same.
8410
8411         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8412
8413         * reflection.c: Same.
8414
8415         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8416
8417         * metadata-internals.h: Fix the signatures.
8418
8419         * class-internals.h: Same.
8420
8421 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8422
8423         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8424         and use mono_image_alloc set of functions instead. 
8425
8426         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8427         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8428         of a MonoMemPool.
8429
8430         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8431
8432         * class.c (g_list_prepend_mempool): Removed.
8433
8434         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8435
8436         * image.c: Add g_list_prepend_image.
8437
8438         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8439
8440         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8441
8442
8443 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8444
8445         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8446         mono_image_unlock.
8447
8448         * image.c (mono_image_init): Init the lock field.
8449  
8450         * image.c (mono_image_init): Cleanup the lock field.
8451
8452         * image.c: Add mono_image_(un)lock functions.
8453
8454 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8455
8456         * class.c, class-internals.h: mono_method_get_context_general()
8457         combines the functionality of mono_method_get_context() and
8458         mini_method_get_context().
8459
8460         * generic-sharing.c, domain-internals.h:
8461         mono_method_construct_object_context() and
8462         mono_domain_lookup_shared_generic() moved from mini.
8463
8464         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8465         method doesn't have the correct instantiation because it's shared
8466         generic code.  Fixes #473999.
8467
8468 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8471
8472         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8473         
8474 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8475
8476         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8477
8478         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8479
8480         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8481         and recheck the cache for dups after it.
8482
8483         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8484
8485         Fixes one of the deadlocks found in #473150.
8486
8487 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8488
8489         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8490           For Win32, add additional break conditions for accept.
8491
8492         Code is contributed under MIT/X11 license.
8493
8494 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8497         lazily initialize the native wrapper cache.
8498         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8499         cache, since they are different from the normal wrappers.
8500
8501         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8502
8503         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8504         AOT compiled native wrappers.
8505
8506 2009-02-09  Geoff Norton  <gnorton@novell.com>
8507
8508         * appdomain.h:
8509         * security-core-clr.c: Allow enabling core-clr from the embedding
8510         API.
8511
8512 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8513
8514         * socket-io.c: when requesting all the local ips, if there are no
8515         interfaces up and running, MS returns 127.0.0.1.
8516
8517 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8518
8519         * mono-perfcounters-def.h: processor time is an inverse time.
8520         Fixes bug #468625.
8521
8522 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8523
8524         * socket-io.c: an empty host name returns the list of local IPs.
8525         Fixes bug #386637 part 1/2.
8526
8527 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8528
8529         * verify.c (mono_class_interface_implements_interface): Call
8530         mono_class_setup_interfaces ().
8531         (merge_stacks): Ditto.
8532
8533 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8534
8535         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8536         klass->interfaces.
8537         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8538         (mono_generic_class_get_class): Ditto.
8539
8540 2009-02-06  U-QUACK\miguel  <miguel@quack>
8541
8542         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8543         they live in security.c
8544
8545         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8546         another bit from Paolo's code.
8547
8548 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8549
8550         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8551         methods which will be discarded by add_imt_builder_entry ().
8552
8553         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8554         need to be boxed.
8555
8556         * loader.c: Add a statistics for the size of the memberref signature cache.
8557         
8558         * loader.c (find_cached_memberref_sig): New helper function.
8559         (cache_memberref_sig): Ditto.
8560
8561         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8562         they will be parsed again for every generic instantiation, leading to unbounded
8563         memory growth.
8564
8565 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8566
8567         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8568         parameters of generic methods.
8569
8570         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8571         after the original method is copied to the inflated method.
8572         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8573
8574         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8575         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8576
8577         * class.c metadata.c: Update after the changes above.
8578
8579 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8580
8581         * metadata-verify.c: Simplified error handling and added
8582         section table validation.
8583
8584 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * class-internals.h (MonoClassExt): New structure containing rarely used
8587         fields of MonoClass.
8588         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8589         through a new 'ext' field.
8590
8591         * class.c (mono_class_alloc_ext): New helper function to allocate 
8592         class->ext.
8593
8594         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8595
8596 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8597
8598         * object.c (mono_object_get_virtual_method): Properly inflate
8599         generic methods.  Fixes #472692.
8600
8601 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8602
8603         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8604         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8605         for the parent type, the created type must be ready to be used on a generic
8606         instantiation.
8607         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8608         we won't have duplicated entries in generic_inst_cache.
8609
8610         Fixes #469553.
8611
8612 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8613
8614         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8615         replace with plain BSD per the comments on the bug MONO77637.
8616
8617 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * class.c (mono_class_get_generic_class): New accessor function.
8620         (mono_class_get_generic_container): Ditto.
8621
8622         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8623         fields, similar to the ones in MonoMethod.
8624
8625         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8626         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8627
8628         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8629         
8630         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8631         the same information as element_class->byval_arg.
8632
8633         * class.c reflection.c: Remove references to class->byval_arg.
8634
8635         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8636         klass->enum_basetype directly.
8637
8638         * verify.c metadata.c object.c icall.c reflection.c: Use 
8639         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8640         directly.
8641
8642 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8643
8644         * icall-def.h: Remove internal calls for sockets when
8645         DISABLE_SOCKET is defined, file system writing features when the
8646         OS only support reading and not writing data and Policy support if
8647         the Policy is disabled.
8648         
8649         * image.c (do_mono_image_open): Apply Paolo's patches for using
8650         mono_file_map_ APIs here.
8651
8652         * assembly.c: Add support for platforms to avoid prefix
8653         auto-detection. 
8654
8655 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8656
8657         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8658         warning.
8659
8660         * class.c (mono_class_inflate_generic_class): New helper function.
8661
8662         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8663         statistics for inflated methods/classes.
8664
8665         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8666
8667         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8668         the call is made from Delegate.CreateDelegate () for the invoke method of
8669         a delegate.
8670
8671         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8672
8673         * metadata.c (mono_metadata_signature_size): New helper function.
8674
8675         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8676         generic instances.
8677
8678         * metadata.c (inflated_method_in_image): Avoid calling 
8679         mono_method_signature () if the method does not already have a signature.
8680
8681 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8682
8683         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8684         valuetype is compatible with target type, check by inheritance as a
8685         VT is not really compatible with System.ValueType, for example.
8686
8687         * verify.c (do_invoke_method): Improve error message.
8688
8689         * verify.c (do_box_value): If boxing a nullable, use the type argument
8690         on stack instead.
8691
8692         * verify.c (do_newobj): Improve error message.  
8693
8694         Fixes #469549.
8695
8696 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8697
8698         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8699
8700 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8701
8702         * generic-sharing.c: Don't hold domain lock when calling
8703         instantiate_other_info().  Fixes #471958.
8704
8705         * domain-internals.h, loader.c: Describe locking policy of domain
8706         lock vs loader lock.
8707
8708 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8709
8710         * verify.c (mono_delegate_signature_equal): Make it possible to check
8711         first-arg-bound delegates to static method.
8712
8713         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8714         static methods with the first arg bound.
8715
8716         Fixes #469529.
8717
8718 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8719
8720         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8721         errors.
8722
8723         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8724         under strict mode. Any type, when boxed can be seen as a reference type.
8725
8726         Fixes #469528.
8727
8728 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8729
8730         * object.h: The lower bound of an array is a signed integer value.
8731         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8732         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8733
8734         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8735         calculate the upper bound.
8736         
8737         Fixes #471252.
8738
8739 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8740
8741         From Paolo's work, refactored, cleared up:
8742         
8743         * threadpool.c, icall.c: ifdef code that requires a working socket
8744         stack.
8745
8746         * metadata.c (mono_metadata_field_info): Do not attempt to return
8747         a value from a function declared as void.
8748
8749         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8750         from the console stack.
8751
8752         * assembly.c: use strrchr instead of rindex.
8753
8754         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8755         alloca.h on systems that have it.
8756
8757         * environment.c: Avoid code that uses stuff from
8758         HAVE_SYS_UTSNAME_H
8759         
8760         * appdomain.c: Include sys/time.h.
8761
8762         * console-io.c: include sys/ioctl.h if it is available.
8763
8764 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8765
8766         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8767
8768         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8769         the method builder.
8770
8771         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8772         after it was created and cached, as the later is not thread safe.
8773         
8774 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8777         called while the debugging module is not initialized. Fixes #471669.
8778
8779 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8780
8781         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8782
8783         Fixes #471255.
8784
8785 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8786
8787         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8788         loader lock is not taken while the templates lock is held.  Fixes
8789         #471089.
8790
8791 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8792
8793         * metadata.c (type_in_image): Added a check to fix a monodis
8794         crash.
8795
8796 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8797
8798         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8799         nullable arguments.
8800
8801         * object.c (mono_runtime_invoke_array): Ditto.
8802         
8803         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8804         freeing wrappers of dynamic methods.
8805
8806         * loader.c (mono_free_method): Call it. Fixes #463323.
8807         
8808         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8809         methods taking vtype/byref arguments, to fix yet another bug caused by
8810         the sharing of runtime invoke wrappers. Partly fixes #471259.
8811
8812 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8813
8814         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8815         <first file in file table>:1 when the IL offset does not have an associated
8816         line number.
8817
8818 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8819
8820         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8821         variable info for a method.
8822
8823         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8824         
8825 2009-01-30  Jb Evain  <jbevain@novell.com>
8826
8827         * pedump.c: reuse code from monodis to make sure pedump honors
8828         MONO_PATH, which is needed to verify net_2_1 assemblies.
8829
8830 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8833         there is no line number info.
8834
8835 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8836
8837         Avoid some MonoType allocations
8838         * reflection.c (mono_reflection_initialize_generic_parameter):
8839         Reuse MonoType from param->pklass rather than allocating one.
8840         (mono_dynamic_image_free): Update to changes.
8841
8842 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8843
8844         Rearrange some code to improve consistency
8845         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8846         (mono_reflection_initialize_generic_parameter): ... here.
8847
8848 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8851         with type constraints as an experiment.
8852
8853         * boehm-gc.c (on_gc_notification): Update mono_stats.
8854
8855 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8856
8857         Avoid some allocations
8858         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8859         pointer to tail array to avoid extra allocation.
8860         * metadata.c (free_generic_inst): Update to changes.
8861         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8862         on-stack struct.
8863
8864 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8865
8866         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8867         return TRUE if the two type objects are the same.
8868
8869 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8872         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8873         klass->min_align, since klass->min_align contains the managed alignment,
8874         while the native alignment can be different, like for longs on x86.
8875         Fixes #469135.
8876
8877         * class-internals.h (MonoMarshalType): Add a min_align field.
8878
8879 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8880
8881         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8882         the 1.0 format.
8883
8884 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8885
8886         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8887         some comments about the usage of the used_regs field.
8888
8889         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8890         Fixes #469217.
8891
8892 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8893
8894         * appdomain.c: return NULL instead of throwing FileNotFoundException
8895         when LoadAssembly() fails.
8896
8897 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8898
8899         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8900         image if the owner is NULL.  Fixes the AOT failures.
8901
8902 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8903
8904         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8905         MonoGenericParam structure using memset so the image field is initialized
8906         as well.
8907
8908 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8909
8910         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8911         a plain store.
8912
8913 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8914
8915         * class.c (mono_class_setup_vtable_general): In the generic instance
8916         optimization, set method->slot for abstract virtual methods. Fixes part of
8917         #467834.
8918
8919 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8920
8921         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8922         which signals that the unloading has started but all appdomain services must
8923         remain operational.
8924
8925         * appdomain.c (mono_domain_unload): The initial state for unloading now
8926         is unloading_start and we switch to unloading after the managed call to
8927         AppDomain::DomainUnload has finished.
8928
8929         The new unloading state has to be created because managed code in the
8930         DomainUnload event can depend on things like the threadpool still working.
8931         The domain must remain fully functional while the event executes.
8932
8933         This shown as an issue due to Process::WaitForExit, which waits for
8934         async reads of stdout and stderr to complete. Since those are processed
8935         in the threadpool the code deadlocks because the DomainUnload callback 
8936         waits for the async read finished event, which should have been set by a
8937         threadpool job but has been discarded due to the domain been in unload
8938         state.
8939
8940 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8941
8942         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8943         image must match.
8944
8945 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8946
8947         * reflection.c (resolve_object): For fields, inflate the class and
8948         then get the field in the inflated class.
8949
8950 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8951
8952         * object-internals.h (struct _MonoException): Added a comment
8953         explaining the new use of trace_ips.
8954
8955 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8956
8957         * generic-sharing.c (inflate_other_data): Inflate array methods
8958         correctly.
8959
8960         * loader.c, class-internals.h: Rename search_in_array_class() to
8961         mono_method_search_in_array_class() and make it non-static.
8962
8963 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8966         Hopefully fixes #458168.
8967
8968 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8969
8970         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8971         as it is performed elsewhere.
8972
8973         Code is contributed under MIT/X11 license
8974
8975 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8976
8977         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8978         requests queued.
8979         * object.c (mono_raise_exception): Increment the exceptions total
8980         counter when an exception is thrown.
8981         * class-internals.h: Add a location for storing the total number of
8982         asp.net requests served.
8983         * mono-perfcounters.c: Implement update support for asp.net counters
8984         from the class libraries. Implement read support for asp.net counters
8985         and exceptions total counter.
8986
8987 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8988
8989         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8990         accessing klass->methods. Fixes #467385.
8991
8992 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8993
8994         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8995         for byval arguments without an [Out] attribute. Fixes #467212.
8996
8997         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8998         Fix compilation under android.
8999         
9000         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
9001         processed, scan them directly after they are copied, to achieve better locality
9002         and cache usage.
9003
9004         * socket-io.c: Applied patch from Koushik Dutta
9005         (koush@koushikdutta.com). Disable IPV6 when running under android.
9006
9007 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * icall.c (ves_icall_InternalExecute): Add write barriers.
9010
9011         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
9012         the GC code.
9013
9014         * sgen-gc.c: Implement write barriers in IL code.
9015
9016 2009-01-17  Geoff Norton  <gnorton@novell.com>
9017
9018         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
9019
9020 2009-01-17  Geoff Norton  <gnorton@novell.com>
9021
9022         * image.c: When unloading the image->references table, there can be gaps
9023         in it.  Ensure that we iterate every entry to avoid leaking assembly references
9024         when unloading an appdomain.
9025
9026 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
9029         speed up ptr-in-nursery checks.
9030
9031         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
9032         threads_lock () to prevent deadlocks.
9033
9034         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
9035         does not need to be scanned during minor collections, since writes to it
9036         must use write barriers.
9037
9038 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
9039
9040         * metadata-verify.c: Add pe nt header verification.
9041         
9042 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * gc.c: Fix a few warnings when using SGEN.
9045
9046 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
9047
9048         * metadata-verify.c: Add pe optional header verification.
9049
9050 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * sgen-gc.c: Add support for user defined marker functions, used by
9053         MonoGHashTable to avoid registering a GC root for every hash node.
9054
9055 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
9058         non-pinned roots into separate hashes to avoid having to traverse them
9059         in functions which are only interested in one kind.
9060
9061 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * metadata-verify.c: Add pe header machine field verification.
9064         
9065 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * metadata-verify.c: Add pe header size verification.
9068
9069 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
9070
9071         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
9072         using the GC, they don't contain references.
9073
9074         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
9075
9076 2009-01-13  Geoff Norton  <gnorton@novell.com>
9077
9078         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
9079         AppDomains created on the native side can be cleaned up on the native side.
9080
9081 2009-01-13  Geoff Norton  <gnorton@novell.com>
9082
9083         * appdomain.c: Ensure that we call mono_context_init for the embedding api
9084         as well as the managed api.
9085
9086 2009-01-13  Geoff Norton  <gnorton@novell.com>
9087
9088         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
9089         with a MonoAppDomain initialized against it.
9090
9091 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9092
9093         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
9094         
9095         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
9096
9097         * marshal.c: Avoid setting the exception clauses after a method has been entered 
9098         into the wrapper caches. Fixes #465700.
9099
9100         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
9101         method builder.
9102         (mono_mb_create_method): Set the clauses from the method builder.
9103
9104 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
9105
9106         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
9107         Patch from Makoto Kishimoto.
9108
9109 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
9112         encoding them as ROOT_DESC_COMPLEX.
9113         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
9114
9115 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
9116
9117         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
9118         no longer point to the nursery.
9119
9120         * sgen-gc.c: Add a few comments/FIXMEs.
9121         
9122         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
9123
9124         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
9125         initialization of the various _method variables thread safe. Fixes
9126         #465377.
9127
9128 2009-01-12  Mark Probst  <mark.probst@gmail.com>
9129
9130         * domain.c, domain-internals.h: Remove the shared_generics_hash
9131         and its lookup functions.
9132
9133 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
9134
9135         * socket-io.c:  Fixing the MSVC build. 
9136
9137         Code is contributed under MIT/X11 license.
9138
9139 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
9140
9141         * metadata-verify.c: Add pe header watermark verification.
9142
9143 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9144
9145         * metadata-verify.c: Add lfanew verification.
9146
9147 2009-01-12  Jb Evain  <jbevain@novell.com>
9148
9149         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
9150         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
9151
9152 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * socket-io.c: Fix the build.
9155
9156         * environment.c: Fix an #ifdef.
9157
9158 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * threadpool.c (async_invoke_thread): Handle the wait function returning
9161         WAIT_IO_COMPLETION as well.
9162         (async_invoke_io_thread): Ditto.
9163
9164 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
9165
9166         * threads.c: Fixing the Windows build.
9167
9168         Code is contributed under MIT/X11 license.
9169
9170 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9171  
9172         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
9173         interrupt a wait.
9174         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
9175         the thread to wait again.
9176
9177 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9178
9179         * metadata-verify.c: Initial skeleton of the metadata verifier.
9180
9181         * pedump.c: Add support for the metadata verifier.
9182
9183         * verify-internal.h: Export the whole assembly metadata verifier function.
9184
9185 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9186
9187         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
9188
9189 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9190
9191         * Makefile.am: Upgrade dtrace-prelink.sh location.
9192
9193 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9194
9195         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
9196         well. Otherwise the shutdown deadlock that happens on unix will can happen
9197         as well.
9198         If the main thread code finishes too fast it's possible that the finalizer
9199         thread won't have executed yet, won't record itself as the finalizer thread
9200         and the shutdown sequence will wait on it forever.
9201
9202 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9203
9204         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
9205         with MSVC.
9206
9207 2009-01-08  Miguel de Icaza  <miguel@novell.com>
9208
9209         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
9210         Robert Jordan for pointing this out.
9211
9212 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
9213
9214         * icall.c
9215         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
9216         ves_icall_System_IO_DriveInfo_GetDriveType.
9217
9218 2009-01-07  Miguel de Icaza  <miguel@novell.com>
9219
9220         * icall.c: Wrap calls to mono_strtod in CriticalSection
9221         invocations when using eglib, to work around #464316.
9222
9223 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9224
9225         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
9226         return value of GetCurrentDirectory to never access unitialized memory.
9227
9228 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9229
9230         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9231         return value of GetCurrentDirectory and expand the buffer if needed.
9232
9233         Fixes #459094.
9234
9235 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9236
9237         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9238           Adding a call to mono_init_com_types.
9239
9240         Code is contributed under MIT/X11 license.
9241
9242 2009-01-07  Geoff Norton  <gnorton@novell.com>
9243
9244         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9245         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9246         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9247         be the value of the ip buffer.
9248
9249 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9252         interfaces_packed here.
9253
9254         Fixes part of #463294.
9255
9256 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9257
9258         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9259
9260         Fixes part of #463294.
9261
9262 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9265         is a boxed complex as well.
9266
9267         Fixes part of #463294.
9268
9269 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9270
9271         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9272         control if a methodspec should be created for the generic method definition from external assemblies.
9273         Caching of methodspec is done using the handleref hash table.
9274
9275         Fixes #462592.
9276
9277 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9278
9279         * loader.c (find_method): When searching the interfaces of a class
9280         check the transitive closure of implemented interfaces.
9281
9282         Fixes #463303.
9283
9284 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9285
9286         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9287         
9288 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9289
9290         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9291         interfaces calculation to fill_valuetype_array_derived_types.
9292
9293         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9294         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9295         for example.
9296
9297         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9298         interfaces for valuetypes if needed.    
9299
9300         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9301         for their basetype as well. Types are array expanded if rank is > 0.
9302
9303         Fixes #400716.
9304
9305 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9306
9307         * socket-io.h : Changing the signature of
9308           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9309           the blocking state.
9310
9311         * icall-def.h :  Changing the signature of
9312           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9313
9314         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9315           For Windows only.  Avoid blocking when calling accept by
9316           querying for a connection via select.  The loop also queries
9317           the thread state every 1000 micro seconds for the thread
9318           stop state.  This will avoid the process hanging on shutdown
9319           when using a TcpChannel that is never connected to.
9320
9321         Code is contributed under MIT/X11 license.
9322
9323 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9324
9325         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9326
9327 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9328
9329         * class.c (get_implicit_generic_array_interfaces): Extract common
9330         code to a helper function making it a lot easier on the eyes.
9331
9332 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9333
9334         * class.c (get_implicit_generic_array_interfaces): If the internal
9335         enumerator is an interface inflate System.Object instead of itself.
9336
9337         Fixes #461261.
9338
9339 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9340
9341         * object.c (mono_runtime_invoke_array): Don't assert with
9342         byref nullable types.
9343
9344         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9345         byref nullables we unbox the object and store it on the
9346         stack. 
9347         We can't use the boxed object since it is the T of Nullable<T>
9348         and the boxed representation of a nullable it's underlying type
9349         or null.
9350         We could cheat and create a boxed nullable and use the same
9351         machinery of other byref VTs but this feels like a hack and
9352         using the stack has the bonus of reducing heap pressure.
9353
9354         Fixes #461941.
9355
9356 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9357
9358         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9359         return value.
9360
9361         Fixes #461867.
9362
9363 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9364
9365         * icall-def.h : Adding an internal call definition for 
9366           System.Environment.internalBroadcastSettingChange.
9367
9368         * icall.c : Adding a Windows only implementation to broadcast a 
9369           WM_SETTINGCHANGE when an environment variable has changed.
9370
9371         Code is contributed under MIT/X11 license.
9372
9373 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9374
9375         * class.c, class-internals.h: Made
9376         mono_class_has_parent_and_ignore_generics() non-static.
9377
9378 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9379
9380         * image.c: deal with the mmap failing when loading an image.
9381
9382 2008-12-17  Geoff Norton  <gnorton@novell.com>
9383
9384         * threadpool.c: Ensure that the io_queue_lock is initialized
9385         in all circumstances, as we always attempt to cleanup against it.
9386
9387 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9388
9389         * icall.c (ves_icall_System_Environment_get_Platform): For
9390         compatibility reasons for existing client code we will keep
9391         returning 4 for a while.   
9392
9393         For how long will depend on the documentation being updated, and
9394         for us to give client code a chance to be updated.
9395
9396         This reverts the original decison on #433108 since we did not
9397         catch roughly 33 instances of the broken code in our own source
9398         code base, we did not catch failures on the buildbots, and QA did
9399         not bring this as a problem.
9400
9401         Only today I found some customer's code breaking due to our own
9402         class libraries not being fully updated and tracked it down to
9403         this change.  I am reverting it because if we could not even get
9404         our story straight in our own code base, how can we hope that our
9405         end user code be fixed?
9406
9407         As of this morning, our Wiki page that documents how to detect
9408         Unix had not been fixed.    
9409
9410 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9413
9414         * class.c (mono_class_get_fields): Handle loading errors.
9415
9416 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9417
9418         * 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.
9419         
9420 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9421
9422         * mono-perfcounters.c: avoid warning.
9423
9424 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9425
9426         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9427         make sure all interfaces have MonoClass::interface_id set.
9428
9429         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9430         method table is property set.
9431
9432 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * class.c: New function mono_class_setup_interface_id that setup
9435         MonoClass::interface_id if needed.
9436
9437         * class-internals.h: Export new function.
9438
9439 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9440
9441         * class.c: Add code to sanity check the vtable after setup_vtable_general
9442         has done it's work.
9443
9444 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9445
9446         * icall.c: make Assembly.GetExecutingAssembly work properly when
9447         reflection is used to invoke the method.
9448         Bug #321781 fixed.
9449
9450 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9451
9452         * metadata/generic-sharing.c: Look for constraints in all type
9453         arguments, not just the first one.
9454
9455 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9456
9457         * appdomain.c: return the correct CodeBase for an Assembly instance
9458         that was loaded from the shadow-copy directories.
9459         Bug #458190 fixed.
9460
9461 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9462
9463         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9464
9465         * sgen-gc.c (check_object): New debugging helper function.
9466
9467         * object.c: Fix calls to mono_value_copy_array ().
9468
9469 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         * class.c (mono_class_setup_fields): If working on an inflated class
9472         first check if the generic definition did init with success.
9473
9474         Fixes #445361.
9475
9476 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9477
9478         pedump.c (main): Fix a warning.
9479
9480 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9481
9482         * object-internals.h : Adding a definition for 
9483           MonoReflectionComVisibleAttribute.
9484
9485         * marshal.c (cominterop_com_visible) :  Method added to check the 
9486           ComVisible attribute of a class.
9487
9488         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9489           cominterop_raise_hr_exception added to consolidate common code 
9490           to raise hr exceptions.
9491
9492         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9493           if a managed class should support IDispatch.
9494
9495         * marshal.c 
9496           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9497           Added additional checks for managed object when getting 
9498           an IDispatch interface.
9499
9500         Code is contributed under MIT/X11 license.
9501
9502 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9503
9504         pedump.c (main): Handle mono_get_method () returning NULL. 
9505
9506 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9507
9508         * marshal.h: Fix a warning.
9509
9510 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9511
9512         * marshal.c : Adding cominterop_release_all_rcws to release all
9513           runtime callable wrappers held by the runtime.
9514
9515         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9516           
9517         Code is contributed under MIT/X11 license.
9518
9519 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9520
9521         * metadata.c (mono_image_alloc_lock): New helper function.
9522         (mono_image_alloc0_lock): Ditto.
9523
9524         * metadata.c: Use the alloc_lock () helper functions for allocating
9525         memory from the image mempool.
9526
9527 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9528
9529         * class.c (mono_class_from_generic_parameter): Document it's
9530         locking behavior. Fix double checked locking here, we stored in
9531         param->pklass a partially initialized MonoClass and no membar was used.
9532
9533 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9534
9535         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9536         (3) functions are present in the C library use them to do the
9537         job. If they are absent, make sure that the sum of int_part and
9538         dec_part is rounded before returning. This is necessary due to the
9539         division of dec_part by the power of 10 before the final addition
9540         is performed - if the result is not rounded in some cases it will
9541         yield invalid results.
9542
9543 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9546         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9547         instruction instead of a pointer constant.
9548
9549 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * loader.c (mono_method_get_header): Do most of the work outside the
9552         loader lock, to avoid assembly load hook deadlocks.
9553
9554         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9555         (mono_metadata_parse_type_full): Ditto.
9556
9557 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9558
9559         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9560         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9561         funtions. Finally, use a lock to produce well ordered output.
9562
9563         The lock looks silly, as all calls to the corlib mempool should be guarded
9564         with the loader lock, but for some reason this fact doesn't help. 
9565
9566         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9567
9568 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9569
9570         * socket-io.c: 64 bit big-endian fixes.
9571
9572 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9573
9574         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9575         targets that require strict compatibility between the types.
9576
9577         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9578         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9579         Kill the strict argument and create a new one valuetype_must_be_boxed.
9580
9581         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9582         state that all valuetypes must be boxed.
9583
9584         Fixes #448560.
9585
9586 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9587
9588         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9589         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9590
9591         Contributed under MIT/X11 license.
9592
9593 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9594
9595         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9596         the inflate_generic_type machinery should handle it.
9597
9598         This avoids a crash when the field's flags is zero and it's type is
9599         a primitive.
9600         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9601         is zero and will return one of the cached built-in primitive types. Since
9602         those types live in read-only memory, the code that copies it crashes.  
9603
9604 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9605
9606         * object.c: Don't put function descriptors into generalized IMT
9607         thunks.
9608
9609 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9610
9611         * class.c: Enable generic code sharing on PPC64.
9612
9613 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9614
9615         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9616         from mini/mini.c.
9617
9618         * generic-sharing.c: Allocate the method template slists from the
9619         image mempool so it doesn't leak.
9620
9621 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9622
9623         * class.c (generic_array_methods): Release the linked list.
9624
9625 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9626
9627         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9628         invocation to g_utf16_to_utf8().
9629
9630 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9631
9632         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9633         arguments on big endian archs.
9634
9635 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9636
9637         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9638         the type name (test added in corlib).
9639
9640 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9641
9642         * pedump.c: initialize perf. counters. Fixes a segv.
9643
9644 2008-11-25  Martin Baulig  <martin@ximian.com>
9645
9646         * mono-debug-debugger.c
9647         (mono_debugger_runtime_invoke): Return the exception object if an
9648         exception was thrown.  Visual Studio displays the exception object
9649         in the locals window.
9650
9651 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9652
9653         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9654         ftnptr.
9655
9656 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9657
9658         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9659         MONO_TYPE_U are sizeof (gpointer), too.
9660
9661 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9662
9663         * marshal.c (mono_type_native_stack_size): Fixed size and
9664         alignment for reference types.
9665
9666 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9667
9668         * class.c (mono_class_generic_sharing_enabled): Disable generic
9669         code sharing for PPC64.
9670
9671 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9672
9673         * icall.c (mono_method_get_equivalent_method): Make sure
9674         method->klass->methods is inited before looping over it.
9675
9676 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9677
9678         * object.c: when calling ExecuteAssembly in a newly created domain,
9679         the configuration file and application base are already set up.
9680         Bug #446353 take 2 fixed.
9681
9682 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9683
9684         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9685         Fixes #444715. Fix a warning.
9686
9687 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9688
9689         * appdomain.c: write the full path of the assembly to the .ini file
9690         created when "shadow-copying"
9691         Bug #446353 fixed.
9692
9693 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9694
9695         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9696         if signature==FALSE.
9697
9698 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9699
9700         * marshal.h : Fix the cygwin build.
9701            marshal.c:12442: undefined reference to `_IID_IMarshal'
9702           
9703         Code is contributed under MIT/X11 license.
9704
9705 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9706
9707         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9708           free threaded marshaler when QueryInterface is called on a COM callable
9709           wrapper requesting the IMarshal interface.
9710           
9711         Code is contributed under MIT/X11 license.
9712
9713 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9714
9715         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9716
9717         * reflection.c (mono_type_get_object): Special case the very common
9718         void type.
9719
9720         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9721         hold typeof(void).
9722
9723 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9724
9725         * process.h : Adding method declaration for
9726           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9727           
9728         * process.c : Adding implementation for
9729           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9730           
9731         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9732           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9733
9734         Code is contributed under MIT/X11 license.
9735
9736 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9737
9738         * appdomain.c (unload_thread_main): Clean up threadpool by
9739         calling mono_thread_pool_remove_domain_jobs.
9740
9741         * domain-internals.h (struct _MonoDomain): Add new fields to
9742         help coordinate the cleanup of the threadpool.
9743
9744         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9745         that cleans up the threadpool of all jobs associated with an appdomain.
9746         It does that by cleaning up the queues and making sure all active
9747         threads are accounted.
9748
9749         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9750         unloaded or in the process of. Take this is such way that there is
9751         no race condition between another thread starting the unload and the
9752         current thread acknowledging it.
9753
9754         * threadpool.c (async_invoke_thread): Same.
9755
9756         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9757         firing the new thread.
9758
9759         * threadpool.c (start_tpthread): Same.
9760
9761         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9762
9763         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9764
9765 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9766
9767         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9768         Add support for DuplicateHandle.
9769         
9770         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9771         Add support for DuplicateHandle.
9772         
9773         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9774         Add support for DuplicateHandle.
9775
9776         Code is contributed under MIT/X11 license.
9777
9778 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9779
9780         * class-internals.h: Make min_align into a whole byte.
9781
9782         * class.c: Set min_align for SIMD types to 16.
9783
9784 2008-11-05  Geoff Norton  <gnorton@novell.com>
9785
9786         * attach.c: Default the attacher to enabled for all cases including
9787         embedded.
9788
9789 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9790
9791         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9792         change r117650.
9793
9794 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9795
9796         * monitor.c, monitor.h: New function for querying offsets of
9797         members of MonoThreadsSync.
9798
9799 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9800
9801         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9802         to speed up this function and to avoid the boundless memory growth caused by
9803         the signature_dup () calls.
9804
9805 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9808         wrapper.
9809
9810         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9811         by 1 bit.
9812
9813         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9814
9815 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9816
9817         * appdomain.c:
9818         * domain-internals.h: made mono_set_private_bin_path_from_config()
9819         "internal".
9820         * object.c: call the above function after setting the configuration
9821         file path for the root domain.
9822         Fixes bug #314478.
9823
9824 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9825
9826         * assembly.c: when the assembly is loaded from an absolute path, end
9827         basedir with a directory separator.
9828         Bug #440781 fixed.
9829
9830 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9831
9832         * monitor.c (mono_monitor_get_fast_enter_method): If
9833         CompareExchange is not available, don't create the fastpath
9834         instead of asserting.  (The method is missing in the 1.1 profile.)
9835
9836 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9837
9838         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9839
9840         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9841         Monitor.Exit IL fastpaths.
9842
9843 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9844
9845         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9846
9847 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9848
9849         * class.c (mono_class_create_from_typedef): Added Vector2l.
9850
9851 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9852
9853         * class.c (mono_class_create_from_typedef): Added Vector2d.
9854
9855 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9856
9857         * appdomain.c: translate \ into / for cache_path.
9858         * domain-internals.h: new mono_is_shadow_copy_enabled().
9859         * icall.c: (fill_reflection_assembly_name) do the same path
9860         manipulations that get_code_base does.
9861         (get_code_base) use mono_is_shadow_copy_enabled.
9862
9863 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9864
9865         * appdomain.c: shadow-copied assemblies go to CachePath +
9866         ApplicationName when both are set. DynamicBase has nothing to do with
9867         shadow copies.
9868         Bug #406877 fixed.
9869
9870 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9871
9872         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9873         STANDALONESIG table.
9874
9875         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9876         standalone signatures.
9877
9878         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9879         comparison code: instead of comparing the signatures using a custom
9880         equals function, transform them to a common signature and compare that. This
9881         works better with AOT.
9882
9883 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9884
9885         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9886
9887         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9888         call for generic instances.
9889         (mono_class_setup_properties): Call setup_properties () before accessing
9890         gklass->properties.
9891
9892         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9893         over the virtual methods of a class using metadata if possible, avoiding the
9894         creation of MonoMethod's for non-virtual methods.
9895         
9896         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9897         get_virtual_methods () to iterate over the virtual methods of classes.
9898
9899 2008-10-25  Martin Baulig  <martin@ximian.com>
9900
9901         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9902
9903 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9904
9905         * class.c (mono_class_create_from_typedef): Added Vector4i.
9906
9907 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9908
9909         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9910         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9911         special-casing applies to eliminate the call completely.
9912
9913 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9914
9915         * class.c (mono_class_create_from_typedef): Added Vector8s.
9916
9917 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9918
9919         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9920
9921 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9922
9923         * icall.c: get rid of annoying warning.
9924
9925 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9926
9927         * threadpool.c: in 1.x, if you change the background status of the
9928         threadpool thread, it's not reset.
9929         Remove unnecessary calls to SetState.
9930
9931 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9932
9933         * threadpool.c: asynchronously create a set of idle threads upon first
9934         use of the threadpool. SetMinThreads will now start the appropriate
9935         number of idle threads if they are not already running. The default is
9936         1 threadpool thread per CPU. Increased the maximum number of threads
9937         per CPU to 10.
9938
9939 2008-10-22  Martin Baulig  <martin@ximian.com>
9940
9941         Revert r116521 from Zoltan, it breaks the debugger:
9942
9943         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9944         over the virtual methods of a class using metadata if possible, avoiding the
9945         creation of MonoMethod's for non-virtual methods.
9946         
9947         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9948         get_virtual_methods () to iterate over the virtual methods of classes.
9949
9950 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9951
9952         * threads.c: when creating a threadpool thread, set its state to
9953         'background'.
9954         * threadpool.c: reset the background state of a threadpool thread
9955         after finishing each work item
9956         Bug #437888 fixed.
9957
9958 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9961         
9962         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9963         generic instances which works by inflating the methods in the container
9964         class's vtable.
9965
9966         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9967         variant which doesn't make a copy if no inflation was done.
9968         (mono_class_setup_fields): Use it.
9969
9970         * metadata.c (mono_metadata_get_shared_type): New helper function to
9971         return a shared instance of a given MonoType.
9972
9973         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9974         a copy of most non-generic types.
9975
9976 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9977
9978         * threadpool.c: remove one more GetSystemInfo () call.
9979
9980 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9981
9982         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9983         use the code in mono-proclib.h to get processor information.
9984
9985 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9986
9987         * appdomain.c: fixed the logic that determines whether assemblies in a
9988         directory are "shadow-copied" or not. Bug #433483 fixed.
9989
9990 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9993         warning.
9994
9995 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9998         returning a vtype.
9999
10000         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
10001         reflection.c: Use mono_field_get_name () for accessing a field's name.
10002
10003         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
10004         class.c
10005
10006         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
10007         field.
10008
10009         * loader.c (find_method_in_class): Reenable the metadata optimization by
10010         not using it for generic instances.
10011
10012         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
10013         data/def_type fields from MonoClassField into a separate structure.
10014         (struct MonoClassField): Remove data/def_type fields.
10015         (struct _MonoClass): Add a 'field_def_values' array to store the default
10016         values/RVA for fields.
10017
10018         * class.c reflection.c: Update after the changes.
10019         
10020         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
10021         for accessing field->data.
10022
10023         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
10024
10025         * loader.c (find_method_in_class): Revert the last change for now as
10026         it breaks Mono.C5 unit tests.
10027
10028         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
10029         'field_generic_types' and 'field_objects' which contain the information
10030         previously stored in MonoInflatedField.
10031         (MonoInflatedField): Delete.
10032         (struct _MonoClassField): Delete 'generic_info' field.
10033
10034         * reflection.c: Store the information which was previously in 
10035         field->generic_info in MonoDynamicGenericClass instead.
10036
10037         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
10038         MonoClassField changes.
10039
10040 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
10041
10042         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
10043         store the value inside the data array of the MonoMethodWrapper.
10044         This saves memory, is faster and fixes the lifetime issues (methods
10045         were never removed from the hash previously). May also fix bug#436996.
10046
10047 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
10050         generic instances, compute the type from the generic definition instead of
10051         looking in field->generic_info.
10052
10053         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
10054         for inflated fields, the only user was get_fieldref_token () which no
10055         longer needs it.
10056
10057         * class.c (mono_class_init): Revert the last change as it seems to cause
10058         crashes.
10059
10060         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
10061         bytes on 64 bit platforms.
10062
10063         * object.c (mono_class_create_runtime_vtable): Fix a warning.
10064         
10065         * object.c (mono_class_create_runtime_vtable): Don't initalize
10066         field->data/field->def_type here, it is done lazily by 
10067         mono_class_get_field_default_value ().
10068
10069         * icall.c (ves_icall_get_enum_info): Call 
10070         mono_class_get_field_default_value () instead of directly accessing
10071         field->data and field->def_type.
10072
10073         * object.c (get_default_field_value): Ditto.
10074
10075         * class.c (mono_field_get_data): Ditto.
10076         
10077         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
10078         call for generic instances.
10079
10080         * loader.c (find_method_in_class): If klass != from_class, then inflate
10081         the method with the context of from_class, since the caller assumes this.
10082
10083 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
10084
10085         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
10086         for accessing method->slot.
10087
10088 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
10089
10090         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
10091
10092 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * class.c (mono_method_get_vtable_index): Use
10095         mono_method_get_vtable_slot () for accessing method->slot.
10096
10097         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
10098         accessing klass->methods.
10099
10100         * class.c (mono_method_get_vtable_slot): New helper function.
10101         (mono_class_get_vtable_entry): Ditto.
10102         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
10103         accessing method->slot.
10104
10105         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
10106         method to get_inflated_method ().
10107
10108         * class.c (mono_class_get_inflated_method): New helper method to obtain
10109         a method of an inflated class without calling setup_methods ().
10110         (mono_class_get_cctor): Use get_inflated_method.
10111
10112         * generic-sharing.c (mono_class_get_method_generic): Ditto.
10113         
10114         * marshal.c image.c: Lazily create all the marshal caches.
10115
10116         * image.c (mono_image_init): Move initialization of runtime_invoke
10117         caches to marshal.c.
10118
10119         * marshal.c (get_cache): New helper function to lazily initialize a 
10120         wrapper cache.
10121         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
10122
10123         * debug-helpers.c (mono_method_full_name): Include generic arguments.
10124
10125 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
10126
10127         * loader.c: fixed check for interface type.
10128
10129 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10130
10131         * appdomain.c: check for NULL setup before it's referenced.
10132
10133 p
10134 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10135
10136         * class.c: remove the unused old vtable setup code.
10137
10138 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10139
10140         * class.c: don't depend on interface order in
10141         setup_interface_offsets (bug #435777).
10142         * reflection.c: sort the InterfaceImpl table (patch from
10143         Jb Evain  <jbevain@novell.com>).
10144
10145 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
10148         the low level assemblies lock.
10149
10150 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
10151
10152         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
10153         object.c, reflection.c, socket-io.c, threads.c: introduced
10154         mono_framework_version () to return the major framewrok version,
10155         changed the code that was using more complex patterns to use it.
10156         Return the correct value for PlatformID for OSX.
10157
10158 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
10159
10160         * icall-def.h, process.h, process.c: added an icall to get info about
10161         processes using mono-proclib.
10162
10163 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
10164
10165         * mono-perfcounters.c: use the mono-proclib functions to
10166         access process information.
10167
10168 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10169
10170         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
10171         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
10172         reflection.c: remove rawbuffer usage: mmap support is more sanely
10173         provided by utils/mono-mmap.
10174
10175 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
10176
10177         * gc.c: use posix semaphores when possible so that
10178         mono_gc_finalize_notify() is signal safe.
10179
10180 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
10181
10182         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
10183         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
10184         be #ifdef-ed out, the linker will remove the rest.
10185
10186         * marshal.c: Implement DISABLE_COM.
10187
10188         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
10189
10190 2008-10-11  Miguel de Icaza  <miguel@novell.com>
10191
10192         * locales.c (string_invariant_compare_char): Optimization: do not
10193         call g_unichar_type unless we actually need the information.
10194
10195 2008-10-10  Mark Probst  <mark.probst@gmail.com>
10196
10197         * object.c, class-internals.h: Also create remoting trampolines
10198         for generic methods.  Pass the domain to the remoting trampoline
10199         creation function, too.
10200
10201 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
10204
10205 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10206
10207         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
10208         Vector4ui.
10209
10210 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
10211
10212         * assembly.c:
10213         * locales.c: remove the use of g_strdown. Fixes bug #322313.
10214
10215 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10216
10217         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
10218         for the least possible amount of time (extending the fix in r113458).
10219
10220 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10221
10222         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
10223
10224 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10225
10226         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
10227         as possible simd intrinsic types.
10228         Optimized the test to check for the common prefix first.
10229
10230 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10231
10232         * class.c: back out part of a broken optimization committed on
10233         May 23th (bug #433908).
10234
10235 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10236
10237         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10238         Win32.  Should fix #432388 for most cases until we have the new
10239         profiler on Win32.
10240
10241 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10242
10243         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10244         instead of using inst->id so the hash is stable for AOT.
10245
10246 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10247
10248         * appdomain.c:
10249         * icall.c: create a .ini file for shadow-copied assemblies that
10250         contains the location of the original assembly. Use this to return the
10251         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10252         Also fix the number of '/' for windows when returning the CodeBase.
10253         Fixes bug #430920.
10254
10255 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10256
10257         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10258
10259         Code is contributed under MIT/X11 license.
10260
10261 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10262
10263         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10264           if if the class vtable needs initialized.
10265
10266         Code is contributed under MIT/X11 license.
10267
10268 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10269
10270         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10271           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10272           STRING->BSTR, and CLASS->INTERFACE.
10273
10274         Code is contributed under MIT/X11 license.
10275
10276 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10277
10278         * sysmath.h: changed the declaration of the
10279         ves_icall_System_Math_Round2 icall by adding an extra
10280         away_from_zero parameter.
10281
10282         * sysmath.c (ves_icall_System_Math_Round2): added support for
10283         away from zero rounding. The icall now takes an extra boolean
10284         parameter to signal that away from zero operation is requested.
10285
10286 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10289         the delegate klass so it can work with full-aot.
10290         (mono_marshal_get_delegate_end_invoke): Ditto.
10291         (mono_marshal_get_delegate_invoke): Ditto.
10292
10293 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10294
10295         * gc.c, attach.h, attach.c: remove a bad pattern:
10296         add_finalizer_callback () is not implemented correctly, it can't
10297         without adding more overhead to the finalizer loop and it's not
10298         even needed, since we know exactly what we need to call, so there is
10299         no need to do so through an expensive function pointer.
10300
10301 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10302
10303         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10304         for the no-gc case.
10305         * attach.c (mono_attach_init): Remove the #ifdef.
10306
10307 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10308
10309         * attach.c (mono_attach_init): Don't use
10310         mono_gc_add_finalizer_thread_callback when compiling without GC.
10311         Fixes #432306.
10312         
10313         Code is contributed under MIT/X11 license.
10314
10315 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * class.c (mono_class_create_from_typedef): Remove the 
10318         #ifndef DISABLE_SIMD stuff.
10319
10320 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10321
10322         * class-internals.h (MonoClass): Added simd_type bit field.
10323
10324         * class.c (mono_class_create_from_typedef): Check if type is a simd
10325         intrinsic.
10326
10327 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10328
10329         * object.c (mono_method_add_generic_virtual_invocation): Only add
10330         instantiations to the thunk whose count is at least as large as
10331         the threshold.
10332
10333 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10334
10335         * icall.c: changed the Type of the exception thrown when trying to
10336         invoke a constructor on an abstract class. Part of the fix for bug
10337         #324185.
10338
10339 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10340
10341         * class.c, class-internals.h (mono_method_get_vtable_index): New
10342         function which returns the index into the vtable and properly
10343         handles inflated virtual generic methods.
10344
10345 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10346
10347         * object.c, domain.c, object-internals.h, domain-internals.h:
10348         Generalize IMT thunk machinery to also handle thunks for virtual
10349         generic method invokes.  When a virtual generic method is invoked
10350         more than a number of times we insert it into the thunk so that it
10351         can be called without lookup in unmanaged code.
10352
10353         * generic-sharing.c, class-internals.h: Fetching a
10354         MonoGenericInst* for a method from an (M)RGCTX.
10355
10356 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10357
10358         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10359         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10360         marshalling. Fixes #431304.
10361
10362 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10363
10364         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10365           handle when ref is specified without In or Out.
10366
10367         Code is contributed under MIT/X11 license.
10368
10369 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10370
10371         * loader.c (mono_get_method_constrained): Don't expand method with
10372         the class's context, because it's already a method of that class.
10373
10374 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10375
10376         * attach.c : should be correct build fix.
10377
10378 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * attach.c: Fix the previous change.
10381
10382 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10383
10384         * attach.c : quick w32 build fix.
10385
10386 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10387
10388         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10389         crashes MonoDevelop: #430455.
10390
10391 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10392
10393         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10394         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10395
10396         * domain.c: Remove initialization/cleanup of the removed fields.
10397
10398 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10399
10400         * class.c (mono_class_generic_sharing_enabled): Enable generic
10401         code sharing for PPC.
10402
10403 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10404
10405         * attach.c : Fixing the Windows builds.
10406
10407         Code is contributed under MIT/X11 license.
10408
10409 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10410
10411         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10412         the default generic sharing mode to 'all'.
10413
10414 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10415
10416         * generic-sharing.c, class-internals.h: New function for checking
10417         whether a method needs a static RGCTX invoke wrapper.  A few
10418         funtions moved from mini/generic-sharing.c.
10419
10420         * icall.c: New function used.
10421
10422 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10423
10424         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10425         Static RGCTX invoke wrapping applies to value type methods, too.
10426
10427         * class.c (mono_class_setup_vtable_general): In generic-shared
10428         value types, wrap methods with a static RGCTX invoke wrapper.
10429
10430 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10433         osx build.
10434
10435 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10436
10437         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10438         register a callback which is called when the finalizer thread is woken
10439         up.
10440         (finalizer_thread): Call the callback if it exists.
10441
10442         * attach.h attach.c: New files, implementing the attach mechanism.
10443
10444         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10445         
10446         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10447         by the previous change.
10448
10449 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10450
10451         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10452         loader.c, marshal.c, metadata-internals.h, metadata.c,
10453         method-builder.c, object.c, reflection.c: introduced specific functions
10454         to allocate from the domain and image mempools and cleaned up most of
10455         the code to use them (still missing a few in reflection.c).
10456         Keep the loader bytes counter updated.
10457
10458 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10459
10460         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10461         loader-related counters.
10462
10463 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10464
10465         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10466         added more MS-compatible counters.
10467
10468 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10469
10470         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10471         class->blittable. Fixes #428217.
10472
10473 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10474
10475         * reflection.c (mono_image_get_field_on_inst_token): Call 
10476         field_encode_signature () since that handles custom modifiers too.
10477         Fixes #424663.
10478
10479 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * reflection.c (add_custom_modifiers): New helper function to merge custom
10482         modifiers stored in objects to a MonoType.
10483         (fieldref_encode_signature): Encode custom modifiers.
10484         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10485         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10486
10487 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10488
10489         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10490         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10491         64-bit IL only images because imports are not resolved for IL only images.
10492         Special thanks to Bill Holmes for finding this bug and testing the patch.
10493         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10494
10495         Contributed under MIT/X11 license.
10496
10497 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10498
10499         * mono-config.c (dllmap_start): Add support for the bits keyword
10500         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10501
10502 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10503
10504         * reflection.c (inflate_mono_method): When the class the method is
10505         to be inflated for is itself not inflated, just return the method.
10506
10507 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10508
10509         * mono-perfcounters.c: use more user friendly process instance names.
10510
10511 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10512
10513         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10514           handle "[in] ref" and "[in][out] ref" cases.
10515
10516         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10517           to mono_mb_create_method.  This was causing problems calling native to
10518           managed passing Variants by value.
10519
10520         Code is contributed under MIT/X11 license.
10521
10522 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10523
10524         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10525         before accessing the friend_assembly_names field.
10526
10527         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10528         times.
10529         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10530         called lazily when it is needed.
10531
10532         * metadata-internals.h (struct _MonoAssembly): Add 
10533         'friend_assembly_names_inited' flag.
10534
10535 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10536
10537         * mono-perfcounters-def.h: fix the types of a few counters.
10538         * mono-perfcounters.c: implemented the instance names getter
10539         and a few bugfixes.
10540
10541 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10542
10543         * culture-info-table.h : regenerated.
10544
10545 2008-09-17  Robert Jordan  <robertj@gmx.net>
10546
10547         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10548         context bound objects. Fixes #415577.
10549
10550         Code is contributed under MIT/X11 license.
10551
10552 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10553
10554         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10555         implementation (bug #423582).
10556
10557 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10558
10559         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10560         is not set. Fixes #426309.
10561
10562 2008-09-16  Jb Evain  <jbevain@novell.com>
10563
10564         * class.c (mono_class_from_name): fix the exported type look up
10565         when the type is defined in a referenced assembly.
10566
10567 2008-09-16  Jb Evain  <jbevain@novell.com>
10568
10569         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10570         increment the next index counter on each iteration to make that work
10571         for more than one type forwarder. Unmanaged part to fix #422929.
10572
10573 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10574
10575         * object-internals.h: enum ComInterfaceType in
10576         MonoInterfaceTypeAttribute is guint32, not guint16.
10577
10578 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10579
10580         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10581         writing code.
10582
10583 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10584
10585         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10586         not gboolean.
10587
10588 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10589
10590         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10591         Endianness fixes for MonoSymbolFileOffsetTable.
10592
10593 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10594
10595         * process.c (complete_path) : Removing quotes from the 
10596           input path.  The glib file routines do not handle file paths
10597           that have quotes around them.
10598
10599         Code is contributed under MIT/X11 license.
10600
10601 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10602
10603         * socket-io.h : Adding a comment to provide locations where 
10604           changes to MonoSocketAsyncResult need to be synced.
10605
10606         Code is contributed under MIT/X11 license.
10607
10608 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10611         parameters as well. Fixes #425001.
10612
10613 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10614
10615         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10616         windows build.
10617
10618 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10619
10620         * console-io.c: Add support for tracking the window size if it
10621         changes.
10622
10623         The setup is very simple: the TtySetup function will now return a
10624         pointer to a location in memory that tracks the current console
10625         size.  The managed code checks its current value every time its
10626         queried against the last value set, and updates accordingly.
10627
10628         With this setup we can work with multiple consoles, and we do not
10629         require to poke into managed code from a signal handler.
10630
10631         Additionally, the environment for COLUMNS and LINES is now handled
10632         in unmanaged code.
10633
10634         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10635
10636 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10637
10638         * marshal.c (mono_type_native_stack_size): Treat
10639         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10640
10641 2008-09-04  Jb Evain  <jbevain@novell.com>
10642
10643         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10644         to nullables.
10645
10646 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10647
10648         * verify.c (verify_type_compatibility_full): Revert change
10649         to allow converting a native int to unmanaged pointer be verifiable
10650         under non-strict mode.
10651         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10652
10653         * verify.c: Added some TODOs.
10654
10655 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10656
10657         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10658           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10659           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10660
10661         Code is contributed under MIT/X11 license.
10662
10663 2008-09-02  Jb Evain  <jbevain@novell.com>
10664
10665         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10666
10667 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10668
10669         reflection.c (typebuilder_setup_fields): Handle classes with
10670         explicit size.
10671
10672 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10673
10674         class.c (mono_class_setup_events): Add memory barrier due to
10675         double checked locking.
10676         
10677         class.c (mono_class_setup_properties): Same.
10678
10679 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * class.c (mono_class_is_assignable_from): Fix the build.
10682         
10683         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10684         before accessing klass->interface_bitmap. Fixes #421744.
10685
10686 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10687
10688         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10689         the runtime into no-exec mode, useful when running the AOT compiler.
10690
10691         * appdomain.c gc.c object.c: Avoid executing managed code when running
10692         in no-exec mode.
10693         
10694         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10695
10696         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10697         special case when the mono_assembly_loaded () returns NULL because the 
10698         search hook is not installed.
10699
10700 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10703         crashes in bstr marshalling on linux.
10704
10705 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10706
10707         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10708         with more than one parameter.
10709
10710 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10711
10712         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10713         start/stop flow control as well when turning off ICANON (allows
10714         C-s and C-q to be read by Console.ReadKey).
10715
10716 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * class.c (mono_class_init): Move the initialization of nested classes
10719         into mono_class_get_nested_types (). Fixes #418433.
10720
10721         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10722         flag.
10723
10724         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10725         iterating tough the nested classes of a class.
10726
10727 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10728
10729         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10730         on arm.
10731
10732 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10733
10734         * console-io.c (sigcont_handler): Support signal chaining for
10735         SIGCONT.
10736
10737         (console_set_signal_handlers): Use best practices with sigaction,
10738         clear the structure before using it. 
10739
10740 2008-08-22  Robert Jordan  <robertj@gmx.net>
10741
10742         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10743         Fix the Windows build.
10744
10745 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10746
10747         * class.c (mono_class_generic_sharing_enabled): Make the default
10748         sharing mode 'corlib'.
10749
10750 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10751
10752         * console-io.c (console_set_signal_handlers): Fix a warning.
10753
10754         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10755         method normally, the JIT will take care of avoiding recursion.
10756
10757 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10758
10759         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10760
10761         Code is contributed under MIT/X11 license.
10762
10763 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10764
10765         * console-io.c (sigcont_handler): We need to restore the entire
10766         termios state, not only the original settings, as things like echo
10767         can be controlled after this (Booish exposes this issue with its
10768         own ReadLine implementation).
10769
10770         Additionally, we need to set the terminal back into keypad_xmit
10771         mode.
10772         
10773         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10774         string as a paramter as well.   Otherwise we get different
10775         keyboard sequences.
10776
10777 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10780         delegates with byref out parameter passing. Fixes #351520.
10781
10782         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10783         a generic context.
10784         (mono_type_get_desc): Add the type arguments for GENERICINST.
10785         (mono_method_full_name): Stringify the class name using mono_type_full_name
10786         so it picks up generic arguments.
10787
10788 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10789
10790         * console-io.c: Removed debug output.
10791
10792 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10793
10794         reflection.c (mono_reflection_create_runtime_class): Alloc
10795         the nested classes linked list using the dynamic image mempool.
10796         Fixes leak in corlib compilation.
10797
10798 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10799
10800         * console-io.c: Fix incredibly annoying behavior on the console
10801         after resuming execution after control-z.   This affected every
10802         console application.
10803
10804 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10805
10806         * mempool-internals.h: Header for mono private mempool functions. The first
10807         two function are for allocating glib linked lists using pools.
10808
10809         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10810
10811         * Makefile.am: Added mempool-internals.h.
10812
10813 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10814
10815         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10816         (mono_domain_free): Ditto.
10817
10818         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10819         be used by the JIT to store its domain-specific information, instead of putting
10820         it directly into MonoDomain.
10821
10822         * domain.c (mono_install_create_domain_hook): New helper function to install
10823         a hook which initializes domain->runtime_info.
10824
10825         * domain.c (mono_install_free_domain_hook): Ditto.
10826         
10827 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10828
10829         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10830         asserting if the ares parameter is null.
10831
10832         * mono-perfcounters.c: Fix warnings.
10833
10834         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10835         is not needed, don't check for interruptions either.
10836         (mono_marshal_get_delegate_end_invoke): Ditto.
10837
10838 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10839
10840         * mono-perfcounters.c (predef_readonly_counter): added support for
10841         reading the ASP.NET Requests Queued counter from another process.
10842
10843 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10844
10845         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10846         MonoImage to simplify the AOT code.
10847
10848 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10851         marshalling. Fixes #416078.
10852
10853 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10854         
10855         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10856         it is set, looking up the icall address is deferred to the JIT, since 
10857         in embedded scenarios, the icall might not be registered in the runtime
10858         doing the AOT compilation. Backported from the 2.0 branch.
10859
10860 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10863         Fixes #415621.
10864
10865 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10866
10867         * Makefile.am: added support for cross-compilation.
10868
10869 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10872
10873 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10874
10875         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10876
10877 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10878
10879         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10880         mono-perfcounters.c: performance counters implementation.
10881
10882 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10883
10884         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10885         to gpointer, letting the AOT code decide what to store in it.
10886
10887 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10888
10889         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10890           mono_class_setup_methods if the methods are not initialized.
10891
10892         Code is contributed under MIT/X11 license.
10893
10894 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10895
10896         * verify.c: Remove some debug code I commited by accident.
10897
10898         * verify.c (mono_method_is_valid_in_context): Change the return value
10899         to make possible to distinguish between invalid and unverifiable.
10900
10901         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10902         methods.
10903
10904 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10905
10906         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10907         constraints. Fixes regression in gtest-253.
10908
10909 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10910
10911         * verify.c (mono_verifier_verify_class): Don't allow generic types
10912         with explicit layout.
10913
10914         * verify.c (mono_method_verify): Check locals and argument types.
10915
10916 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10917
10918         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10919         wait if the thread is in StopRequested state.
10920
10921         * class.c (mono_class_from_name): Refactor the module searching code into
10922         a separate function so it can be reused in the AOT case too.
10923
10924 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10925
10926         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10927         Check both the type and it's generic type definition for loader errors.
10928         
10929         * verify.c (mono_method_is_valid_in_context): Don't generate another
10930         error when a type errors occur, this leads to the wrong exception been
10931         thrown.
10932
10933 2008-07-28  Dick Porter  <dick@ximian.com>
10934
10935         * icall-def.h
10936         * process.c
10937         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10938         New internal calls to duplicate and close a process handle.
10939
10940 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10941
10942         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10943
10944 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10945
10946         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10947
10948 2008-07-27  Robert Jordan  <robertj@gmx.net>
10949
10950         * class.c (mono_class_init): Don't compute class.has_finalize for
10951         valuetypes. Fixes #412477.
10952
10953 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10954
10955         * verify.c: Implement constraint equivalence checking.
10956         This is required when a generic parameter is used as
10957         argument to a constrained one.
10958
10959         Fixes #410637.
10960
10961 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10964
10965         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10966
10967         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10968         synch with managed object layout.
10969
10970 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10971
10972         * verify.c (do_branch_op): Handle valuetypes and generic
10973         arguments properly.
10974
10975         * verify.c (do_cmp_op): Same.
10976
10977         Fixes #410383.
10978
10979 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10980
10981         * generic-sharing.c: Fix memory leaks.
10982
10983         * class.c, class-internals.h: Make
10984         mono_class_inflate_generic_type_with_mempool() non-static.
10985
10986 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10987
10988         * pedump.c (dump_verify_info): Dump full class name.
10989
10990 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10991
10992         * generic-sharing.c: Removed some old code that didn't do anything.
10993
10994 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10995         * profiler.c: Added runtime_initialized_event,
10996         mono_profiler_install_runtime_initialized and
10997         mono_profiler_runtime_initialized. This new hook tells the profiler
10998         when the runtime is sufficiently initialized to be able to call
10999         mono_thread_attach on the root appdomain.
11000         * profiler.h, profiler-private.h: Likewise.
11001
11002 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
11003
11004         * verify.c (do_cast): Do boxing for generic arguments as well.
11005
11006         * class.c (is_nesting_type): Drop generic instantiations before
11007         checking for nesting.
11008
11009         * class.c (can_access_instantiation): Allow access to generic
11010         arguments.
11011
11012 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
11013
11014         * verify.c (verify_class_for_overlapping_reference_fields):
11015         On some cases, the field size might be zero, guard against that.
11016         Fix the explicit layout check to work as expected.
11017
11018 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
11021         mono_thread_resume () during shutdown, since the thread we want to abort
11022         might be suspended.
11023
11024 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11025
11026         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
11027         warning.
11028
11029         * debug-mono-symfile.c: Fix a warning.
11030
11031         * mono-perfcounters.c (get_cpu_times): Fix a warning.
11032
11033         * object.c (mono_class_vtable): Check if exception_type is set, and return
11034         NULL as defined by the function comments.
11035
11036 2008-07-22  Mark Probst  <mark.probst@gmail.com>
11037
11038         * mempool.c: Use malloc for every single mempool allocation if the
11039         configure option is set.  This makes it easier to track mempool
11040         allocations with tools like Valgrind.
11041
11042 2008-07-22  Jb Evain  <jbevain@novell.com>
11043
11044         * reflection.c (create_dynamic_mono_image): emit the same
11045         metadata version that SL2 does when creating a SL2 image.
11046
11047 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
11048
11049         * icall-def.h:
11050         * icall.c: New icall System.Enum:get_hashcode. This function
11051         avoids the overhead of boxing the enum to the underlying type.
11052
11053 2008-07-21  Mark Probst  <mark.probst@gmail.com>
11054
11055         * reflection.c (mono_method_get_object): Don't let static RGCTX
11056         invoke wrappers get into MonoReflectionMethods.
11057
11058 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
11059
11060         * object-internals.h:
11061         * object.c: New mono_runtime_class_init_full function
11062         that makes throwing the exception optinal.
11063
11064         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
11065         for the case where the exception object is supplied.
11066
11067 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
11068
11069         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
11070         old ld versions.
11071
11072         Contributed under MIT/X11 license.
11073
11074 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11075
11076         * string-icalls.c (ves_icall_System_String_InternalSplit):
11077         Optimize array allocation by caching the MonoClass of the
11078         array type.
11079
11080         * icall.c (ves_icall_Type_GetMethodsByName): Same.
11081
11082         * reflection.c (mono_param_get_objects): Same.
11083
11084 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11085
11086         * icall-def.h:
11087         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
11088         It inflates the given type using the class context.
11089
11090 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
11091
11092         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
11093         the vtable if it already exists.
11094
11095         * object-internals.h: Add mono_class_try_get_vtable as part of the
11096         internal API.
11097
11098         * reflection.c (mono_type_get_object): Use the MonoObject from the
11099         vtable when possible. Reduces locking contention on reflection heavy
11100         code.
11101
11102 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
11103
11104         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
11105         g_bit_nth_msf () since that macro is not implemented in eglib.
11106
11107 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
11110         on platforms which do not support it.
11111
11112 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
11115
11116 2008-07-11  Martin Baulig  <martin@ximian.com>
11117
11118         * mono-debug-debugger.h
11119         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
11120
11121         * mono-debug-debugger.c
11122         (_mono_debugger_interruption_request): New global volatile variable.
11123         (mono_debugger_check_interruption): New public function.
11124
11125         * threads.c
11126         (mono_thread_current_check_pending_interrupt): Call
11127         mono_debugger_check_interruption().
11128         (mono_thread_interruption_checkpoint_request): Likewise.
11129
11130 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11131
11132         * verify.c: Add more type checks for loaded types. Verify the result
11133         handle from ldtoken.
11134
11135 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11136
11137         * loader.c (field_from_memberref): Don't crash if the field
11138         wasn't found.
11139
11140 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11141
11142         * verify.c: Verify if type and method instantiations
11143         don't have invalid VAR or MVAR arguments.
11144
11145 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11146
11147         * verify.c: Fix double free of function pointer list.
11148
11149 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11150
11151         * object.c (mono_string_to_utf8): Comment the new code as it
11152         breaks under eglib.
11153
11154 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
11155
11156         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
11157
11158 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11159
11160         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
11161           is not throw too many times.
11162
11163         Code is contributed under MIT/X11 license.
11164
11165 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
11168         debugging is turned off.
11169
11170 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11171
11172         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
11173
11174 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11175
11176         * class-internals.h, class.c: Added new generic sharing option:
11177         Share only stuff in System.Collections.Generic, which is now the
11178         default.
11179
11180 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11181
11182         * generic-sharing.c, class-internals.h: New function for getting a
11183         generic method in a generic class given the corresponding method
11184         for a different instantiation of the class.  Partly refactored
11185         from mini-trampolines.c.
11186
11187         * class.c: Make sure generic methods have a class_inst if they are
11188         part of a generic class.
11189
11190         * metadata.c (mono_type_stack_size_internal): Handle type
11191         variables.
11192
11193 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11194
11195         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
11196         Signifies whether information on the this/vtable/mrgctx variable
11197         is available.
11198
11199 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11200
11201         * object.c, object-internals.h, icall.c: New function
11202         mono_delegate_ctor_with_method(), which does the same as
11203         mono_delegate_ctor(), but takes an explicit method argument
11204         instead of taking the method from the jit info.
11205
11206         * marshal.c: When creating a delegate with an inflated method take
11207         the "this" argument as the target class for the castclass.
11208
11209 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11210
11211         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
11212         mono_jit_info_table_find() to perform very badly in some cases.
11213
11214 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * icall.c (type_from_typename): Handle 'string'.
11217
11218         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
11219         wrappers into the wrapper_hash, since the key is not a MonoMethod.
11220
11221 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11222
11223         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
11224
11225         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
11226         number of available managed allocator types.
11227
11228         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11229         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11230
11231 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11234         which is a low level lock protecting just the 'jit_code_hash' hash table.
11235
11236         * domain.c: Initialize+cleanup jit_code_hash_lock.
11237         
11238 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11239
11240         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11241         after initialization.
11242
11243         * coree.h: Make MonoFixupExe internal.
11244
11245         Contributed under MIT/X11 license.
11246
11247 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11248
11249         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11250         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11251         as well.
11252         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11253         image being loaded is a CLI image and _CorValidateImage gets called.
11254
11255         * coree.h: Add MonoLoadImage.
11256
11257         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11258         instead of LoadLibrary.
11259
11260         Contributed under MIT/X11 license.
11261
11262 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11263
11264         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11265         for any primitive type.
11266
11267 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11268
11269         * object.c (mono_array_new_specific): Optimize this and the other allocation
11270         functions a bit.
11271         
11272         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11273         domains too if mono_dont_free_domains is set.
11274
11275         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11276         whenever to free appdomain data after it has been unloaded.
11277
11278         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11279         
11280 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11283         (mono_method_get_equivalent_method): Fix a warning.
11284
11285         * object.c (mono_message_init): Avoid looking up array types for each call.
11286
11287 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11288
11289         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11290         call.
11291
11292         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11293         even more.
11294
11295         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11296         each iteration.
11297
11298         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11299         fields of an enum.
11300
11301 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11302
11303         * object.c (mono_value_box): Fix boxing of nullables.
11304
11305 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11306
11307         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11308         mono_module_handle that is defined by the linker; no initialization required.
11309         * coree.h: Remove mono_module_handle, add __ImageBase, update
11310         mono_image_open_from_module_handle.
11311         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11312         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11313         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11314         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11315         to 4 GB away from image base address. IA64 version is not tested but was very
11316         easy to implement and should work if we ever need it.
11317         * domain.c (mono_init_internal): Avoid system error message boxes.
11318         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11319         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11320         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11321         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11322         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11323
11324         Contributed under MIT/X11 license.
11325
11326 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11327
11328         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11329         as part of the private mono API.
11330         
11331         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11332         Do proper argument checking for methods that belong to generic classes.
11333         Do proper type resolution for GMFH/2.
11334         Fixes #377324.
11335         
11336 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11337
11338         * verify.c (do_switch): Fix a memory corruption bug with
11339         the jump index is out of bound.
11340
11341 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11342
11343         * verify.c: Disable debug code.
11344
11345 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11346
11347         * reflection.c (mono_image_get_methodbuilder_token): Use
11348         mono_image_get_methodspec_token_for_generic_method_definition
11349         instead of mono_image_get_memberref_token. We cache more memberef
11350         entries now.
11351
11352 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11353
11354         * verify.c: Inflate exception clause types.
11355         Fixes #402606.
11356         
11357 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11358
11359         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11360         name.
11361
11362         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11363
11364         * reflection.c (mono_image_create_method_token): Same.
11365
11366 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11367
11368         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11369         It does the same as mono_image_get_methodref_token but works on
11370         MethodBuilder.
11371
11372         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11373         and always generate a methodspec. This follows the old behavior and fixes
11374         the regressions in System.Core. 
11375
11376 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11377
11378         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11379         don't event mono_class_get () succeeds. Fixes #402182.
11380
11381 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11382
11383         * metadata-internals.h: Added MonoDynamicImage::methodspec
11384         hashtable to store methodspec tokens created for MethodBuilders.
11385
11386         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11387         MethodBuilders as open instantiations if a methodspec was requested.
11388
11389         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11390
11391         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11392
11393         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11394
11395         Fixes bug #349190.
11396
11397 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11398
11399         * loader.c (method_from_methodspec): Avoid crashing if the
11400         method lookup fails.
11401
11402 2008-06-20  Dick Porter  <dick@ximian.com>
11403
11404         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11405         classes being in a different assembly.  Fixes bug 399184.
11406
11407 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11408
11409         * loader.c (mono_loader_init): Make this callable multiple times.
11410         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11411         the runtime is initialized. Fixes #401755.
11412
11413 2008-06-19  Dick Porter  <dick@ximian.com>
11414
11415         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11416         Fixes bug 349688.
11417
11418 2008-06-19  Dick Porter  <dick@ximian.com>
11419
11420         * socket-io.c:
11421         * icall-def.h: Implement Socket generic Send() and Receive()
11422         methods.  Fixes bug 395168.
11423
11424 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11425
11426         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11427
11428         Contributed under MIT/X11 license.
11429
11430 2008-06-18  Martin Baulig  <martin@ximian.com>
11431
11432         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11433         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11434         set to 80.0.  The debugger <-> runtime interface is now frozen as
11435         well.   
11436
11437         * mono-debug.c
11438         (mono_debug_debugger_version): Bump to 4.
11439
11440 2008-06-18  Martin Baulig  <martin@ximian.com>
11441
11442         * debug-mono-symfile.c
11443         (load_symfile): Don't check the minor version.
11444
11445         * debug-mono-symfile.h: Bump the version number to 50.0.
11446
11447 2008-06-18  Martin Baulig  <martin@ximian.com>
11448
11449         * debug-mono-symfile.c
11450         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11451         minimum required version.
11452
11453 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11454
11455         * reflection.c (mono_custom_attrs_from_property): Fix support for
11456         retriveving cattrs of dynamic inflated generic types.
11457
11458         * reflection.c (mono_custom_attrs_from_event): Same.
11459
11460         * reflection.c (mono_custom_attrs_from_field): Same;
11461
11462         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11463
11464         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11465         Moved to metadata.c.
11466
11467         * metadata.c: New functions to retrive the equivalent field, event
11468         of property from the generic type definition.
11469
11470         * metadata-internals.h: Added new functions from metadata.c.
11471
11472 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11473
11474         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11475         to cached in a mempool is used.
11476
11477         * metadata.c (free_generic_class): In some situations field generic_info type
11478         is not properly dup'ed and leads to double free'ing.
11479
11480         Fixes #400643.
11481
11482 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11483
11484         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11485         this arguments (will be needed later for generic methods).
11486         Collect stats.
11487
11488 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11489
11490         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11491         Create a static RGCTX invoke wrapper for methods which require it.
11492
11493 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11494
11495         * object.c, class-internals.h: New function for checking whether
11496         an individual field is special static.
11497
11498 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11499
11500         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11501         linear search since the table is sorted.
11502
11503         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11504         Fixes #324180.
11505
11506 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11507
11508         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11509         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11510
11511         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11512
11513         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11514         
11515         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11516         InterlockedCompareExchange to query and modify 
11517         thread->interruption_requested.
11518
11519         * object-internals.h (struct _MonoThread): Change interruption_requested
11520         to a gint32 so it can be modified by atomic operations. Add 
11521         'critical_region_level' from the managed side, change small_id to a guint32,
11522         add new set of 'unused' fields.
11523
11524         * appdomain.c: Bump corlib version.
11525
11526 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11527
11528         * class.c (mono_class_from_name): Search modules as well. Fixes
11529         #322332.
11530
11531 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11532
11533         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11534         templates.  Templates are generalized with an additional type_argc
11535         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11536         have type_argc>0.
11537
11538         * domain-internals.h, domain.c: New hash table for looking up
11539         MRGCTXs.
11540
11541         * metadata.c, metadata-internals.h: Rename hash and equal
11542         functions for MonoGenericInst's and make them public.
11543
11544         * class-internals.h: New data structures for the MRGCTX.  Macros
11545         for distinguishing slots in the RGCTX and the MRGCTX.
11546
11547 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11548
11549         * object.c (mono_method_get_imt_slot): Put the same methods of
11550         different instantiations of the same generic interface in the same
11551         IMT slots, to make generic sharing simpler.
11552
11553 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11554
11555         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11556
11557         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11558         This function works just like mono_metadata_field_info, but
11559         accept a mempool as argument to be used allocating memory.
11560
11561         * marshal.c (mono_marshal_load_type_info): Use new function
11562         to load marshal data into image mempool.
11563
11564 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11565
11566         * class.c (mono_class_inflate_generic_type_with_mempool):
11567         This function allows to inflate a generic type using
11568         a mempool.
11569
11570         * class.c (inflate_generic_type): Take a mempool as argument
11571         and use it to do type dup'ing.
11572
11573         * class.c (mono_class_setup_fields): Field type for generic
11574         generic classes are allocated from the image mempool.
11575
11576         * metadata.c (free_generic_class): Inflated field type is
11577         now allocated in the image mempool.
11578
11579 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11580
11581         * threads.c (thread_cleanup): Free MonoThread::name.
11582
11583 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11584
11585         * appdomain.c (ensure_directory_exists): avoid unnecessary
11586         mkdir(2) calls when the shadow directory already exists.
11587         (mono_make_shadow_copy): copy also satellite assemblies from the
11588         private bin directories.
11589
11590 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11591
11592         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11593         
11594         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11595         a page boundary. Fixes #396219.
11596
11597 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11598
11599         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11600         due to double-checked locking.
11601
11602 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11603
11604         * assembly.c (build_assembly_name): Release memory on failure.
11605
11606         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11607
11608 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11609
11610         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11611         memory on failure.
11612
11613 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11614
11615         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11616         memory on failure.
11617
11618 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11619
11620         * loader.c (field_from_memberref): Check if field signature type is equal
11621         to the non-inflated type of the field. Fixes #398980.
11622
11623 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11624
11625         * assembly.c (mono_assembly_load_from_full): Call 
11626         mono_assembly_load_friends () outside the assemblies lock, since it can
11627         acquire the loader lock. Fixes #323696.
11628
11629         * reflection.c (resolve_object): Inflate the inst with the context for
11630         FieldOnTypeBuilderInst. Fixes #399010.
11631
11632 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11633
11634         * reflection.c (mono_image_get_field_on_inst_token): Don't
11635         inflate the field to encode it's signature. If it's a
11636         VAR or MVAR it should stay that way in the signature.
11637         Fixes #399047.
11638
11639 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11640
11641         * reflection.c (resolve_object): Release memory of inflated types.
11642
11643 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11644
11645         * loader.c (mono_method_get_signature_full): Remove assert about
11646         loading a methodspec to a generic method. We have such methods, such as
11647         System.Threading.Interlocked::CompareExchange<T>.
11648         This assert was removed since it crashes the verifier when it checks
11649         methods calling CompareExchange<T>.
11650
11651 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11652
11653         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11654         of Type array and not MonoType.
11655
11656 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11657
11658         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11659         <lupus@ximian.com>
11660
11661 2008-06-10  Martin Baulig  <martin@ximian.com>
11662
11663         * debug-mono-symfile.h
11664         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11665         changes to the file format, but we were generating incorrect
11666         source file indices in the line number table due to a bug, which
11667         made backtraces report an incorrect source file.
11668
11669 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11670
11671         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11672         mini/debug-mini.c to here.
11673
11674         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11675
11676         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11677         use it to release structs returned by mono_debug_find_method.
11678
11679 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11680
11681         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11682         since it needs to set method->slot for all interface methods.
11683
11684 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11685
11686         * class-internals.h: Forgot to add.
11687
11688 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11689
11690         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11691
11692         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11693         Lookup the custom attributes from property_hash.
11694
11695         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11696         in property_hash. Allocate all data using the image mempool.
11697
11698         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11699         for dynamic_custom_attrs to checks if the image is dynamic.
11700
11701 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11702
11703         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11704         assemblies array.
11705         
11706         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11707         runtime functions while holding the domain assemblies lock.
11708
11709 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11710
11711         * verify.c: Reapplied the last bit of the reverted changes.
11712
11713 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11714
11715         * verify.c: Reapplied more of the reverted changes.
11716
11717 2008-06-09  Martin Baulig  <martin@ximian.com>
11718
11719         * debug-mono-symfile.c (load_symfile): Check the major version
11720         first; if it's wrong, don't print the minor version in the error message.
11721
11722 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11723
11724         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11725         lock instead of the domain lock to avoid deadlocks, since the thread might
11726         already hold the loader lock.
11727
11728         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11729         (mono_thread_attach): Ditto.
11730
11731         * monitor.c: Use a TLS variable for holding the current thread id instead
11732         of calling pthread_self ().
11733         (mono_monitor_init_tls): New internal function to initialize the TLS
11734         variable.
11735         (mono_monitor_try_enter_internal): Put the owner == id check after the
11736         owner == 0 check.
11737
11738         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11739         missed optimizations when using gcc-4.3.
11740
11741 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11742
11743         * reflection.c (mono_dynamic_image_free): Free the memory
11744         used by MonoGenericParam in MonoDynamicImage::gen_param.
11745
11746         * reflection.c (mono_reflection_setup_generic_class): Allocate
11747         container from mempool.
11748
11749         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11750         container from mempool.
11751
11752 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11753
11754         * threads.c (mono_set_pending_exception): New internal function to set the
11755         pending exception of the current thread.
11756         (mono_thread_get_and_clear_pending_exception): Check for 
11757         thread->pending_exception as well.
11758
11759         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11760
11761         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11762         it can trigger a collection.
11763
11764 2008-06-06  Martin Baulig  <martin@ximian.com>
11765
11766         Merged the `debugger-kahalo' branch.
11767
11768         * mono-debug.h
11769         (MONO_DEBUGGER_VERSION): Bumped to 72.
11770
11771         * debug-mono-symfile.h
11772         (MonoSymbolFileMethodIndexEntry): Removed.
11773         (MonoSymbolFileMethodEntry): New public typedef.
11774         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11775         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11776         `data_offset'.
11777         (MonoSymbolFileMethodEntry): Removed.
11778         (MonoSymbolFileLexicalBlockEntry): Removed.
11779         (MonoSymbolFileLineNumberEntry): Removed.
11780         (MonoDebugLexicalBlockEntry): Removed.
11781         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11782         removed `num_il_offsets' and `il_offsets'.
11783         (MonoSymbolFile): Replace `version' with `major_version' and
11784         `minor_version'.
11785         (MONO_SYMBOL_FILE_VERSION): Replace with
11786         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11787         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11788
11789         * debug-mono-symfile.c
11790         (mono_debug_symfile_lookup_location): Add support for the new line
11791         number table format.
11792
11793 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11794
11795         * metadata.c (free_generic_class): Release the inflated
11796         MonoClass of dynamic generic classes if it's not a generic
11797         type definition.
11798
11799 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11800
11801         * verify.c: Reapplied more of the reverted changes.
11802
11803 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11804
11805         * reflection.c (lookup_custom_attr): Clean the cached flag or
11806         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11807         for SRE types.
11808
11809 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11810
11811         * verify.c: Reapplied a small part of the reverted changes.
11812
11813 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11816
11817         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11818         previously in managed code.
11819         (mono_monitor_exit): Ditto.
11820         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11821
11822         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11823         the managed definition.
11824
11825 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11826
11827         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11828
11829 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11830
11831         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11832         
11833         * monitor.c: Add some micro optimizations.
11834
11835         * icall.c (type_from_typename): Handle 'bool'.
11836
11837 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11838
11839         * verify.c: Implement constructor verification per P III 1.8.1.4.
11840         Fixes #396716.
11841
11842 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11843
11844         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11845         holding the assemblies lock here too.
11846
11847 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11848
11849         * verify.c: Kill stack_top function.
11850
11851 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11852
11853         * verify.c: Kill stack_get function.
11854
11855 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11856
11857         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11858
11859 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11860
11861         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11862         more reliable.
11863
11864         * verify.c (mono_method_verify): Inflate params and locals to avoid
11865         mismatch when checking for compatibility.
11866
11867 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11868
11869         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11870         Length prefix should be size in bytes. Fix bug #339530.
11871         
11872         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11873         Length prefix should be size in bytes. Fix bug #339530.
11874
11875         Code is contributed under MIT/X11 license.
11876
11877 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11878
11879         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11880
11881         Contributed under MIT/X11 license.
11882
11883 2008-06-05  Martin Baulig  <martin@ximian.com>
11884
11885         * mono-debug-debugger.c
11886         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11887
11888 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11889
11890         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11891         while holding the assemblies lock to prevent deadlocks. Handle the case
11892         where the search hook returns NULL but the assembly was still loaded.
11893         Fixes #323696.
11894
11895         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11896         modify domain state.
11897
11898 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11899
11900         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11901         * Makefile.am (pedump_LDADD): Post-process object files and
11902         add dtrace-generated object file, if necessary.
11903
11904         Code is contributed under MIT/X11 license.
11905
11906 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11907
11908         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11909
11910 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11911
11912         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11913
11914 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11915
11916         * threads.c: Try to free everything from the delayed free table
11917         when shutting down threads, and set the variable to NULL after the
11918         table is freed so that calling
11919         mono_thread_hazardous_try_free_all() when shutting down the root
11920         domain doesn't crash.
11921
11922 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11923
11924         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11925         the caller if resulting type was inflated.
11926
11927         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11928         was inflated.
11929
11930         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11931
11932
11933 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11936         class library tests.
11937
11938         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11939         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11940         #396989.
11941
11942 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11943
11944         * domain.c, domain-internals.h: The JIT infos are now freed by the
11945         JIT info table code.  They are freed immediately if there only a
11946         single JIT info table in circulation.  If there is more, the free
11947         is delayed via a queue.
11948
11949         * threads.c, threads-types.h: New hazard pointer function for
11950         freeing all freeable delayed items in one sitting.
11951
11952 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11953
11954         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11955
11956         * reflection.c (typebuilder_setup_properties): Same.
11957
11958         * reflection.c (typebuilder_setup_events): Same.
11959
11960 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11961
11962         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11963         and use it for allocating memory.
11964
11965         * reflection.c (mono_marshal_spec_from_builder): Same.
11966
11967         * reflection.c: Change code to use new signatures.
11968
11969         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11970
11971 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11972
11973         * decimal.c (rescale128): Put back one line which was accidently commented
11974         out.
11975         
11976         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11977         to cause crashes.
11978
11979 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11980
11981         * reflection.c (mono_reflection_generic_class_initialize): Name must
11982         be always malloc'ed so we can free it later on. Do this for field, property
11983         and event.
11984
11985         * metadata.c (free_generic_class): Free field, property and event names.
11986
11987 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11988
11989         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11990         instead of g_memdup.
11991
11992         * reflection.c (typebuilder_setup_fields): Same.
11993
11994 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * decimal.c (rescale128): Optimize this function a bit more.
11997
11998 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11999
12000         * metadata.c (free_generic_class): Release some memory from
12001         SRE generic classes.
12002
12003 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
12004
12005         * reflection.c (mono_image_get_generic_field_token): No reference
12006         to name is kept, free it.
12007
12008         * reflection.c (mono_reflection_generic_class_initialize): Free
12009         more memory of the inflated field.
12010
12011 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12012
12013         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
12014         code.
12015
12016 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
12017
12018         * reflection.c (mono_dynamic_image_free): Release memory used by
12019         MonoDynamicImage::array_methods elements.
12020
12021         * reflection.c (assembly_add_win32_resources): Release memory after
12022         encoding.
12023
12024 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * decimal.c (log2_32): Use an optimized version for this function too.
12027         
12028         * decimal.c (log2_64): Fix this on 32 bit machines.
12029
12030 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
12031
12032         * class.c (mono_dup_array_type): Implement allocation using a mempool.
12033
12034         * class.c (mono_metadata_signature_deep_dup): Same.
12035
12036         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
12037         a mempool.
12038
12039         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
12040
12041         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
12042
12043         * metadata-internals.h: Added mono_metadata_signature_dup_full.
12044
12045         * class-internals.h: Update signatures to take a MonoMemPool.
12046
12047 2008-06-02  Dick Porter  <dick@ximian.com>
12048
12049         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
12050         * icall-def.h: Add
12051         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
12052         FormatMessage API to get the error text.  Fixes bug 321827.
12053
12054 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
12055
12056         * decimal.c: Add some micro optimizations to make decimal operations faster.
12057
12058 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
12059
12060         * reflection.c (method_encode_clauses): Take a mempool
12061         as parameter and use it to allocate the clause array.
12062
12063         * reflection.c (mono_image_get_field_on_inst_token): Free
12064         the inflated type after encoding it.
12065
12066         * reflection.c (mono_dynamic_image_free): Free each element
12067         of MonoDynamicImage::gen_params.
12068
12069         * reflection.c (reflection_methodbuilder_to_mono_method):
12070         Allocate the generic param array from the mempool.
12071         Allocate signature params from the mempool.
12072
12073         * reflection.c (mono_reflection_generic_class_initialize):
12074         Free inflated fields after been used.
12075
12076 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12077
12078         * icall.c: Reapply the memory leak fixes as they no
12079         longer make mono crash.
12080
12081 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12082
12083         * reflection.c (mono_type_get_object): Don't store the suplied
12084         MonoType with type_hash. A caller which pass a type that
12085         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
12086         might end with a pointer to freed memory.
12087         The solution is to use byval_arg or this_arg from the associated
12088         MonoClass of the supplied type.
12089
12090 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * icall.c: Revert the rest of the last change as it breaks the build too.
12093
12094 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12095
12096         * icall.c: Revert a leak fix as it's breaking the build.
12097
12098 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12099
12100         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
12101
12102 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12103
12104         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
12105
12106 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12107
12108         * icall.c: Fix some memory leaks.
12109
12110 2008-05-29  Dick Porter  <dick@ximian.com>
12111
12112         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
12113         async socket operations from the pending list when a socket
12114         closes.  Leaving it until the threadpool services the event
12115         exposes a race condition when a socket descriptor is reused.
12116         Fixes bug 377589.
12117
12118 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12119
12120         * object.c: Fix negative index check for array alocation.
12121
12122 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12123
12124         * icall.c, marshal.c: Delegate wrappers should skip visibility.
12125         This check is performed by the verifier for IL created delegates
12126         and by Delegate::CreateDelegate for programatically created ones.
12127         Fixes #372406.
12128
12129 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12130
12131         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
12132         Fix code to use mono_array_size_t instead of int.
12133
12134         Based on patch by Luis F. Ortiz.
12135         Contributed under X11 license.
12136         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12137
12138 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12139
12140         * icall.c: Added ves_icall_System_Array_GetLongLength and
12141         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
12142         arrays.
12143
12144         * icall.h: Export both new functions.
12145
12146         Based on patch by Luis F. Ortiz.
12147         Contributed under X11 license.
12148         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12149
12150 2008-05-28  Martin Baulig  <martin@ximian.com>
12151
12152         The debugger now requires exactly r103463.
12153
12154         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
12155         This version is not supported by the debugger, wait for 72.
12156
12157 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12158
12159         * object.h: Changed array related functions to use
12160         mono_array_size_t instead of guint32. Forgot to commit this file.
12161
12162         Patch by Luis F. Ortiz.
12163         Contributed under X11 license.
12164         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12165
12166
12167 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12168
12169         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
12170         don't define it. Use the number literal instead.
12171
12172 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12173
12174         * icall.c: Changed array related functions to use
12175         mono_array_size_t instead of guint32.
12176
12177         * icall.c (ves_icall_System_Array_GetLength): Check for length
12178         overflow under MONO_BIG_ARRAYS.
12179
12180         Based on patch by Luis F. Ortiz.
12181         Contributed under X11 license.
12182         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12183
12184 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12185
12186         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
12187
12188         Based on patch by Luis F. Ortiz.
12189         Contributed under X11 license.
12190         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12191
12192 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12193
12194         * object.c, object.h: Changed array related functions to use
12195         mono_array_size_t instead of guint32.
12196
12197         Patch by Luis F. Ortiz.
12198         Contributed under X11 license.
12199         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12200
12201 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12202
12203         * object.h: Introduced mono_array_size_t typedef. This must be used
12204         in all places an array length is expected. This is 64bits wide if
12205         MONO_BIG_ARRAYS is enabled.
12206
12207         Patch by Luis F. Ortiz.
12208         Contributed under X11 license.
12209         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12210
12211 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12212
12213         * security-manager.c class.c: Set the class exception info by calling
12214         mono_class_set_failure ().
12215
12216         * class.c (mono_class_get_exception_data): New accessor function.
12217         (mono_class_set_failure): Store exception_data in the property hash.
12218
12219         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
12220         the struct as a property.
12221
12222         * loader.c (mono_get_method_full): Store the lookup result for method
12223         tokens in method_cache, the others in methodref_cache to decrease the memory
12224         usage of hash tables.
12225
12226         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
12227         (mono_image_init): method_cache is lazy inited now.
12228
12229         * metadata-internals.h (struct _MonoImage): Change method_cache to
12230         a MonoValueHashTable, add a separate methodref_cache.
12231
12232 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12233
12234         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12235           Double.ToString as exposed by Bug #383531.
12236
12237 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12238
12239         * number-formatter.h: Make some tables static.
12240
12241         * class.c (mono_method_set_generic_container): New accessor function.
12242         (mono_method_get_generic_container): Ditto.
12243
12244         * class-internals.h (struct _MonoMethod): Remove rarely used 
12245         'generic_container' field, store it in the property hash instead. Add 
12246         'is_generic' boolean field instead.
12247
12248         * image.c (mono_image_init): Initialize property_hash.
12249         (mono_image_close): Destroy property_hash.
12250
12251         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12252         hold rarely used fields of runtime structures belonging to this image.
12253
12254         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12255         to get/set method->generic_container.
12256
12257         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12258         generic methods.
12259
12260 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * class.c (mono_class_inflate_generic_method_full): Don't increase
12263         mono_stats.inflated_method_count for methods found in the cache.
12264
12265         * threads.c (mono_thread_request_interruption): Add a comment about 
12266         QueueUserAPC ().
12267
12268 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12269
12270         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12271         interface_offsets_packed table.
12272         
12273         * class.c (mono_class_init): Remove some dead code.
12274
12275         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12276         mono_class_setup_vtable () when CAS is active to detect security problems.
12277
12278 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12279
12280         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12281
12282         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12283         parameters as it's irrelevant for delegate checking.
12284
12285 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12288
12289         * class.c (mono_class_init): Control the creation of a generic vtable using
12290         a global which is true by default, but set to false by the runtime startup code.
12291         
12292         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12293         Disabled for now since it breaks the embedding API.
12294         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12295         (mono_class_setup_methods): Add a memory barrier.
12296
12297         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12298         when mono_class_init () doesn't compute the generic vtable.
12299         
12300 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12301         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12302         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12303         to support call chains (backtrace) in the stat profiler.
12304         * profiler.c, profiler-private.h: Likewise.
12305
12306 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12307
12308         * generic-sharing.c: Init generic class when a method of it is
12309         requested via a runtime generic context.
12310
12311 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12312
12313         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12314
12315         * reflection.c (mono_type_get_object): Add a FIXME.
12316
12317         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12318
12319         * class.c (mono_class_get_method_by_index): New helper function, returning an
12320         entry in the class->methods array.
12321
12322 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12325         Avoid creating a generic vtable for generic instances as well.
12326         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12327         generic instances.
12328
12329 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12330
12331         * loader.c (mono_get_method_constrained): Inflate the signature
12332         with class context. Fix #325283.
12333
12334 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * object.c (mono_class_create_runtime_vtable): Add a comment.
12337
12338         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12339         where needed.
12340         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12341         (mono_class_setup_vtable_general): Add an assert.
12342         (mono_class_init): Avoid creating a generic vtable for arrays.
12343
12344         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12345         here, let mono_class_init () do that.
12346
12347         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12348         interfaces in mscorlib.
12349
12350         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12351         interfaces. Add some comments.
12352         (mono_class_init): Call mono_class_setup_methods () here since it is no
12353         longer called by mono_class_setup_vtable ().
12354
12355         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12356         not set in class->vtable.
12357         (mono_class_create_runtime_vtable): Reenable the disabled code.
12358
12359         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12360         now as it causes some test failures.
12361
12362         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12363         if using the vtable trampoline. Also remove some strange code which put the
12364         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12365         stuff as it is no longer needed.
12366
12367 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12368
12369         * pedump.c: Give make --verify all option check code as well.
12370         Using --verify code won't check for metadata now.
12371
12372 2008-05-19  Martin Baulig  <martin@ximian.com>
12373
12374         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12375
12376         * mono-debug.c
12377         (_mono_debug_using_mono_debugger): New global variable; it's set
12378         directly by the debugger, so mono_debug_using_mono_debugger() also
12379         works after attaching.
12380
12381 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12382
12383         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12384         as we do double checked locking on MonoClass::runtime_info and
12385         MonoClassRuntimeInfo::domain_vtables.
12386
12387 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * debug-helpers.c (print_field_value): Fix a warning.
12390
12391 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12392
12393         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12394         set in the AOT case.
12395
12396 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12397
12398         * class.c (mono_class_setup_vtable_general): Use memory barriers
12399         as we do double checked locking on MonoClass::vtable.
12400
12401 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12402
12403         * reflection.c (resolve_object): Inflate only if the generic context
12404         is not null. Fixes #389886.
12405
12406 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12407
12408         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12409         instead of g_free.
12410
12411         Code is contributed under MIT/X11 license.
12412
12413 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12414
12415         * class.c: Revert unrelated change.
12416
12417 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12418
12419         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12420         a generic instantiation, use mono_class_from_mono_type instead of playing
12421         with MonoType directly.
12422
12423 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12424
12425         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12426         checks must ignore generic instantiations, so mono_class_has_parent is not
12427         suitable. Fixes #390128.
12428
12429 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12432         it to avoid registering tokens during metadata generation. Fixes #390023.
12433
12434 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12435
12436         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12437         consistent.
12438
12439         Contributed under MIT/X11 license.
12440
12441 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12442
12443         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12444         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12445         to fixup the EXE image.
12446         (mono_cleanup): Use mono_close_exe_image.
12447         (mono_close_exe_image): New function.
12448         * image.c: Include "marshal.h".
12449         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12450         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12451         counting when the image is loaded outside of mono_image_open_full. Set status
12452         based on GetLastError.
12453         * coree.c: Include required headers. Add init_from_coree.
12454         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12455         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12456         (_CorExeMain): Set init_from_coree.
12457         (CorExitProcess): Only call ExitProcess for now.
12458         (CorBindToRuntimeEx): New stub implementation.
12459         (CorBindToRuntime): New function.
12460         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12461         (MonoFixupExe): ILONLY executables require no fixups.
12462         (mono_set_act_ctx): New function to set activation context.
12463         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12464         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12465         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12466         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12467         as MONO_INTERNAL.
12468         * domain-internals.h: Add mono_close_exe_image.
12469
12470         Contributed under MIT/X11 license.
12471
12472 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12473
12474         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12475         size for generic param and event tables. Fixes #388977.
12476
12477 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12478
12479         * loader.c (mono_method_signature): Use memory barriers because of the double
12480         checked locking pattern.
12481
12482         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12483         aborting or aborted as well. Fixes #376391.
12484         
12485         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12486         existing runtime state in the Suspend handler during shutdown.
12487
12488 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12489
12490         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12491
12492         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12493         which are starting up or shutting down.
12494
12495         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12496         this function never returns if the runtime is already shutting down.
12497
12498         * icall.c (ves_icall_System_Environment_Exit): Update after 
12499         mono_threads_set_shutting_down () signature change.
12500         
12501 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12502
12503         * class.c: Added can_access_instantiation to verify if the instantiation
12504         is visible. Fix access check for nested types as they returned TRUE
12505         before doing type and generic instantiation visibility checks.
12506
12507 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12508
12509         * reflection.c (mono_reflection_create_generic_class): The created type
12510         must have a different container from its TypeBuilder. Otherwise they
12511         will end sharing generic arguments, which is wrong.
12512
12513         Due to the sharing, making a generic instance of the created type using
12514         the TypeBuider generic arguments resulted in the generic type definition
12515         been returned, which is wrong as well.
12516
12517         As a bonus the code was leaking the type_params array. This memory should
12518         be allocated from the image mempool.
12519
12520         This fixes bug #354047.
12521
12522 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12523
12524         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12525         to here         as they are now used in assembly.c new code.
12526         Added a skipverification flag to MonoAssembly.
12527         New internal function mono_assembly_has_skip_verification.
12528
12529         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12530         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12531         part of #387274.
12532
12533 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12534
12535         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12536         needed. Fixes #387034.
12537
12538         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12539
12540 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12541
12542         * assembly.c (mono_assembly_load_reference): Prevent crash while
12543         disassembling Silverlight 2.0 executables while we still do not
12544         have GACed libraries.
12545
12546 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12547
12548         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12549
12550 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12551
12552         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12553         of the dynamic case. Fixes #387404.
12554
12555 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12556
12557         *verify.c (mono_verifier_is_class_full_trust): If under
12558         verify_all and the verifier mode was not set, only
12559         gac and corlib types are fulltrust. This makes --verify-all
12560         usable to detect unverifiable code, which is the expected
12561         use case.
12562
12563 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12564
12565         * verify.h: Ops, commited the header with debug
12566         enabled.
12567
12568 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12569
12570         * verify.c (merge_stack): Use the new value on unverifiable
12571         stack merges.
12572
12573         * verify.c (verify_type_compatibility_full): Comparison
12574         of nullable types can't use mono_class_is_assignable_from.
12575
12576         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12577         that makes all verification errors be reported.
12578
12579         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12580         mono_method_verify.
12581
12582 2008-05-05  Robert Jordan  <robertj@gmx.net>
12583
12584         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12585         support for value types. See #386415.
12586
12587         * object.c: comments.
12588
12589         Code is contributed under MIT/X11 license.
12590
12591 2008-05-05  Martin Baulig  <martin@ximian.com>
12592
12593         * debug-mono-symfile.h
12594         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12595         for old pre-terrania symbol files.
12596
12597 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12598
12599         * mono-config.c: Add ppc64 architecture.
12600
12601         Code is contributed under MIT/X11 license.
12602
12603 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12604
12605         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12606           PPC64 uses function descriptors as well.
12607
12608         Code is contributed under MIT/X11 license.
12609
12610 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * object.c (compute_class_bitmap): Ignore literal static fields.
12613
12614         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12615         var has an invalid format.
12616         (describe_ptr): Add some sanity checks for the vtable.
12617         (add_nursery_frag): Clear unused nursery fragments.
12618         (major_collection): Clear all remaining nursery fragments.
12619
12620 2008-05-03  Robert Jordan  <robertj@gmx.net>
12621
12622         * image.c, metadata-internals.h: add thunk_invoke_cache.
12623
12624         * marshal.c, marshal.h: implement
12625         mono_marshal_get_thunk_invoke_wrapper ().
12626
12627         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12628
12629         Code is contributed under MIT/X11 license.
12630
12631 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12632
12633         * verify.c (do_leave): Empty the stack.
12634
12635 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12636
12637         * class.c (mono_class_is_assignable_from): Variance
12638         doesn't work between reference and value types. For example,
12639         given type C<T+>, C<int32> is not assignable to C<object>.
12640         Break the argument checking loop on first error. 
12641
12642 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12643
12644         * icall.c : base64_to_byte_array() needs some more strict
12645           check for sequence of '=' characters. Patch by Santa
12646           Marta (http://deee.g.hatena.ne.jp/santamarta).
12647
12648           Contributed under MIT/X11 license.
12649           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12650
12651 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12652
12653         * domain.c: Disable LoadLibrary support to fix Win32 build.
12654
12655         Code is contributed under MIT/X11 license.
12656
12657 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12658
12659         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12660         to help with cache behaviour.
12661
12662 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12663
12664         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12665         method. 
12666
12667 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12668
12669         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12670
12671 2008-05-01  Dick Porter  <dick@ximian.com>
12672
12673         * process.c (process_get_fileversion): Only pass 16 bits of
12674         language ID to VerLanguageName.  Fixes bug 381204.
12675
12676 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12677
12678         * verify.c (mono_method_verify): Fix the comparison
12679         operator for code bounds check.
12680
12681 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12682
12683         * verify.c (mono_method_verify): Check the bounds of
12684         all access of the code array.
12685
12686 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12687
12688         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12689
12690 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12691
12692         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12693         not valid.
12694
12695 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12696
12697         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12698         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12699         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12700         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12701         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12702         mono_runtime_load.
12703         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12704         runtime initialization from metadata.
12705         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12706         (mono_set_rootdir): Use mono_get_module_file_name.
12707         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12708         handles.
12709         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12710         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12711         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12712         MonoCLIImageInfo. Add support for module handles.
12713         (load_cli_header): Update mono_cli_rva_image_map signature.
12714         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12715         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12716         (mono_image_rva_map): Add support for module handles.
12717         (mono_image_ensure_section_idx): Add support for module handles.
12718         (mono_image_close): Add support for module handles.
12719         (do_load_header): Add support for module handles.
12720         (mono_image_open_from_module_handle): New function for internal use.
12721         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12722         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12723         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12724         handles.
12725         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12726         * image.h: Add mono_image_fixup_vtable.
12727         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12728         support.
12729         * coree.h: New file.
12730         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12731         unsupported native code.
12732         (mono_marshal_set_callconv_from_modopt): New function splitted from
12733         mono_marshal_get_managed_wrapper.
12734         (mono_marshal_get_managed_wrapper): Use
12735         mono_marshal_set_callconv_from_modopt.
12736         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12737         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12738         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12739         that results in a deadlock when the runtime is loaded in _CorDllMain.
12740         * Makefile.am: Add coree.c and coree.h.
12741
12742         Contributed under MIT/X11 license.
12743
12744 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12745
12746         * generic-sharing.c: Search for type arguments in array element
12747         types as well.
12748
12749 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12750
12751         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12752
12753         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12754
12755         * object.c: Don't setup the RGCTX when the vtable is created,
12756         because we're setting it up lazily now.
12757
12758 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12759
12760         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12761         64 bit support.
12762
12763 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12764
12765         * verify.c (verify_class_for_overlapping_reference_fields): 
12766         If class is under fulltrust allow reference types to overllap
12767         if they have the same RVA.
12768
12769 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12770
12771         * pedump.c: Added new flag valid-only, that makes the verifier
12772         behaves just like --security=validil. It won't fail type load
12773         due to unverifiable restrictions.
12774
12775 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12776
12777         * class-internals.h (struct MonoMethod): Added a verification_success
12778         field to cache verifier executions. Reduced MonoMethod:slot size by
12779         one bit.
12780
12781 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12782
12783         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12784         instead of a 'vt' argument to save an indirection and to allow these to be used
12785         for valuetypes.
12786         (scan_vtype): New helper function to scan an area using a gc descriptor.
12787         (mono_gc_wbarrier_value_copy): Implement this.
12788         (handle_remset): Add support for REMSET_VTYPE.
12789         (find_in_remset_loc): Ditto.
12790         (mono_gc_base_init): Allow some debugging options to be controlled through the
12791         use of the MONO_GC_DEBUG env variable.
12792         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12793         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12794
12795 2008-04-23  Martin Baulig  <martin@ximian.com>
12796
12797         * domain.c (mono_domain_create): Move the call to
12798         mono_debug_domain_create() down, after allocating the domain id.
12799
12800 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12801
12802         verify.c (verify_class_for_overlapping_reference_fields): Skip
12803         static fields while verifying for overlapping fields as they
12804         don't matter at all.
12805
12806 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12807
12808         * domain-internals.h: added a declaration of
12809         mono_make_shadow_copy.
12810
12811         * assembly.c (mono_assembly_open_full): shadow copying of
12812         assemblies moved to here, so that all the assemblies within the
12813         application domain's private binary directories can be
12814         processed. Fixes bug #380546
12815
12816         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12817         mono_make_shadow_copy and made non-static. The decision whether
12818         to shadow-copy an assembly is made based on its location - it's
12819         copied if it's in one of the private application domain binary
12820         directories and its different to the target file in the shadow
12821         directory. Fixes bug #380546
12822
12823 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12824
12825         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12826
12827         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12828         types.
12829
12830         * reflection.c (mono_image_create_token): Handle 
12831         Method/ConstructorOnTypeBuilderInst.
12832         (resolve_object): Ditto.
12833         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12834         so it can be called from resolve_object. Also handle the case when the inflated
12835         class already has its methods setup.
12836
12837 2008-04-21  Martin Baulig  <martin@ximian.com>
12838
12839         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12840
12841 2008-04-20  Geoff Norton  <gnorton@novell.com>
12842
12843         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12844         pointer dereference.
12845
12846 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12847
12848         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12849         portability API to look up the assembly file. Fixes behavior in
12850         situations when the application has a bin/ directory, but the
12851         assembly search patch refers to Bin/ (and thus the requested file
12852         name is Bin/SomeLibrary.dll). Fixes bug #379888
12853
12854 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12855
12856         verify.c (mono_type_is_generic_argument): Extracted this check
12857         from a dozen places to here.
12858
12859         verify.c: Fixed all issues related to boxing generic arguments
12860         and their constraints.
12861
12862 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12863
12864         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12865
12866 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12867
12868         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12869         isn't finished yet. Fixes #363447.
12870
12871 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12874         Fixes #346419.
12875
12876 2008-04-13  Jb Evain  <jbevain@novell.com>
12877
12878         * domain.c: update the 2.1 profile versions.
12879         Merged from the Moonlight 2 branch.
12880
12881 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12882
12883         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12884         mscorlibs for the non-refonly case as well.
12885
12886         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12887         in mono_assembly_load_from_full (). Fixes #378924.
12888
12889 2008-04-11  Geoff Norton  <gnorton@novell.com>
12890
12891         * icall.c: The global extern environ doesn't exist on Mac.  We
12892         need to call NSGetEnviron instead.
12893
12894 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12895
12896         verify.c: Add generic method constraint verification.
12897
12898 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12899
12900         class.c (mono_class_inflate_generic_method_full): Add a long
12901         explanation to the is_mb_open hack. Remove the FIXME.
12902
12903 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12904
12905         * verify.c (mono_method_verify): Mark all unknown opcodes
12906         as invalid. Mark jmp as unverifiable.
12907
12908 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12909
12910         * verify.c: Add code to do type constraint verification on class instances.
12911
12912         * verify.c (mono_verifier_verify_class): Use the type constraint 
12913         verification code.
12914
12915 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12916
12917         * class.c (mono_class_get_field_default_value): Don't pass cindex
12918         as hint to mono_metadata_get_constant_index. The local is not initialized
12919         and should contain garbage most of the time. This could only work
12920         with a lot of luck.
12921
12922 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12923
12924         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12925
12926 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12927
12928         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12929
12930         * class.c (mono_class_from_generic_parameter): Save the token of the
12931         generic param in MonoClass::sizes.generic_param_token.
12932
12933         * reflection.c (mono_custom_attrs_from_class): If the class type is
12934         VAR or MVAR retrieve the attributes of the generic param.
12935
12936 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12937
12938         * class.c (mono_class_init): Do class verification if the verifier
12939         is enabled.
12940
12941 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12942
12943         * verify-internal.h: Added mono_verifier_verify_class.
12944
12945         * verify.c: Added mono_verifier_verify_class. It checks for
12946         classes with explicit layout that have overlapping reference fields.
12947
12948         * pedump.c: Init the verifier state prior to verification. Fixed
12949         command line arguments.
12950
12951 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12952
12953         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12954
12955 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12956
12957         * verify-internals.h: Fix a warning.
12958
12959 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12960
12961         * verify-internals.h: New header with the verifier configuration
12962         extracted from mini.c.
12963
12964         * verify.c: Implemented the new functions exported by verify-internals.h.
12965
12966 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12967
12968         * verify.c: Add proper verification of ckfinite.
12969
12970 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12971
12972         * verify.c (do_conversion): Improved error message to something
12973         more meanfull.
12974
12975         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12976         with primitive types.
12977
12978 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12979
12980         * verify.c: Added tail prefix checking. Marked icall
12981         as unverifible.
12982
12983 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12984
12985         * verify.c: Fix the detection of branches to the middle
12986         of an instruction.
12987
12988 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12989
12990         * verify.c: Implemented verification of volatile. and
12991         unaligned. prefix. Check if a type is valid after retrieving it.
12992
12993 2008-04-01  Dick Porter  <dick@ximian.com>
12994
12995         * process.c (process_get_fileversion): If there's no string block,
12996         set the file language to en_US.  Fixes the other new part of bug
12997         374600.
12998
12999 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
13000
13001         * class.c: New functions mono_method_can_access_field_full and
13002         mono_method_can_access_method_full. They perform type visibility
13003         and type site check.
13004
13005         * class-internal.h: Added exported functions.
13006
13007         * verify.c: Use new functions to implement proper visibility checks.
13008
13009 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
13010
13011         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
13012
13013 2008-03-28  Dick Porter  <dick@ximian.com>
13014
13015         * process.c (process_get_fileversion): Use the first language ID
13016         we see, rather than insisting on an invariant language.  Fixes bug
13017         374600.
13018
13019 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
13020
13021         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
13022         the streams to fix reading of invalid memory later.
13023
13024         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
13025         to ease debugging.
13026
13027 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13028
13029         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
13030         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
13031
13032 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
13033         * threads.h: Added MonoThreadManageCallback type and
13034         mono_thread_set_manage_callback prototype
13035         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
13036         (used to store the mono_thread_manage callback).
13037         * threads.c: Added mono_thread_set_manage_callback, and handle
13038         "MonoThread->manage_callback" in build_wait_tids.
13039
13040 2008-03-26  Dick Porter  <dick@ximian.com>
13041
13042         * process.c (process_get_fileversion): Set FileVersionInfo strings
13043         to Empty when the resource doesn't have the particular info.
13044         Fixes bug 355717.
13045
13046 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
13047
13048         * verify.c (mono_method_verify): Proper prefix validation.
13049
13050 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13051
13052         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
13053         itself in a separate argument instead of throwing them. Fixes #373448.
13054
13055         * appdomain.c: Bump corlib version.
13056
13057 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
13058
13059         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
13060
13061 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
13062
13063         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
13064         version macros.
13065
13066 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13067
13068         * generic-sharing.c, class-internals.h: Code for putting
13069         reflection types into the runtime generic context.
13070
13071 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
13072
13073         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
13074         Fixes #340662. 
13075
13076
13077 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
13078
13079         * verify.c (VerifyContext): Added instruction prefix data to the struct.
13080
13081         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
13082
13083         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
13084
13085         * verify.c (do_cast): Let the result value keep the boxed status.
13086
13087         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
13088
13089 2008-03-17  Jb Evain  <jbevain@novell.com>
13090
13091         * reflection.c: when running on a 2.0 runtime, emit
13092         unconditionally the #~ header version as 2.0, and the
13093         CLI header version as 2.5, for symmetry's sake with csc.
13094
13095 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * class.c: Remove the unused cache_interface_offsets stuff.
13098
13099         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
13100         profiler.c: Fix warnings.
13101
13102 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13103
13104         * generic-sharing.c, class-internals.h: Support for putting
13105         methods into the runtime generic context.
13106
13107 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13108
13109         * class.c (mono_class_setup_fields): Ignore calls made to this function for
13110         classes which are generic instances of not-yet finished typebuilders. Fixes
13111         #351172.
13112
13113         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
13114
13115 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
13116
13117         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
13118
13119         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
13120         field, replace it with a hash table in MonoDynamicImage.
13121
13122         * reflection.c (inflate_mono_method): Access the generic definition object from
13123         image->generic_def_objects instead of imethod->reflection_info.
13124
13125         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
13126
13127         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
13128         
13129         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
13130         function in reflection.c so it is easier to keep in sync with the dynamic image
13131         creation code.
13132
13133         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
13134         mono_image_close ().
13135
13136 2008-03-15  Mark Probst  <mark.probst@gmail.com>
13137
13138         * class.c (mono_class_generic_sharing_enabled): Disable generic
13139         sharing for all architectures except AMD64 and x86 to fix build.
13140
13141 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13142
13143         * verify.c: Use the generic definition MonoGenericContext when available.
13144         Remove code for checking generics instance compatibility in favor of
13145         mono_class_is_assignable_from.
13146
13147 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13148
13149         * marshal.c, marshal.h, metadata-internals.h, image.c,
13150         wrapper-types.h: New wrapper for invoking a shared static method
13151         without having to pass the runtime generic context argument.
13152
13153 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13154
13155         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
13156
13157 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13158
13159         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
13160         
13161         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
13162         create a token from a FieldOnTypeBuilderInst.
13163         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
13164         (resolve_object): Ditto.
13165
13166         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
13167         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
13168
13169 2008-03-14  Martin Baulig  <martin@ximian.com>
13170
13171         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
13172
13173         * debug-mono-symfile.h
13174         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
13175         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
13176
13177 2008-03-10  Martin Baulig  <martin@ximian.com>
13178
13179         * debug-mono-symfile.h
13180         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
13181         `lexical_block_table_offset'.
13182         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
13183         `lexical_blocks'.
13184         (MonoSymbolFile): Added `version'.
13185
13186         * mono-debug.h
13187         (MonoDebugLexicalBlockEntry): Removed.
13188         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
13189         `lexical_blocks'.
13190
13191         * mono-debug.c (mono_debug_add_method): Don't compute lexical
13192         blocks here; the debugger now does this internally.
13193
13194 2008-02-27  Martin Baulig  <martin@ximian.com>
13195
13196         * object.c (mono_runtime_exec_main): Call
13197         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
13198         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
13199
13200 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13201
13202         * verify.c (verify_type_compatibility_full): Allow native int to be converted
13203         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
13204
13205 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13206
13207         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
13208         ldftn with a virtual method.
13209
13210 2008-03-13  Geoff Norton  <gnorton@novell.com>
13211
13212         * decimal.c:  Only include memory.h if the platform has it.
13213
13214 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
13215
13216         * assembly.c, class.c, metadata-internals.h: make sure public key
13217         tokesns are compared in a case-insensitive way. Also, all
13218         the lookups in the GAC use a lowercase public key token
13219         (gaacutil already does the lowercasing on install). Fixes
13220         bug #369541.
13221
13222 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
13223
13224         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
13225         and return value.
13226
13227 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13228
13229         * image.c: when someone loads a mscorlib from a file, return the
13230         currently loaded mscorlib (fixes bug #369253).
13231
13232 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13233
13234         * class.c: handle types with no parents by forcing them to have
13235         System.Object as a parent and marking them as broken (this currently
13236         allows the first part of bug #369173 to work as well, likely because
13237         we don't check for typeload exceptions everywhere yet).
13238
13239 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13240
13241         * class.c: more complete check that types belong to corlib
13242         (fixes second part of bug #369173).
13243
13244 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13245
13246         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13247           "inline" to "__inline" before including mono-membar.h.
13248           
13249         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13250           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13251           MSVC builds.
13252
13253         Contributed under MIT/X11 license.
13254
13255 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13256
13257         * verify.c (do_invoke_method): Remove return type validation.
13258
13259         * verify.c (do_ret): Do return type validation at return site instead of
13260         call site.
13261
13262 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13263
13264         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13265
13266         * verify.c: Some todos cleaned and improved a few error messages.
13267
13268 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13271
13272 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13273
13274         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13275         system types correctly.
13276
13277         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13278         function.
13279
13280 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * assembly.c (build_assembly_name): Fix a warning.
13283
13284 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13285
13286         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13287         the called function takes an object type argument. Fixes storing or
13288         valuetypes across remoting as well as reducing memory usage.
13289         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13290         stfld_remote wrapper caches.
13291
13292 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13295         is not found.
13296
13297         * reflection.c (mono_image_register_token): New helper function to save
13298         a token->object mapping.        
13299
13300         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13301         managed code.
13302
13303         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13304         one dimension arrays. Fixes #367670.
13305         (mono_reflection_get_type_internal): Ditto.
13306
13307 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13308
13309         * marshal.c: mono_load_remote_field_new() always returns object.
13310         so use the proper signature (fixes bug #366445).
13311
13312 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13313         
13314         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13315         add an 'inline_failure' flag instead.
13316
13317 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13318
13319         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13320         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13321         contains the location of "this", used for exception handling.
13322
13323 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13324
13325         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13326         their size on all platforms for perf reasons.
13327
13328 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13329
13330         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13331         object-internal.h
13332
13333         * object-internal.h: Same.
13334
13335 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13336
13337         * reflection.h: Fix the build I just broke.
13338
13339 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13340
13341         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13342         Test if a token is valid, this remove explicit usage of 
13343         MonoDynamicImage::tokens from the verifier code.
13344
13345         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13346
13347         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13348         instead of direct access to MonoDynamicImage::tokens.
13349
13350 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13351
13352         * verify.c (token_bounds_check): Fix the build I just broke.
13353
13354 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13355
13356         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13357
13358         * verify.c (verifier_load_method): Fixed the errors message.
13359
13360         * verify.c (mono_method_verify): Fixed a debug message.
13361
13362 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13363
13364         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13365         mono-perfcounters.h, class-internals.h: support for predefined
13366         writable counters, query of categories and counters, bugfixes.
13367
13368 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13369
13370         * verify.c (do_refanytype): Verify the refanytype opcode.
13371
13372         * verify.c (mono_method_verify): Use do_refanytype.
13373
13374 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13375
13376         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13377
13378         * verify.c (mono_method_verify): Use do_mkrefany.
13379
13380 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13381
13382         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13383         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13384         implementation.
13385
13386 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13389         the type load exception.
13390
13391 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13392
13393         * verify.c: Added a few FIXME for method signatures
13394
13395         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13396         of mono_method_get_signature and get vararg call working. Removed unused
13397         checks for return value.
13398
13399         * verify.c (do_refanyval): Verify the refanyval opcode.
13400
13401         * verify.c (mono_method_verify): Implemented verification of arglist and
13402         use do_refanyval.
13403
13404 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13405
13406         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13407         vtypes to marshal.c.
13408
13409         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13410         it works for AOT as well.
13411
13412 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13413
13414         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13415         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13416         the system time is adjusted.
13417
13418 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13419
13420         * icall.c, icall-def.h: use the new time functions (fixes the
13421         non-monotonic behaviour of TickCount).
13422
13423 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13426         it breaks the build.
13427         
13428         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13429         cattr is not finished yet.
13430
13431 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13432
13433         * verify.c: Proper token validation for field, method and type.
13434
13435 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13436
13437         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13438
13439         * loader.c (method_from_memberref): Generate type load error instead of method missing
13440         if the type is not found.
13441
13442 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13445         some of the conversions caused the generation of a marshal directive exception.
13446
13447 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13448
13449         verify.c: Report which exception should be thrown by the JIT.
13450         Added a lot of FIXME notes.
13451
13452 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13453
13454         * generic-sharing.c: Runtime generic context slots are not
13455         instantiated on init anymore.  Instead, provide function to do the
13456         instantiating on demand.
13457
13458         * class-internals.h: Added vtable to runtime generic context.
13459         Macros for encoding direct and indirect slot offsets in one
13460         guint32.
13461
13462 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13463
13464         * object.c, generic-sharing.c: Moved some generic sharing code
13465         from object.c to generic-sharing.c.
13466
13467         * generic-sharing.c: Added support for extensible runtime generic
13468         context.
13469
13470         * metadata-internals.h: Two new hash tables in MonoImage for
13471         extensible runtime generic context support.
13472
13473         * domain.c: Unregister generic vtables upon domain unloading.
13474
13475         * image.c: Destroy new hash tables upon image unloading.
13476
13477         * metadata.c: Unregister generic subclasses upon image unloading.
13478
13479         * class-internals.h: New data structure for runtime generic
13480         context template.  New fields in the runtime generic context for
13481         extensible part.
13482
13483         * Makefile.am: Added generic-sharing.c.
13484
13485 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13486
13487         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13488         there is a pending loader exception, raise it.
13489
13490         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13491         same.
13492
13493         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13494         same.
13495
13496         Fixes #363450.
13497
13498 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13499
13500         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13501
13502         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13503         
13504         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13505         ref-only requests for compatibility with MS.
13506
13507 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13508
13509         * reflection.c (mono_custom_attrs_from_method): Don't silently
13510         return an empty list for generic method instances.
13511         (mono_custom_attrs_from_param): Likewise.
13512
13513 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13514             Raja R Harinath  <harinath@hurrynot.org>
13515
13516         Fix #354757
13517         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13518         * class.c (mono_class_inflate_generic_method_full): Initialize it
13519         when a fully-open method is instantiated.
13520         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13521         to new field.
13522         * reflection.c (inflate_mono_method): Don't create a temporary context.
13523
13524 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13525
13526         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13527         Compute correct value, to prepare for imethod->reflection_info going away.
13528
13529 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13530
13531         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13532
13533 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13534
13535         * verify.c: Implement skip visibility flag.
13536
13537 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13538
13539         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13540         which contains an extra field to tell the kind of exception that should be thrown.
13541
13542         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13543
13544 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13545
13546         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13547         'method' is updated.
13548
13549 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13550
13551         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13552         explicit layout as well. Fixes #360375.
13553
13554 2008-02-11  Geoff Norton  <gnorton@novell.com>
13555
13556         * loader.c: Guard and dereference against inflated generic methods
13557
13558 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13559
13560         * class.c: Include Retargetable spec in assembly name.
13561         * assembly.c: Always include PublicKeyToken spec in assembly name
13562         (with value "null" if assembly is not signed), and include
13563         Retargetable spec.
13564         * icall-def.h: Added icall for Assembly.get_fullname.
13565         * icall.c: Added icall returning the fullname of an assembly.
13566
13567 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13568
13569         * class.c (mono_class_setup_vtable_general): Add a missing call to
13570         mono_class_setup_methods () which is needed in the AOT case.
13571
13572 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13573
13574         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13575         stack type of the given MonoType.
13576
13577         * verify.c (verify_type_compatibility_full): Handle the void type.
13578
13579         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13580         way stack merging works.
13581
13582         * verify.c (store_local): Improved verification message.
13583
13584         * verify.c (do_branch_op): If the merging is invalid, the method
13585         is unverifiable and not invalid. Improved error message.
13586
13587         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13588         a reference type diferent than System.Object. Improved error
13589         message.
13590
13591 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13592
13593         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13594
13595         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13596         type of an enum even if the argument is byref.
13597
13598         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13599         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13600
13601         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13602
13603         *verify.c (verify_type_compatibility_full): Make enum types
13604         compatible with their base types.
13605
13606         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13607         types are compatible for the special case of a boxed valuetype and
13608         System.Object.
13609
13610         * verify.c (verify_stack_type_compatibility): The function
13611         is_compatible_boxed_valuetype was extracted from here.
13612
13613         * verify.c (push_arg): Only set ctx->has_this_store if the method
13614         is not static.
13615
13616         * verify.c (do_ldelem): Fixed a typo in an error message and added
13617         strict check for mixing int32 and native int as the array type
13618         and ldelem type.
13619
13620         * verify.c (merge_stacks): Consider boxed valuetypes in the
13621         compatibility checks.
13622
13623 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13624         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13625
13626 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13627         *class.c: use_new_interface_vtable_code: renamed the env var to have
13628         a "MONO_" prefix, and fix the logic to enable it by default.
13629
13630 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13631         *class.c:
13632         mono_class_setup_vtable_general: rewrote the way in which interface
13633         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13634         makes the code more maintainable.
13635         For now the old code is still there, and can be activated setting
13636         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13637
13638 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13639
13640         * verify.c: guarded some debug functions around and #ifdef.
13641
13642         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13643
13644 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13645
13646         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13647         changes for now since they seem to break too many things.
13648
13649 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13650
13651         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13652         mono_marshal_find_nonzero_bit_offset): Added macro and function
13653         for finding the byte- and bit-offset of a bitfield within a
13654         struct.
13655
13656 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13659         (mono_marshal_get_struct_to_ptr): Ditto.
13660
13661         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13662         cctor_signature.
13663
13664 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13665
13666         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13667         between methods for non-corlib types.
13668
13669 2008-02-02  Geoff Norton  <gnorton@novell.com>
13670
13671         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13672         generic parameters as well. (Fixes #342536)
13673
13674 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13675
13676         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13677
13678         * verify.c (do_invoke_method): Fix for calling with byref structs.
13679
13680         * verify.c (do_cast): push a boxed value type based on the type token and not
13681         the type of stack.
13682
13683 2008-01-31  William Holmes  <billholmes54@gmail.com>
13684
13685         * process.c (process_module_string_read): Check the size returned form 
13686           VerQueryValue to avoid out of memory exception. 
13687
13688 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13691         Handle properly modules which are not in the moduleref table. Fixes
13692         #356938.
13693
13694 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13695
13696         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13697         the dynamic case which is now in managed code.
13698         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13699
13700         * marshal.c (mono_string_to_bstr): Fix a warning.
13701         (init_com_provider_ms): Ditto.
13702
13703         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13704
13705         * exception.c (mono_get_exception_out_of_memory): New helper function.
13706
13707 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13708
13709         * marshal.c: Add support for BSTR marshalling
13710         using other COM systems.
13711
13712         Code is contributed under MIT/X11 license.
13713
13714 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13715
13716         * object.c (mono_runtime_invoke_array): reverted previous
13717         commit as it breaks the build.
13718
13719 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13720
13721         * object.c (mono_runtime_invoke_array): Verify arguments for
13722         invalid types. Fixes #348522.
13723
13724 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13725
13726         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13727         non-final virtual calls using call. 
13728
13729         * verify.c (do_invoke): fixed some TODOs.
13730
13731         * verify.c (push_arg): set has_this_store for "ldarga 0".
13732
13733 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13736         which belong to an inflated class. Fixes #356531.
13737
13738 2008-01-26  Robert Jordan  <robertj@gmx.net>
13739
13740         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13741         which resort to FindFirstFile when a certain error condition
13742         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13743         Code is contributed under MIT/X11 license.
13744
13745 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13746
13747         * marshal.c (emit_marshal_string): Fix out string marshalling
13748         to use specified encoding. Fixes #323900.
13749
13750         Code is contributed under MIT/X11 license.
13751
13752 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13753
13754         * class.c (mono_class_inflate_generic_method_full): Don't modify
13755         iresult->context after cache check.
13756
13757 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * class.c (mono_class_inflate_generic_method_full): Change the
13760         struct assignments to memcpy for better visibility and add some comments.
13761
13762 2008-01-23  Dick Porter  <dick@ximian.com>
13763
13764         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13765         procedure, and make it work on windows.
13766
13767 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13768
13769         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13770         a MonoReflectionTypeBuilder since it is always of that type.
13771
13772         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13773
13774         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13775
13776         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13777         
13778         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13779
13780         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13781
13782         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13783         instantiations from the type cache.
13784
13785 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13786
13787         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13788
13789         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13790
13791 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13792
13793         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13794
13795         * verify.c (mono_method_verify): removed old TODO
13796
13797 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13798
13799         * verify.c (do_newobj): add visibility check.
13800
13801 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13802
13803         * verify.c (do_load_function_ptr): add visibility check.
13804
13805 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13806         *class.c:
13807         mono_generic_class_get_class: hook profiler events.
13808         mono_field_get_offset: added to support heap-shot in the new profiler.
13809         *class.h: exported mono_field_get_offset.
13810         * reflection.c:
13811         mono_reflection_setup_internal_class: hook profiler events.
13812
13813 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13814
13815         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13816         argument here too and use it to avoid checking for pending exceptions if 
13817         possible.
13818
13819 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13820
13821         * assembly.c (build_assembly_name): add arg for passing the assembly
13822         flags. Do not consider a PublicKey with value "null" valid.
13823         (mono_assembly_name_parse_full): added boolean argument that will be
13824         set if the assembly name contains a PublicKeyToken spec. Added support
13825         for the Retargetable spec for which only Yes or No are allowed as valid
13826         value. Consider assembly name invalid if Retargetable spec is set, but
13827         either version, culture or public key (token) are not specified.
13828         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13829         with implementation in assembly.c.
13830         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13831         from MonoAssemblyName.
13832         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13833         introduced argument for mono_assembly_name_parse_full to know if the
13834         assembly name has a PublicKeyToken spec, and if it has instruct
13835         fill_reflection_assembly_name to use default value for keyToken (if
13836         PublicKeyToken is null).
13837
13838 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13839
13840         * verify.c (mono_method_verify): fixed ovf ops with
13841         float values. They are unverifiable now.
13842
13843 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13844
13845         * class.c (set_failure_from_loader_error): add BadImageException to the
13846         list of exceptions that can cause a type to fail to load.
13847
13848         * class.c (mono_class_get_exception_for_failure): same.
13849
13850 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13851
13852         * verify.c (in_any_exception_block): added, check if offset
13853         is part of any exception handling clause.
13854
13855         * verify.c (get_stack_type): added VAR and MVAR types.
13856
13857         * verify.c (do_stobj): better error messages.
13858
13859         * verify.c (do_cpobj): added, check cpobj.
13860
13861         * verify.c (do_initobj): added, check initobj.
13862
13863         * verify.c (do_sizeof): added, check sizeof.
13864
13865         * verify.c (do_localloc): added, check localloc.
13866
13867         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13868
13869 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13872         save_lmf/restore_lmf opcodes.
13873
13874         * threads.c (mono_threads_install_notify_pending_exc): New function to
13875         install a callback notifying the JIT there is a pending exception on a thread.
13876         (mono_thread_request_interruption): Call the new callback.
13877         (mono_thread_get_and_clear_pending_exception): New function to return the
13878         exception pending on a thread.
13879
13880         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13881         to turn off checking for pending exceptions.
13882         (mono_marshal_get_native_wrapper): Ditto.
13883
13884 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13885
13886         * threads-types.h: Get rid of the unnecessary extern declarations.
13887
13888 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13889
13890         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13891         return field from parent class if not private.
13892         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13893         returns fields from parent class if they are not private.
13894         (method_nonpublic): added function to determine if a given method
13895         should be considered non-public. Returns false for private methods
13896         on parent class, and internal methods from parent on the 1.0 profile.
13897         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13898         use method_nonpublic function to determine whether method should be
13899         returned.
13900         (property_accessor_public): use newly introduced method_nonpublic
13901         function to determine whether accessor is non-public. 
13902         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13903         event from parent class if not private. Only return static event if
13904         Static flag is set, and only return static event from parent class if
13905         FlattenHierarchy flag is set.
13906         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13907         include non-private events from parent class.
13908
13909 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13910
13911         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13912         warning.
13913
13914 2008-01-16  Wade Berrier <wberrier@novell.com>
13915
13916         * security.c: Add assembly.h header to appease some warnings
13917
13918 2008-01-16  Dick Porter  <dick@ximian.com>
13919
13920         * process.c (process_module_string_read): Remove trailing null
13921         when saving string.
13922
13923 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13924
13925         * class-internals.h: A new data structure describing the layout of
13926         a runtime generic context (MonoRuntimeGenericContextTemplate).
13927
13928         * metadata-internals.h: Added a hash table to MonoDomain that maps
13929         from open generic classes to their runtime generic context
13930         templates.
13931
13932         * object.c: Building of the runtime generic context, including
13933         proper handling of generic type arguments of superclasses.
13934         Building of the runtime generic context according to the template.
13935
13936 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13939         Fixes #350856.
13940
13941         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13942         mono_portability_find_file (). Fixes #325466.
13943         (mono_image_get_public_key): Fix a warning.
13944
13945 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13948         Fixes #353550.
13949         (mono_class_from_name_case): Ditto.
13950
13951 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13952
13953         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13954           common storage for the tables used in the System/NumberFormatter class.
13955
13956 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13959
13960 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13961
13962         * verify.c (get_boxable_mono_type): check if the token is valid.
13963
13964         * verify.c (set_stack_value): changed to add an error if an
13965         invalid type is set on stack. Changed all callers due to signature change.
13966
13967         * verify.c (do_stobj): implement stobj validation.
13968
13969 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13970
13971         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13972         set container->is_method, it was set earlier.
13973
13974         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13975         generic methods.
13976
13977         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13978         is_method of the generic container to TRUE for methods.
13979
13980 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13981
13982         * metadata.c (type_in_image): Handle type parameters properly.
13983
13984         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13985         memory ownership of this structure.
13986
13987 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13988
13989         * verify.c (get_boxable_mono_type): make typedref types been just
13990         unverifiable. check for void type.
13991
13992         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13993
13994         * verify.c (do_load_function_ptr): accept method spec tokens.
13995
13996 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13997
13998         * marshal.c (mono_class_native_size): Always set *align even if this is called
13999         recursively.
14000
14001 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
14002
14003         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
14004         out-of-date.
14005
14006 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
14007
14008         * verify.c: removed some old unused tables. A huge bunch of small fixes
14009         to things found while testing the verifier with mono basic.
14010
14011         * verify.c (dump_stack_value): dump null literal flag to.
14012
14013         * verify.c (verify_type_compatibility_full): fix comparison
14014         for types that have a generic super type.
14015
14016         * verify.c (verify_stack_type_compatibility): fix compatibility
14017         between null literals and reference types. fix compatibility between
14018         boxed valuetypes and object. fix corner case test for enums.
14019
14020         * verify.c (do_cmp_op): proper verification of cgt.un in case
14021         of reference types.
14022
14023         * verify.c (do_invoke_method): fix error message.
14024
14025         * verify.c (do_store_indirect
14026
14027         * verify.c (check_is_valid_type_for_field_ops): proper verification
14028         of managed pointers to valuetypes and boxed valuetypes. proper verification
14029         of null literals.
14030
14031         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
14032         allow token to be a reference type.
14033
14034         * verify.c (do_cast): proper handling of boxes valuetypes.
14035
14036         * verify.c (do_stelem): proper handling of storing a boxed valuetype
14037         in object[].
14038
14039         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
14040         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
14041         fixed the decoding of unbox_any
14042
14043 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14044
14045         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
14046
14047 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
14048
14049         * verify.c (do_newobj): do delegate verification.
14050
14051         * verify.c (verify_delegate_compatibility): perform delegate
14052         verification.
14053
14054         * verify.c (verify_ldftn_delegate): perform tests related to
14055         ldftn delegates.
14056
14057         * verify.c (mono_delegate_signature_equal): perform the
14058         slightly diferent signature comparison required by delegates.
14059
14060         * metadata.c (mono_metadata_type_equal_full): added and exported
14061         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
14062         allows signature only comparison.
14063
14064         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
14065         as MONO_INTERNAL.
14066
14067 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
14068
14069         * verify.c: added a bunch of stack_slot_* functions to
14070         make access to stack slot type easier. This is required to
14071         allow optional flags, like null literal, boxed value and
14072         this pointer.
14073         All access paths to IlStackDesc::stype have been changed 
14074         to use these new funcions.
14075         Removed a bunch of unused functions and cleared all warnings.
14076         This patch introduces the usage of the this pointer and 
14077         boxed value flags.
14078
14079 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
14080
14081         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
14082
14083 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
14086         match managed version.
14087
14088         * appdomain.c: Bump corlib version.
14089         
14090         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
14091         argument.
14092
14093 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
14094
14095         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
14096         Set public key token to zero-length byte array if assembly is not
14097         strongnamed.
14098
14099 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
14102         writing a vtype array elem.
14103
14104 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
14105
14106         * assembly.c (build_assembly_name): return FALSE if length of token is
14107         not 16 (if not "null").
14108         (mono_assembly_name_parse_full): return FALSE if value of version,
14109         culture, token or key is 0.
14110         * icall.c (fill_reflection_assembly_name): add boolean arguments to
14111         specify whether public key and public key token must be set to default
14112         value (zero-length byte array) if not available. Set versioncompat to
14113         SameMachine. If public key is available or the default is set, then
14114         set PublicKey flag.
14115         (ves_icall_System_Reflection_Assembly_FillName): if no public key
14116         is available, use empty byte array as default value. On the 2.0
14117         profile, use default value for public key token if not set.
14118         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
14119         profile, use default value for public key if not set. On the 2.0
14120         profile, use default value for public key token if not set.
14121         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
14122         default values for public key and public key token.
14123
14124 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
14127         field to keep it in synch with the managed object.
14128
14129         * marshal.c (emit_marshal_object): Add support for byref marshalling of
14130         delegates. Fixes #351520.
14131
14132         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
14133         contains defined memory.
14134         
14135         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
14136
14137         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
14138         
14139         * sgen-gc.c (check_consistency): New helper function to do a consistency check
14140         of the GC data structures.
14141
14142         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
14143
14144         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
14145         
14146         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
14147         barrier.
14148         (mono_array_clone_in_domain): Ditto.
14149         (mono_array_clone_in_domain): Ditto.
14150
14151         * threads.c (start_wrapper): Register the thread start argument as a GC root.
14152         (cache_culture): Use a write barrier.
14153
14154         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
14155         (ves_icall_get_property_info): Ditto.
14156
14157         * object.h (MONO_STRUCT_SETREF): New macro.
14158
14159         * class-internals.h (MonoStats): Add some GC statistics.
14160
14161         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
14162
14163 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
14164
14165         * exception.c (mono_exception_from_name_two_strings):
14166         Break from loop after method is found.
14167
14168 2008-01-04  Dick Porter  <dick@ximian.com>
14169
14170         * process.c (process_module_string_read): Rename variable to
14171         reflect correct usage, after fixing bug 345972.
14172
14173 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
14174
14175         * verify.c (mono_type_create_fnptr_from_mono_method): 
14176         created a MonoType function pointer instance to be used during
14177         verification. The verifier releases this memory at end.
14178
14179         * verify.c (mono_method_is_constructor): extracted repeated
14180         checks for constructor into a single class.
14181
14182         * verify.c (do_push_field): use new extracted method
14183         for constructor check.
14184
14185         * verify.c (do_newobj): same.
14186
14187         * verify.c (do_ldftn): renamed to do_load_function_ptr
14188         and make it verify ldvirtftn too.
14189
14190         * verify.c (mono_method_verify: proper verification
14191         of ldvirtftn. release created MonoMethod instances.
14192
14193 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14194
14195         * verify.c (token_bounds_check): added.
14196
14197         * verify.c (do_ldftn): added.
14198
14199         * verify.c (mono_method_verify): proper verificartion of ldftn.
14200
14201 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14202
14203         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
14204         than the table row count. It's the resposibility of the caller to
14205         make the bounds check and raise the correct error.
14206
14207         * metadata.c (mono_metadata_decode_row_col): Same.
14208
14209         * loader.c (mono_get_method_from_token): perform bounds check
14210         on token for methoddef table.
14211
14212 2007-12-29  Miguel de Icaza  <miguel@novell.com>
14213
14214         * icall.c
14215         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
14216         assert into a negative result, the managed code already coped with
14217         that.
14218
14219         Some folks on Windows reported this error. 
14220
14221 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
14222
14223         * appdomain.c: Bump corlib version.
14224         * icall.c:
14225         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
14226         CultureInfo.CreateCulture to create CultureInfo for name.
14227         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14228         create CultureInfo for name. Fixes bug #347174.
14229
14230 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14231
14232         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14233         flags.
14234
14235         * verify.c (is_valid_branch_instruction): allow branching to the
14236         first instruction of the protected block.
14237
14238         * verify.c (is_valid_cmp_branch_instruction): same.
14239
14240         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14241         avoid double initialization.
14242
14243         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14244         detect which cases the eval stack should just be copied.
14245
14246         * verify.c (mono_method_verify): check if the eval stack
14247         is empty when entering a protected block.
14248
14249 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14250
14251         * verify.c: added is_clause_in_range, is_clause_inside_range,
14252         is_clause_nested and verify_clause_relationship. They perform
14253         the verifications stated in P1 12.4.2.7.
14254
14255         * verify.c (mono_method_verify): remove some unused variables,
14256         add the new exception clause checks, add instruction border
14257         checks for protected block start/end, improved some error 
14258         messages and fixed a bug in the way invalid instruction access
14259         is detected.
14260
14261 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14262
14263         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14264         from GC 7.0 if available.
14265
14266         * object.c: Remove an unused define.
14267         
14268         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14269
14270         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14271
14272         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14273
14274         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14275
14276         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14277         to take the same arguments as the other make_descr functions.
14278
14279         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14280
14281         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14282         directly.
14283
14284         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14285         mini.c.
14286
14287         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14288         call to boehm-gc.c.
14289
14290         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14291
14292         * null-gc.c (mono_gc_register_root): Fix a warning.
14293
14294         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14295
14296         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14297         (mono_gc_base_init): Call GC_init ().
14298
14299         * null-gc.c: Define mono_gc_register_root () as a no-op.
14300
14301         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14302
14303 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14304
14305         * verify.c: add prototype for merge_stacks at top
14306
14307         * verify.c (do_switch): added.
14308
14309         * verify.c (merge_stacks): on some cases the stack merging
14310         was not happening properly. Unequal stack sizes at merge
14311         points should be invalid.
14312
14313         * verify.c (mono_method_verify): added more debug info on stack state.
14314         verify switch properly.
14315
14316 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14319         marshal.h.
14320
14321         * boehm-gc.c marshal.c: Include method-builder.h.
14322
14323         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14324
14325         * marshal.c: Remove some code which is now in method-builder.c.
14326
14327 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14328
14329         * method-builder.c: New file, extraction of the method builder functionality 
14330         from marshal.c.
14331
14332         * marshal.c: Move the mb functions into method-builder.c.
14333
14334         * marshal.h marshal.c: Export some mono_mb_... functions.
14335
14336         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14337
14338         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14339         the caller.
14340
14341         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14342
14343         * loader.c (mono_field_from_token): Ditto.      
14344
14345         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14346         type as well.
14347         
14348         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14349         Fixes #342565.
14350
14351         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14352         a helper function for setting it.
14353
14354         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14355
14356         
14357         * assembly.c: Significally simplify code now that referenced assemblies are 
14358         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14359
14360         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14361         #349952.
14362
14363 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14364
14365         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14366         instructions that were target of branches or are at protected block boundaries.
14367
14368         * verify.c (in_same_block): handle filter clauses.
14369
14370         * verify.c (is_valid_branch_instruction): added. checks the target of
14371         instructions br or brtrue/false.
14372
14373         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14374         binary branch instructions such as beq and bge.
14375
14376         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14377         and made it pin the instruction as been part of the exception block.
14378
14379         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14380         of in_same_block.
14381
14382         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14383         of in_same_block.
14384
14385         * verify.c (do_ret): ret from a protected block is unverifiable and
14386         not invalid.
14387
14388         * verify.c (do_static_branch): verify br and br.s instructions.
14389
14390         * verify.c (merge_stacks): add extra param to support detection
14391         of branches in the middle of instructions.
14392         
14393         * verify.c (mono_method_verify): verify branches and exception blocks
14394         that target the middle of instructions. Proper verification of br and br.s.
14395
14396 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14399         skip_visibility field.
14400         (reflection_methodbuilder_from_dynamic_method): Ditto.
14401
14402         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14403         registrations. Fixes #348193.
14404
14405         * threads.h: Move the internal mono_thread_get_pending_exception () to
14406         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14407
14408 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14409
14410         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14411         icall registration. Fixes #348193.
14412
14413         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14414         for corlib classes into object. Fixes #349621.
14415
14416 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14417
14418         * icall.c (property_accessor_nonpublic): new function to determine
14419         whether an accessor allows a property to be considered non-public.
14420         Returns false for private accessor(s) from parent class, and internal
14421         accessor(s) from parent on 2.0 profile (and higher).
14422         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14423         to determine whether property should be included if NonPublic flag
14424         is set. Fixes bug #349078.
14425
14426 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14427
14428         * verify.c (init_stack_with_value): added.
14429
14430         * verify.c (mono_method_verify): extracted common
14431         code for exception initialization into init_stack_with_value.
14432
14433         * verify.c (mono_method_verify): initialize the exception
14434         for handler clauses as well.
14435
14436         * verify.c (mono_method_verify): fix the exception clause
14437         ordering rules, it should use handler end offset and not
14438         start offset.
14439
14440 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14441
14442         * rawbuffer.c: remove useless warning.
14443
14444 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14445
14446         * threads.h, threads-types.h: move functions to the correct header
14447         (fixes bug#349952).
14448
14449 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14450
14451         * verify.c (mono_method_verify): proper verification
14452         of exception handling clauses ranges and fallthru in
14453         and out of protected blocks.
14454
14455 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14456
14457         * verify.c (mono_method_verify): fixed compilation issue.
14458
14459 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14460
14461         * verify.c (mono_method_verify): a printf slipped in, changed
14462         to use verifier debug macro.
14463
14464 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14465
14466         * verify.c (is_correct_leave): check for filter clauses.
14467
14468         * verify.c (do_filter): added.
14469
14470         * verify.c (mono_method_verify): property verification of leave.
14471
14472
14473 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14474
14475         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14476         Win32 build, until we figure out how to do the proper thing on
14477         Win32.
14478
14479 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14480
14481         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14482         by the previous patch.
14483         
14484         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14485         the assembly resolve handler for refonly assemblies.
14486
14487 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14488
14489         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14490         Make sure only one thread is allowed to commence shutdown, and
14491         don't allow new threads to be started once shutdown is in
14492         progress.
14493
14494 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14495
14496         * verify.c (is_correct_endfilter): added.
14497
14498         * verify.c (is_unverifiable_endfilter): added.
14499
14500         * verify.c (do_endfilter): added.
14501
14502         * verify.c (mono_method_verify): property verification of endfilter
14503         and fixed a corner case or endfinally.
14504
14505 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14506
14507         * verify.h: new flags to support fail fast of unverifiable code and
14508         do non-strict verification. Non-strict verification is required to
14509         have MS runtime compatibility. There are a huge amount of unverifiable
14510         code that it accepts as verifiable. The strict mode verifies the code
14511         as the specs says.
14512         Non-strict mode will be required in cases where code needs to be
14513         accepted as verifiable but fails under strict mode.
14514
14515         * pedump.c: added support to fail fast and non-strict verification.
14516
14517         * verify.c: added support for both fail fast and non-strict verification.
14518
14519 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14520
14521         * verify.c (is_correct_endfinally): added.
14522
14523         * verify.c (mono_method_verify): property verification of endfinally.
14524
14525 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14526
14527         * verify.c (in_any_block): check for filter clauses.
14528
14529         * verify.c (is_correct_rethrow): added.
14530
14531         * verify.c (mono_method_verify): property verification of rethrow.
14532
14533         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14534
14535 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14536
14537         * verify.c (do_throw): added.
14538
14539         * verify.c (mono_method_verify): property verification of throw
14540
14541 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14542
14543         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14544         assemblies. Fixes #346425.
14545
14546 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14549         FieldBuilders.
14550
14551         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14552
14553         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14554         prevent asserts when this is called with a token which might not be valid.
14555
14556         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14557         lookup_dynamic_token_class with valid_token == FALSE.
14558
14559         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14560
14561         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14562
14563         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14564         
14565 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14566
14567         * gc.c: Don't delay threadpool thread finalization unless Mono is
14568         shutting down.
14569
14570 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14571
14572         * threads.c: turn an assert into a non-fatal warning.
14573
14574 2007-12-09  Robert Jordan  <robertj@gmx.net>
14575
14576         * icall.c (GetVirtualMethod): Add missing argument validation.
14577
14578 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14579
14580         * verify.c (do_cast): added.
14581
14582         * verify.c (mono_method_verify): property verification of castclass and isinst.
14583
14584
14585 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14586
14587         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14588
14589         * verify.c (do_stelem): added.
14590
14591         * verify.c (mono_method_verify): property verification of stelem.X.
14592
14593 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14594
14595         * class.c, class-internals.h: Introduce an environment variable
14596         (MONO_GENERIC_SHARING) through which the extent of generic code
14597         sharing can be controlled (share all classes, share only corlib
14598         classes, or share nothing).
14599
14600         * object.c: Only create runtime generic context for classes for
14601         which sharing is enabled.
14602
14603 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14604
14605         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14606
14607         * verify.c (mono_method_verify): property verification of ldelem.any.
14608
14609 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14610
14611         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14612         added ldelem.X opcodes.
14613
14614         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14615
14616         * verify.c: proper verification of ldelem.X 
14617
14618 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14619
14620         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14621
14622 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14623
14624         * verify.c (mono_method_verify): null literal requires special handling,
14625         the value pushed on stack need to be flagged as so.
14626
14627         * verify.c (do_ldelema): Verify ldelema properly.
14628
14629 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14630
14631         * verify.c: Verify ldlen properly.
14632
14633 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14634
14635         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14636         to the target object's type. Fixes #346160.
14637
14638 2007-12-05  Dick Porter  <dick@ximian.com>
14639
14640         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14641         Solaris needs the same workaround as BSD-derived systems.  Fixes
14642         bug 323524, patch by Burkhard Linke
14643         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14644
14645 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14646
14647         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14648         handle to use when error dialog is shown; otherwise, update mask
14649         to show no error dialog when an error occurs.
14650
14651 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14652
14653         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14654
14655         * class.c (mono_class_get_field_default_value): New helper function to initialize
14656         field->def_type and field->data.
14657
14658 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14659
14660         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14661         the general one.
14662
14663         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14664
14665         * marshal.c: Avoid depending on delegate->method_info being set.
14666
14667         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14668         
14669         * object.c (mono_delegate_ctor): Set delegate->method.
14670
14671         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14672
14673         * appdomain.c: Bump corlib version.
14674
14675 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14676
14677         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14678         equality check if we're comparing canonicalized MonoGenericInsts.
14679
14680 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14681
14682         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14683         accessing class->methods.
14684
14685 2007-11-22  Dick Porter  <dick@ximian.com>
14686
14687         * threads.c: Ensure that the synch_cs is set before trying to use
14688         it.
14689
14690 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14691
14692         * profiler.c: r89126 broke the statistial profiler, unbreak.
14693
14694 2007-11-22  Martin Baulig  <martin@ximian.com>
14695
14696         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14697
14698         * mono-debug.c
14699         (mono_debug_debugger_version): Bump to 3.
14700         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14701         -> mono_debugger_class_initialized().
14702
14703         * mono-debug-debugger.c
14704         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14705
14706         * class.c
14707         (mono_debugger_start_class_init_func): Removed.
14708         (mono_debugger_class_loaded_methods_func): Added.
14709         (mono_class_setup_methods): Call it here.
14710
14711 2007-11-22  Martin Baulig  <martin@ximian.com>
14712
14713         * mono-debug.c
14714         (mono_debug_add_delegate_trampoline): New public method.
14715         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14716
14717         * mono-debug.h
14718         (MonoSymbolTable): Added `global_data_table'.
14719         (MonoDebuggerTypeKind): Removed.
14720
14721 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14722
14723         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14724         these methods.
14725
14726         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14727         
14728 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14729
14730         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14731
14732 2007-11-20  Martin Baulig  <martin@ximian.com>
14733
14734         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14735
14736         * mono-debug-debugger.c
14737         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14738         (mono_debugger_remove_breakpoint): Likewise.
14739         (mono_debugger_check_breakpoints): Likewise.
14740         (mono_debugger_register_class_init_callback): New public method.
14741         (mono_debugger_remove_class_init_callback): Likewise.
14742         (mono_debugger_add_type): Likewise.
14743
14744         * mono-debug-debugger.h
14745         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14746
14747 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14748
14749         * class.c: more interface implementations needed for the
14750         array enumerator (fixes bug #341112).
14751
14752 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14753
14754         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14755         fix ParamName of ArgumentNullExceptions.
14756
14757 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14758
14759         * reflection.c (mono_reflection_encode_sighelper): Generate the
14760         modopts and modreqs.   I have a useless test that crashes monodis,
14761         but that shows the code working.
14762
14763 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14764
14765         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14766         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14767
14768 2007-11-15  Dick Porter  <dick@ximian.com>
14769
14770         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14771         When joining a thread, it's the thread that's calling Join that
14772         gets WaitSleepJoin state not the target.  Fixes the standalone
14773         test case in bug 334740, and hopefully the whole bug too.
14774
14775 2007-11-15  Dick Porter  <dick@ximian.com>
14776
14777         * process.c: Read file version info from the files pointed at by
14778         process modules, not the current process.  Fixes bug 315969.
14779
14780         Use windows typedef names in some places to fix warnings on the
14781         windows build.
14782
14783 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14784
14785         * image.c, metadata-internals.h: Added a generic_class_cache hash
14786         to MonoImage for looking up generic classes when sharing generics.
14787
14788 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14789
14790         * sgen-gc.c: warning cleanups.
14791
14792 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14793
14794         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14795         inherited properties.
14796
14797 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14798
14799         * object.c, class-internals.h: Added more information to the
14800         runtime generic context.
14801
14802 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14803
14804         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14805         instead of just the target method. Generalize the abstract method handling to
14806         handle any non-static method.
14807
14808         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14809         mono_marshal_get_delegate_invoke () signature change.
14810
14811 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14812
14813         * class.c, class-internals.h: Made
14814         mono_type_get_basic_type_from_generic () public.  Fixed member
14815         access check for shared generics.
14816
14817         * loader.c: Don't insert field into field cache if it's part of a
14818         non-inflated generic class.
14819
14820         * domain.c, domain-internals.h: The generic sharing context is now
14821         part of the jit info data structure.  Added two accessor
14822         functions.
14823
14824 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14825
14826         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14827         the array Get/Set/Address methods, since the JIT inlines them.
14828
14829         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14830
14831         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14832         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14833
14834         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14835         mono_marshal_get_delegate_invoke signature change.
14836
14837         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14838         an additional argument. Add support for invoking abstract methods.
14839
14840         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14841
14842         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14843
14844 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14845
14846         * class.c: Do field layout for open generic classes as well.
14847
14848 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14849
14850         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14851         other objects, because the threadpool is still around.  Put them
14852         in a list instead and after finalizing all other objects in the
14853         root domain shut down the thread pool and then finalize the
14854         threads.  Fixes bug #337383.
14855
14856         * threads.c, thread-types.h: New mono_thread_create_internal()
14857         function for marking a thread with the threadpool flag before it
14858         started.  Set synch_cs to NULL after freeing it.
14859
14860         * threadpool.c: Mark threadpool threads before they start.
14861
14862 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14863
14864         * reflection.h, reflection.c: don't export random functions
14865         and lazy load dbnull and missing objects.
14866
14867 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14868
14869         * class.c: Initialize COM types if COM interfaces
14870         are present (not just COM classes).
14871         
14872         Code is contributed under MIT/X11 license.
14873
14874 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14875         * reflection.c:
14876         create_dynamic_mono_image: hook module profiler events (dynamic case).
14877         mono_image_basic_init: hook assembly profiler events (dynamic case).
14878
14879 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14880         * profiler.c:
14881         simple_appdomain_unload: completely terminate the profiler
14882         instead of only processing the statistical samples.
14883         simple_shutdown: make sure this is really called exactly once,
14884         even in multithreaded applications, and always listen to
14885         appdomain events.
14886         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14887         here, the "[un]load" functions will do it.
14888         Fixes bugs #333791 and #325261.
14889
14890 2007-11-07  Geoff Norton  <gnorton@novell.com>
14891
14892         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14893         rather than depend on __APPLE__.
14894
14895 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14896
14897         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14898
14899 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14900
14901         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14902         UTF16 MonoString. Fix the crash from bug #335488
14903
14904 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14905
14906         * marshal.c: Correct (for non-Win32 OS) length != size in 
14907         mono_string_from_bstr. Fix #339530.
14908
14909 2007-11-06  Geoff Norton  <gnorton@novell.com>
14910
14911         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14912         to succeed
14913
14914 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14915
14916         * process.c: Added run-time GetProcessId API detection for Windows.
14917
14918 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14919
14920         * reflection.c  (mono_param_get_objects): If a parameter has the
14921         attribute [System.Runtime.InteropServices.Optional] we should
14922         set the DefaultValue of the ParameterInfo to be
14923         System.Reflection.Missing instead of DBNull.
14924
14925         See bug #339013.
14926
14927         (mono_get_reflection_missing_object): New method,
14928         returns the System.Reflection.Missing.Value singleton instance.
14929
14930 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14931
14932         * culture-info-table.h : regenerated.
14933
14934 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14935
14936         * icall.c: Use GetEnvironmentStrings on windows
14937         so we are using the same environment block as 
14938         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14939         #333740.
14940         
14941         Code is contributed under MIT/X11 license.
14942
14943 2007-10-31  Martin Baulig  <martin@ximian.com>
14944
14945         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14946
14947         * mono-debug-debugger.h
14948         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14949
14950 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14951
14952         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14953         classes.
14954
14955 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14956
14957         * culture-info-table.h : regenerated.
14958
14959 2007-10-30  Robert Jordan  <robertj@gmx.net>
14960
14961         * icall-def.h, icall.c:
14962         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14963
14964         Code is contributed under MIT/X11 license.
14965
14966 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14969         inflated class instead of inflating them again.
14970         
14971         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14972         dynamic case.
14973
14974         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14975         Call setup_supertypes () after klass->parent is set.
14976         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14977
14978         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14979         for inflated instances of not yet created dynamic generic classes.
14980         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14981         times from inflated_method.
14982         (methodbuilder_to_mono_method): Ditto.
14983
14984 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14985
14986         * gc.c: code cleanup and removed old untested option of not creating the
14987         finalizer thread.
14988
14989 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14990
14991         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14992         creating a jump trampoline for dynamic methods.
14993
14994 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14995
14996         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14997         generic TypeBuilders when called from another method of the same type (bug #335131).
14998
14999
15000 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
15001
15002         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
15003         doesn't seem to work perfectly.
15004         
15005         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
15006         called multiple times.
15007         (methodbuilder_to_mono_method): Ditto.
15008         (resolve_object): Inflate FieldBuilder's.
15009
15010 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15011
15012         * string-icalls.c, string-icalls.h, appdomain.c: patch from
15013         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
15014         RemoveEmptyEntries in the string.Split implementation (bug #322375).
15015
15016 2007-10-26  Dick Porter  <dick@ximian.com>
15017
15018         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
15019         Thread initialisation changes
15020
15021 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
15022
15023         * verify.c: fix compatibility check between arrays and System.Array
15024
15025 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
15026
15027         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
15028         too. Fixes #336999.
15029
15030 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
15031
15032         * object.c (mono_value_box): Use typed allocation here.
15033
15034 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
15035
15036         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
15037         trampoline instead of compiling the method right away.
15038
15039         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
15040
15041 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
15042
15043         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
15044         related fields for dynamic classes. Fixes #334493.
15045
15046 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
15047
15048         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
15049         
15050         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
15051
15052         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
15053         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
15054
15055         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
15056
15057         * reflection.c (create_generic_typespec): Initialize klass->generic_container
15058         if needed.
15059         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
15060
15061 2007-10-18  Jonathan Chambers <joncham@gmail.com>
15062
15063         * marshal.c: Use correct key when removing item
15064         from ccw_hash.
15065         
15066         Code is contributed under MIT/X11 license.
15067
15068 2007-10-17  William Holmes  <billholmes54@gmail.com>
15069
15070         *marshal.c: Adding a case to marshal booleans to U1
15071
15072         Code is contributed under MIT/X11 license.
15073
15074 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
15075
15076         * class.c (mono_class_from_name): Search the modules compromising dynamic
15077         assemblies. Fixes #331601.
15078
15079 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
15080
15081         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
15082         exception if the type name contains an assembly component. Fixes #334203.
15083
15084         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
15085         modules inside dynamic assemblies. Fixes #334200.
15086         
15087         * reflection.c: Set image->public_key and image->public_key_length;
15088
15089         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
15090         fields.
15091
15092         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
15093         
15094 2007-10-16  Mark Probst  <mark.probst@gmail.com>
15095
15096         * metadata.c: Implemented correct comparing of generic classes.
15097         An inflated generic class can be equal to a non-inflated one if it
15098         is inflated with generic type variables as type arguments.  Fixes
15099         bug #333798.
15100
15101 2007-10-15  Dick Porter  <dick@ximian.com>
15102
15103         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
15104         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
15105         81646.
15106
15107         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
15108         instead of a monitor lock.  This means that monitor_try_enter and
15109         co can set the thread state safely.
15110         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
15111         thread_interrupt_requested, so interrupt actually works.
15112
15113         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
15114         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
15115         state accessor function
15116
15117 2007-10-15  Martin Baulig  <martin@ximian.com>
15118
15119         * mono-debug.h
15120         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
15121         the debugger with the current runtime.
15122
15123 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15124
15125         * object.c, object-internals.h: added the ability to set a single
15126         trampoline for all the slots in a vtable.
15127
15128 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15129
15130         * marshal.c: deal with a possible race condition during multicast
15131         delegate invocation.
15132
15133 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15134
15135         * class.c: ensure value type methods don't have the synchronized
15136         flag set.
15137
15138 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
15139
15140         * string-icalls.c, string-icalls.h: reverted unapproved patch that
15141         breaks the build.
15142
15143 2007-10-11  Joel Reed  <joelwreed@comcast.com>
15144
15145         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
15146         to take an options parameter so that empty entries can be removed during
15147         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
15148
15149 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * marshal.c: make sure we don't store the signature from a dynamic
15152         method into the runtime invoke cache (bug #327189).
15153
15154 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15155
15156         * marshal.c: make sure the wrapper methods are properly initialized.
15157
15158 2007-10-11  Mark Probst  <mark.probst@gmail.com>
15159
15160         * metadata.c, metadata-internals.h: Generalized
15161         mono_type_stack_size() to mono_type_stack_size_internal() which
15162         takes an additional argument specifying whether it allows open
15163         types.
15164
15165 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
15166
15167         * verify.c (do_invoke_method): handle typedbyref params
15168         correctly and check for unverifiable return values.
15169
15170         * verify.c (do_newobj): fix a warning.
15171
15172 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15173
15174         * verify.c: don't tread typedbyref as allways unverifable,
15175         so uses, like (ld/st)loc.0 are valid. verify for the cases
15176         that it matters, like boxing related operations.
15177
15178 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15179
15180         * verify.c: add verification of the newobj opcode. verification
15181         of delegate instantation still missing due ldftn and virldftn not
15182         pushing the function type on stack
15183
15184 2007-10-08  Mark Probst  <mark.probst@gmail.com>
15185
15186         * class-internals.h: Runtime generic context data structure
15187         definition.
15188
15189         * object.c: Initialization of runtime generic context at runtime
15190         vtable creation time.
15191
15192 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
15193         * class.c (mono_class_create_from_typedef,
15194         mono_class_from_generic_parameter, mono_ptr_class_get,
15195         mono_fnptr_class_get, mono_bounded_array_class_get)
15196         * domain.c (mono_domain_create, mono_domain_free)
15197         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
15198         * image.c (do_mono_image_load, mono_image_close):
15199         Hooked up load-unload profiler events.
15200
15201 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15202
15203         * domain.c: track statistics about the actual amount of native code
15204         allocated.
15205
15206 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15207
15208         * class.c: the valuetype enumerators don't have the additional
15209         supertypes interfaces.
15210
15211 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15212
15213         * class.c: need more interfaces setup for the IEnumerator<T>
15214         object created for arrays (tests/ienumerator-interfaces.2.cs).
15215
15216 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
15217
15218         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
15219
15220 2007-10-05  Alp Toker  <alp@atoker.com>
15221
15222         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15223         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15224         #315863.
15225
15226 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15227
15228         * verify.c (verify_type_compatibility_full): verification of
15229         compatibility improved, validates correctly non-strict checks between
15230         native int and I4 types different than (unsigned)int32.
15231
15232         * verify.c (do_store_indirect): added, do all verification of
15233         ldind.X opcodes. 
15234
15235         * verify.c (get_load_indirect_mono_type): renamed to
15236         get_indirect_op_mono_type, as it now returns the MonoType for 
15237         ldind.X and stind.X opcodes.
15238
15239 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15240
15241         * reflection.c: Fix the encoding of generic type definition for
15242         TypeBuilders.
15243
15244         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15245         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15246         be made. Typespec check is done prior to typeref cache lookup.
15247
15248         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15249         mono_image_typedef_or_ref_full.
15250
15251         * reflection.c (encode_generic_class): encode the generic class
15252         directly instead of calling encode_type.
15253
15254         * reflection.c (encode_type): encode the generic type definition
15255         MonoClass as a generic instantiation.
15256
15257         * reflection.c (create_typespec): cache typespec tokens in
15258         the assembly->typespec cache. Don't create typespec for a generic
15259         instance MonoClass. Create typespec for the generic type defintion.
15260
15261         * reflection.c (create_generic_typespec): encode the generic
15262         class directly instead of calling encode_type.
15263
15264         * reflection.c (mono_image_create_token): encode the generic
15265         type definition not using a typespec for MonoType instances.
15266
15267
15268 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15269
15270         Fix #328812
15271         * class.c (mono_image_init_name_cache): Don't return nested
15272         'protected internal' classes.
15273         (mono_class_from_name_case): Likewise.
15274
15275 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15276
15277         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15278           common function used by both DefaultConfig in System.dll and
15279           InternalConfigurationHost in System.Configuration.dll.
15280
15281 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15282
15283         * class.c: automatically add to vectors only a few essential explicit
15284         generic interfaces. The rest of the interfaces that arrays should
15285         provide are currently implicitly added (but still not lazily, see the
15286         design in the discussion of bug#325495 for the details of what is
15287         needed for that). Additionally, implicit interfaces are assigned the
15288         same vtable slot as the explicit interfaces (as they are compatible):
15289         this enables huge memory savings since we don't need to instantiate
15290         as many memthods and as large vtables anymore. Also, Since
15291         GetEnumerator<T> returns an instance of a type that is required to
15292         support a similarly large set of interfaces as arrays, we add
15293         implicit interfaces and interface offset sharing support to those
15294         types, too. This change adds all the required interfaces so that
15295         the anonarray.cs test case in the bug report works (we don't add
15296         all the interfaces to arrays of arrays 3-level deep and more because
15297         of the memory requirements explained in the bug and since they are much
15298         less common: the lazy-loading support will enabled them to work, too).
15299
15300 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15301
15302         * verify.c (merge_stacks): major clean up, all type compatibility
15303         checks are done by verify_type_compatibility. This fix my earlier lack
15304         of understanding of the CLR type system and merge_stacks no longer looks
15305         scary.
15306
15307         * verify.c: fixed some bad spelling.
15308
15309 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15310
15311         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15312         a given stack slock.
15313         
15314         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15315         verify_type_compatibility_full. This removed a near indentical function and fixed
15316         handling of Int32 and IntPtr across all opcodes.
15317
15318 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15319
15320         * class.c: only vectors have the additional generic interfaces.
15321
15322 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15323
15324         * mono-config.c: Use g_strcasecmp instead of
15325         strcasecmp like everywhere else to fix
15326         compilation with MSVC.
15327         
15328         Code is contributed under MIT/X11 license.
15329
15330 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15331
15332         * object.c, object-internals.h: refactored the IMT code to enable
15333         building a single slot at a time and lazily creating the IMT trampolines
15334         and thunks.
15335
15336 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15337
15338         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15339
15340         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15341         Fixes #328501.
15342         
15343 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15344
15345         * loader.c (method_from_methodspec): Rearrange to avoid
15346         un-necessary exposition.  Don't assert out if the method's
15347         declaring type is a generic type definition.
15348
15349 2007-09-28  Martin Baulig  <martin@ximian.com>
15350
15351         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15352
15353 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15354
15355         * class-internals.h: optimize field layout of MonoClass to
15356         requires less cachelines at runtime and save a few bytes on 64 bit
15357         systems.
15358
15359 2007-09-28  Jb Evain  <jbevain@novell.com>
15360
15361         * reflection.c: when encoding type names in custom attributes,
15362         if the type is a closed generic type, its generic arguments
15363         have to be serialized as AssemblyQualifiedName, so that when
15364         they are deserialized, it's possible to re-create them properly.
15365         Fixes #329450.
15366
15367
15368 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15369
15370         * object.c, class-internals.h: added delegate-creation counter.
15371
15372 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15373
15374         * class.c: cleanup of the code that synthetizes interfaces for
15375         arrays in 2.0: saves quit a bit of corlib mempool memory.
15376         Code to fix bug #325495 ifdeffed out for now until the issues
15377         with memory usage and O(n^2) behaviour are fixed.
15378
15379 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15380
15381         * marshal.c: when possible, do not duplicate the name of the methods
15382         in the method builder and in the generated MonoMethod.
15383
15384 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15385         * verify.c: added support for type checking ldind_* opcodes.
15386
15387 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15388
15389         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15390         which is used to distinguish the fully open instantiation of a TypeBuilder
15391         with the rest. This temporary hack is required to restore the property that
15392         the fully open instantiation is the same type of the generic type definition.
15393
15394         * class-internals.h (mono_generic_class_is_generic_type_definition):
15395         new function as part of the internal API.
15396
15397         * class.c (inflate_generic_type): return NULL when the generic inst is
15398         fully open. The fully open generic type is now the same as the generic type
15399         definition for non TypeBuilder types.
15400
15401         * class.c (mono_generic_class_get_class): removed assert since it is
15402         no longer valid, gklass->cached_class can point to the generic type definition.
15403
15404         * class.c (mono_generic_class_is_generic_type_definition): new.
15405
15406         * metadata.c (mono_generic_class_hash): added is_tb_open field
15407         to the hash calculation.
15408
15409         * metadata.c (free_generic_class): if the generic class is associated
15410         with the generic type definition, its field will come from the mempool and
15411         must not be freed.
15412
15413         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15414         new, this function identifies the corner case of a TypeBuilder fully open
15415         instantiation.
15416
15417         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15418         for lookup. Set gclass->cached_class to be the container class in case of
15419         the fully open instantiation of non TypeBuilder types.
15420
15421         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15422         to compare generic classes.
15423
15424         * reflection.c (method_encode_methodspec): remove assert that
15425         no longer is valid.
15426
15427         * reflection.c (mono_reflection_generic_class_initialize): add
15428         an aditional assert to ensure the proper type is used.
15429
15430 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15431
15432         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15433         to enjoy it.
15434
15435 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15436
15437         * verify.c (push_arg): Fixed support for ldarga
15438         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15439         MonoType used as first arg in case of instance calls.
15440
15441 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15442
15443         * verify.c: Support for verifying VAR and MVAR types, 
15444
15445 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15446
15447         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15448         accessors correctly.
15449
15450 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15451
15452         * threads.c: support OSX and other systems in
15453         mono_thread_get_stack_bounds (bug #328026).
15454
15455 2007-09-25  Martin Baulig  <martin@ximian.com>
15456
15457         * mono-debug.h
15458         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15459
15460 2007-09-24  Martin Baulig  <martin@ximian.com>
15461
15462         * mono-debug.h
15463         (MonoDebugClassEntry): Moved the definition of this struct into
15464         mono-debug.c to make it private.
15465
15466         * mono-debug.c
15467         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15468         type table per symbol file, we don't need to store the symfile id
15469         any longer.
15470
15471 2007-09-24  Martin Baulig  <martin@ximian.com>
15472
15473         Create one type table per symbol file, since a `MonoClass *' gets
15474         invalid when its image is unloaded.
15475
15476         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15477         (MonoDebugHandle): Added `type_table'.
15478
15479 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15480
15481         * mempool.c, mempool.h: added mono_mempool_new_size () API
15482         to be able to specify a smaller initial size for the pool.
15483         Adjusted the code to slowly increase pool size before using
15484         the previous default size.
15485         * image.c: use a small initial size for image mempools.
15486
15487 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15488
15489         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15490         Fixes ##320990.
15491
15492         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15493         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15494
15495 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15498         free. Fixes #327438.
15499
15500 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15501
15502         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15503         generic instantiations, etc.
15504         <MONO_TYPE_ARRAY>: Likewise.
15505
15506 2007-09-21  Martin Baulig  <martin@ximian.com>
15507
15508         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15509         these structs were never defined.
15510         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15511
15512 2007-09-21  Martin Baulig  <martin@ximian.com>
15513
15514         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15515
15516 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15517
15518         * image.c: removed the guid hash tables: we can get the same info
15519         without the additional memory usage hit (partially fixes also bug #327052).
15520
15521 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15522
15523         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15524         event to handle unloading methods. After the event is called, the
15525         corresponding MonoMethod* must be considered invalid.
15526         * loader.c (mono_free_method): call the new mono_profiler_method_free
15527         event.
15528
15529 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15530
15531         * domain-internals.h: New flag in MonoJitInfo which marks shared
15532         generic methods.  New hash table (shared_generics_hash) in
15533         MonoDomain to keep track of shared generic methods.  Prototypes
15534         for functions to register and lookup shared generic methods.
15535
15536         * domain.c: Support for registering and looking up shared generic
15537         methods via a hash table (shared_generics_hash) in MonoDomain.
15538
15539         * class-internals.h: New exception to signal failure of shared
15540         compilation of a generic method.  New counters for generics
15541         sharing in MonoStats.
15542
15543 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15544
15545         * image.c, metadata-internals.h: don't keep a file descriptor open
15546         for loaded assemblies (bug#325988).
15547
15548 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15549
15550         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15551         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15552         use the corresponding datatypes.
15553         (type_in_image): Update to changes.
15554         (CleanForImageUserData): Simplify.
15555         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15556         Avoid quadratic behaviour in handling the "stolen" list by
15557         separating the filter predicate out, and by prepending the stolen
15558         items rather than appending them.
15559         (steal_ginst_in_image): Likewise.
15560         (mono_metadata_clean_for_image): Update to changes.
15561
15562 2007-09-19  Martin Baulig  <martin@ximian.com>
15563
15564         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15565
15566 2007-09-19  Martin Baulig  <martin@ximian.com>
15567
15568         * mono-debug.c (mono_debug_cleanup): Don't call
15569         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15570
15571 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15572
15573         Fix crash on 'make run-test' in mcs/errors
15574         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15575         Avoid more potential allocations in mono_class_from_mono_type.
15576         (ginst_in_image): Update to changes.
15577         (gclass_in_image): Rearrange slightly.
15578
15579 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15580
15581         * class.c (mono_class_init): Move the code that sets up class->methods to 
15582         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15583
15584         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15585         canonical instance of an inflated generic signature.
15586         (mono_type_create_from_typespec): Remove an invalid free.
15587
15588         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15589
15590 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15591
15592         * domain-internals.h: added a declaration of the
15593         mono_assembly_load_full_nosearch internal function.
15594
15595         * assembly.c (mono_assembly_load_with_partial_name): use
15596         mono_try_assembly_resolve return value properly.
15597         (mono_assembly_load_full_nosearch): copied the function body from
15598         mono_assembly_load_full, without the code to invoke assembly
15599         search hooks.
15600         (mono_assembly_load_full): calls the above new function and if the
15601         assembly is not resolved, invokes the search hooks.
15602
15603         * appdomain.c (mono_runtime_init): restore the global postload
15604         assembly search handlers.
15605
15606 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15607
15608         * class.c (mono_class_init): Make sure class->methods and class->properties
15609         are never NULL in the generics case.
15610
15611         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15612
15613 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15614
15615         * metadata.c (free_generic_class): Disable some code to fix the build.
15616
15617         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15618
15619         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15620         from the image mempool.
15621
15622         * metadata.c (free_generic_class): Free more data from the inflated class.
15623
15624         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15625
15626         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15627         mempool.
15628         (mono_type_create_from_typespec): Ditto.
15629
15630         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15631         MonoImage to the caller.
15632         (mono_init_internal): Save the opened image in a global variable.
15633         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15634
15635         * reflection.c (resolve_object): Fix a leak.
15636
15637         * metadata.c: Fix the freeing of data in the generics caches.
15638         
15639         * metadata.c (free_generic_inst): Comment this out to fix the build.
15640         (free_generic_class): Ditto.
15641
15642         * metadata.c: Free cached generic methods, instantinations and classes when
15643         they are removed from the caches.
15644         (mono_metadata_free_type): Free the type itself.
15645
15646         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15647         places.
15648
15649 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15650
15651         * boehm-gc.c: restrict managed allocs to __thread supporting
15652         architectures.
15653
15654 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15655
15656         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15657         (mono_generic_class_get_class): Fix a leak.
15658
15659         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15660         mono_metadata_free_type ().
15661         (mono_metadata_inflate_generic_inst): Fix a leak.
15662
15663 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15666
15667         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15668         mempool.
15669
15670         * mono-debug.c (mono_debug_close_image): Fix call to 
15671         g_hash_table_remove ().
15672
15673 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15674
15675         * icall-def.h: redirect all the string ctor to the managed
15676         CreateString () methods.
15677         * string-icalls.c, string-icalls.h: removed dead code for string
15678         ctors and icalls.
15679
15680 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15681
15682         * mono-debug.c: Fix memory leaks.
15683
15684 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15685
15686         * threads-types.h: Implement mono_hazard_pointer_set and 
15687         mono_hazard_pointer_clear macros using do/while(0) to fix
15688         compilation with MSVC.
15689         
15690         Code is contributed under MIT/X11 license.
15691
15692 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15693
15694         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15695         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15696
15697 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15698
15699         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15700         icalls.
15701
15702 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15703
15704         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15705         managed-code allocated as well.
15706
15707 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15708
15709         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15710
15711 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15712
15713         * boehm-gc.c: fixed the build after the AOT changes.
15714
15715 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15716
15717         * wrapper-types.h: Add an ALLOC wrapper type.
15718
15719         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15720         reference managed allocator methods.
15721
15722 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15723
15724         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15725         of Type array and not MonoType, a fix suggested by Hari.
15726         
15727 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15728
15729         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15730         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15731         
15732         Code is contributed under MIT/X11 license.
15733
15734 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15735
15736         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15737
15738 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15739
15740         * image.c (do_mono_image_open): if assembly file fails to open and
15741         MONO_IOMAP is in effect, try to find the path in a
15742         case-insensitive way.
15743
15744         * appdomain.c (mono_runtime_init): do not install postload hooks -
15745         tests show that MS.NET doesn't use anything of that sort to
15746         trigger the AppDomain.AssemblyResolve event.
15747         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15748         made non-static.
15749         (mono_runtime_init): init portability helpers here.
15750
15751         * assembly.c (mono_assembly_load_with_partial_name): if other   
15752         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15753         to resolve the assembly.
15754
15755         * domain-internals.h: added mono_try_assembly_resolve and marked
15756         it as internal.
15757
15758 2007-09-11  Jb Evain  <jbevain@novell.com>
15759
15760         * object-internals.h (MonoReflectionDynamicMethod): add
15761         a `MonoReflectionType *owner` field. The owner is used
15762         * reflection.c:
15763         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15764         method as the class declaring the dynamic method.
15765         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15766         dynamic method to the declaring type of the methodbuilder.
15767
15768 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15769
15770         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15771         rules for calling methods via reflection.
15772
15773 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15774
15775         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15776         Inflate MonoType's.
15777
15778 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15779
15780         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15781         provide a managed method that does fast allocations without needing
15782         a managed->unmanaged transition. Boehm GC implementation currently
15783         enabled for ptrfree objects on sane architectures.
15784
15785 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15786
15787         * marshal.c, marshal.h: exported a couple of useful functions and
15788         added mono_mb_get_label () to easily handle backward branches.
15789
15790 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15793
15794 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15795
15796         * loader.c (find_method): Fixed the regression introduced while
15797         fixing bug #81466.
15798
15799 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15800
15801         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15802         well.
15803         
15804         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15805         icall.c reflection.c: Pass a MonoGenericContext argument to 
15806         mono_lookup_dynamic_token ().
15807
15808         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15809         #82744.
15810         
15811 2007-09-09  Robert Jordan  <robertj@gmx.net>
15812
15813         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15814         for generic methods.
15815
15816         * object.c (mono_object_get_virtual_method): Handle generic methods.
15817         Fixes bug #78882.
15818
15819         Code is contributed under MIT/X11 license.
15820
15821 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15822
15823         * image.c: fix locking in mono_image_load_file_for_image ().
15824
15825 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15826
15827         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15828         used only as a cache: added an icall to fill it.
15829
15830 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15831
15832         * reflection.h: exposed mono_reflection_free_type_info
15833         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15834         since mono_reflection_bind_generic_parameters makes a copy of it.
15835         * reflection.c (free_type_info): subinfos should be freed.
15836         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15837         made non static.
15838         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15839         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15840         this fixes #82695 and #81726.
15841    
15842
15843 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15844
15845         * process.h, process.c:  added support for user profile/info in
15846           ProcessStartInfo. For now only Windows works.
15847
15848 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15849
15850         * metadata.c: consider the generic arguments when comparing
15851         signatures (bug #82614).
15852
15853 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15854
15855         * cil-coff.h, image.c: updated assembly loader to cope with the
15856         PE32+ 64 bit file format.
15857
15858 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15859
15860         * assembly.c, class.c, domain.c, loader.c: remove useless
15861         inclusion of cil-coff.h.
15862
15863 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15864
15865         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15866         if interface is marked with CoClassAttribute. 
15867    
15868         Code is contributed under MIT/X11 license.
15869
15870 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15871
15872         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15873         if it's seen twice in major collections.
15874
15875 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15876
15877         * sgen-gc.c: big objects are not copied to the gray area, but they
15878         need to be considered for scanning, too, if they are brought alive
15879         by an object ready for finalizations or a survived one.
15880
15881 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15882
15883         * sgen-gc.c: properly account the number of disappearing links when
15884         they are nullified.
15885
15886 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15887
15888         * sgen-gc.c: share the code to scan the registered roots between the
15889         different types of collections.
15890
15891 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15892
15893         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15894
15895 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15896
15897         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15898         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15899
15900 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15901
15902         * security-manager.c (mono_security_manager_get_methods):
15903         LinkDemandSecurityException now has 2 arguments instead of 3.
15904
15905 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15906
15907         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15908         platforms which need it.
15909
15910 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15911
15912         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15913         dtor.
15914
15915 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15916
15917         * threads.c: free the thread static data on thread exit.
15918
15919 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15920
15921         * class.c: walk the hierarchy to find the generic definition for
15922         a class (fixes runtime part of bug #82498).
15923
15924 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15925
15926         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15927         ...
15928
15929         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15930
15931 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15932
15933         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15934
15935 2007-08-24  Robert Jordan  <robertj@gmx.net>
15936
15937         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15938
15939 2007-08-24  Jb Evain  <jbevain@novell.com>
15940
15941         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15942         for byref types.
15943
15944 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15945
15946         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15947         #82286.
15948
15949 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15950
15951         * assembly.c: Fix a warning.
15952         
15953 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15954
15955         * appdomain.c: parse the <runtime> section looking for the probing
15956         element with the 'privatePath' attribute, which sets additional
15957         directories in which the runtime should look for assemblies.
15958
15959 2007-08-23  Robert Jordan  <robertj@gmx.net>
15960
15961         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15962         Fixes #82499.
15963
15964 2007-08-23  Martin Baulig  <martin@ximian.com>
15965
15966         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15967         _mono_debug_init_corlib() and remove it from the header file.
15968
15969 2007-08-23  Martin Baulig  <martin@ximian.com>
15970
15971         * mono-debug-debugger.c
15972         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15973         don't notify the debugger about it.
15974
15975         * mono-debug-debugger.h
15976         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15977
15978 2007-08-23  Robert Jordan  <robertj@gmx.net>
15979
15980         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15981         Code is contributed under MIT/X11 license.
15982
15983 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15984
15985         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15986
15987 2007-08-22  Martin Baulig  <martin@ximian.com>
15988
15989         * mono-debug.c: Store debugging info on a per-domain basis and
15990         free it on domain unload.  Add support for unloading symbol files.
15991
15992         * mono-debug.h
15993         (MonoDebugList): New typedef.
15994         (MonoSymbolTable):
15995         - add `data_tables and `type_table'.
15996         - replace 'symbol_files' and `num_symbol_files' with a
15997           `MonoDebugList *'.
15998         (mono_debug_data_table): Removed.
15999         (mono_debug_list_add): New public function.
16000         (mono_debug_list_remove): New public function.
16001         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
16002         (mono_debug_init_2_memory): Renamed into
16003         mono_debug_open_image_from_memory().
16004         (mono_debug_close_image): New public function.
16005         (mono_debug_domain_create): Likewise.
16006         (mono_debug_domain_unload): Likewise.
16007         (MONO_DEBUGGER_VERSION): Bump to 60.
16008
16009         * mono-debug-debugger.h
16010         (MonoDebuggerEvent):
16011         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
16012         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
16013         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
16014         - rename `THREAD_CREATED' and `THREAD_EXITED' into
16015           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
16016         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
16017           meaning.
16018         (mono_debugger_add_symbol_file): Removed.
16019         (mono_debugger_add_type): Removed.
16020         (mono_debugger_lookup_type): Removed.
16021         (mono_debugger_lookup_assembly): Removed.
16022
16023         * domain.c
16024         (mono_domain_create): Call mono_debug_domain_create().
16025         (mono_init_internal): Call mono_debug_init_corlib().
16026
16027         * assembly.c
16028         (mono_assembly_close): Call mono_debug_close_image().
16029
16030 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
16031
16032         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
16033         mmap call.
16034
16035 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16036
16037         * sgen-gc.c: ensure section->pin_queue_end is initialized
16038         correctly when non pinning objects in the section have been found.
16039
16040 2007-08-22  Marek Habersack  <mhabersack@novell.com>
16041
16042         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
16043         containing a list of directories separated by ':'. MSDN docs say
16044         the directories should be separated with ';'. Part of a bugfix for
16045         bug #81446
16046
16047 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
16048
16049         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
16050         it should MonoType and not MonoClass.
16051
16052 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
16053
16054         * culture-info-table.h : regenerated.
16055
16056 2007-08-20  William Holmes  <billholmes54@gmail.com>
16057
16058         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
16059          to call ReplaceFile Kernel32 on windows or in io-layer.
16060         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
16061         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
16062          as an internal call.
16063
16064         Code is contributed under MIT/X11 license.
16065
16066 2007-08-20  Jb Evain  <jbevain@novell.com>
16067
16068         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
16069         and MONO_EXCEPTION_FIELD_ACCESS.
16070
16071         * debug-helpers.[c|h]: new mono_field_full_name function.
16072
16073 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16074
16075         * class.c: Removed class_security_level() and moved it to
16076         security-core-clr.c.
16077
16078         * security-core-clr.c, security-core-clr.h: class_security_level()
16079         is now public and renamed to mono_security_core_clr_class_level().
16080         It also looks for security attributes in the classes a class is
16081         nested in.
16082
16083 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16084
16085         * security-core-clr.c, security-core-clr.h: CoreCLR security
16086         utility functions.
16087
16088         * Makefile.am: Added security-core-clr.[ch].
16089
16090         * security-manager.c, security-manager.h: Functions and enum for
16091         setting and getting the security mode.
16092
16093         * class.c: CoreCLR security checks.
16094
16095 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
16096
16097         * icall-def.h, process.c, process.h: implemented icall to get
16098         user/system processor times.
16099
16100 2007-08-17  Mark Probst  <mark.probst@gmail.com>
16101
16102         * domain.c, threads.c, class-internals.h, domain-internals.h: New
16103         reader-lock-free jit_info_table.
16104
16105 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
16106
16107         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
16108
16109         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
16110
16111         * object-internals.h (MonoException): Add missing _data member.
16112
16113 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16114
16115         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
16116         checking that only methods with matching qname or fqname are picked
16117         from implemented interfaces.
16118
16119 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16120
16121         * verify.c (do_newarr):added, do type verification of
16122         newarr ops, push the right value on the eval stack.
16123         * verify.c (mono_method_verify): use do_newarr
16124
16125
16126 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16127
16128         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
16129         factored the common code into get_boxable_mono_type, which
16130         is now using mono_type_get_full, this fixed byref related tests.
16131
16132 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16133
16134         * class.c: added mono_type_get_full, this function has the same
16135         behavior of mono_class_get_full but the returned MonoType has
16136         all metadata of the associated token in case of a typespec token.
16137         * class.c: added mono_type_retrieve_from_typespec, used by 
16138         mono_type_get_full to retrieve the token type.
16139         * class.c (mono_class_create_from_typespec): changed to use
16140         mono_type_retrieve_from_typespec.
16141         * class.c (mono_ldtoken): changed to use mono_type_get_full
16142         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
16143         * class-internals.h: exported mono_type_get_full for internal use.
16144
16145 2007-08-16  Jb Evain  <jbevain@novell.com>
16146
16147         * domain.c (supported_runtimes): add entry for
16148         the 'moonlight' runtime version.
16149
16150 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16151
16152         * verify.c (mono_method_verify): small typo sliped in.  
16153
16154 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16155
16156         * verify.c (do_unbox_value): added, do type verification of
16157         unboxing ops
16158         * verify.c (mono_method_verify): use do_unbox_value
16159
16160
16161 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16162
16163         * verify.c (dump_stack_value): fixed typo, was printing string
16164         instead of object on stack.
16165         * verify.c (do_box_value): moved the byref check up as it leads
16166         to invalid code and should be done earlier.
16167         * verify.c: improved error messages for and ldobj
16168
16169 2007-08-15  William Holmes  <billholmes54@gmail.com>
16170
16171         * marshal.c (emit_marshal_custom): Omit the call to 
16172           marshal_native_to_managed when calling native to managed 
16173           and the argument is specified as an out argument.
16174
16175         Code is contributed under MIT/X11 license.
16176
16177 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16178
16179         * verify.c: fixed the type checks for generics, function pointers and vectors.
16180         Added type verification for ldobj and ldtoken. The verifier
16181         would segfault if header or signature of a method contained references
16182         to non-existant types.
16183
16184 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16185
16186         * marshal.c (cominterop_get_ccw): Patch from
16187         Bill Holmes to no walk up interface hierarchy. 
16188         All parent methods should be present in the interface for COM.
16189    
16190         Code is contributed under MIT/X11 license.
16191
16192 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16193
16194         * marshal.c (emit_marshal_com_interface): Patch from
16195         Bill Holmes to handle COM Interfaces as return values
16196         for native->managed calls.
16197    
16198         Code is contributed under MIT/X11 license.
16199
16200 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
16201
16202         * marshal.c (cominterop_get_idispatch_for_object): Implement
16203         for runtime callable wrappers.
16204    
16205         Code is contributed under MIT/X11 license.
16206
16207 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
16208
16209         * pedump.c (main): changed from mono_init to mono_init_from_assembly
16210         so 2.0 types are accessible
16211
16212
16213 2007-08-13  Miguel de Icaza  <miguel@novell.com>
16214
16215         * domain.c (mono_init_internal): Call mono_assembly_load_friends
16216         once we load mscorlib.   Due to the order in which we initialize,
16217         the mono_assembly_load_full routine that loads mscorlib did not
16218         load friends.   We now load it once we load the
16219         mono_defaults.internals_visible_class class. 
16220
16221         * assembly.c: Expose the mono_load_friend_assemblies method.
16222
16223 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
16224
16225         * verify.c: improved the handling of boxing, better
16226         type checking for unary ops and conversion. Fix bug
16227         regarding managed pointer compatibility checking
16228
16229 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16230
16231         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16232
16233         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16234
16235 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16236
16237         * reflection.c (dup_type): Remove.
16238         * class.c (dup_type): Remove.
16239         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16240         instead of the dodgy 'dup_type'.
16241         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16242         handle the case where 'dup_type' needed the second argument.
16243
16244 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16245
16246         * domain.c: Fix a warning.
16247
16248 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16249
16250         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16251         checking that methods with the same fqname are not overridden
16252         with a method from an ancestor.
16253
16254 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16255
16256         * threads.c (free_thread_static_data_helper): Avoid a crash if
16257         thread->static_data is not yet set.
16258
16259 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16260
16261         * marshal.c: Use correct image when emitting
16262         native wrapper for COM calls.
16263    
16264         Code is contributed under MIT/X11 license.
16265
16266 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16267
16268         * icall-def.h, security.c, security.h :
16269           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16270
16271 2007-08-07  Martin Baulig  <martin@ximian.com>
16272
16273         * mono-debug-debugger.h
16274         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16275
16276         * domain.c (mono_domain_free): Call
16277         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16278
16279 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16280
16281         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16282         * verify.c (in_same_block): code should test if either offset is inside the clauses
16283         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16284         and filter blocks
16285
16286 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16287
16288         * image.c (mono_image_close): Fix a leak.
16289
16290         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16291
16292         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16293
16294 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16295
16296         * domain.c, threads.c, threads-types.h: fix memory retention issue
16297         with thread static variables not being cleared on domain unload.
16298         Reuse thread static slots after domain unload.
16299
16300 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16301
16302         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16303         nullable type.
16304
16305         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16306         now done in mono_runtime_invoke_array.
16307
16308         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16309         receiver is a nullable type.
16310
16311         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16312         generic parameter.
16313
16314 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16315
16316         * marshal.c: Implement COM Objects as return type for 
16317         managed->unmanaged calls. Added Release calls for COM Object
16318         out/return values in managed->unmanaged calls.
16319
16320         Code is contributed under MIT/X11 license.
16321
16322 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16323
16324         * threads.h, threads-type.h: move the hazard pointer declarations
16325         to the private header.
16326
16327 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16328
16329         * file-io.c, appdomain.c: memory leak fixes.
16330
16331 2007-08-02  Dick Porter  <dick@ximian.com>
16332
16333         * socket-io.c
16334         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16335         SO_REUSEADDR setting into io-layer/sockets.c.
16336
16337 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16338
16339         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16340         from Object when called on a generic parameter. Fixes #82211.
16341
16342 2007-08-01  Dick Porter  <dick@ximian.com>
16343
16344         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16345         Fixes bug 79250 yet again.
16346
16347 2007-07-30  Martin Baulig  <martin@ximian.com>
16348
16349         Merged the `debugger-dublin' branch.
16350
16351         * mono-debug.h
16352         (MonoDebugDataTable): New typedef.
16353         (MonoDebugMethodAddressList): New typedef.
16354         (MonoDebugWrapperData): Removed.
16355         (MonoDebugSymbolTable): Removed `current_data_table',
16356         `current_data_table_size', `current_data_table_offset'.
16357         (MonoDebugDataItemType): Moved into mono-debug.c.
16358         (MonoDebugMethodJitInfo): Remove `address'.
16359         (mono_debug_data_table): New global variable.
16360         (mono_debug_lookup_method_addresses): New public function.
16361         (mono_debug_find_method): Take a `MonoMethod *', not a
16362         `MonoDebugMethodInfo *'.
16363
16364         * mono-debug.c: Drop support for the old symbol tables.
16365
16366 2007-06-28  Martin Baulig  <martin@ximian.com>
16367
16368         * mono-debug.c (mono_debug_debugger_version): New public variable.
16369
16370 2007-07-31  William Holmes  <billholmes54@gmail.com>
16371
16372         * metadata.c Changed mono_type_create_from_typespec to not insert
16373           the type into the hash map until after
16374           do_mono_metadata_parse_type has completed.
16375         Fixes Bug #82194
16376         Code is contributed under MIT/X11 license.
16377
16378 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16379
16380         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16381         generic parameter. Fixes #82211.
16382
16383 2007-07-27  Jb Evain  <jbevain@novell.com>
16384
16385         * pedump.c (dump_metadata, dump_metadata_header): dump
16386         versions contained in the metadata header.
16387
16388 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16389
16390         * threads.c: register small_id_table with the GC.
16391
16392 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16393
16394         * threads.c, threads.h, class-internals.h, object-internals.h:
16395         Hazard pointers, to be used by lock-free parallel algorithms.
16396
16397 2007-07-26  Dick Porter  <dick@ximian.com>
16398
16399         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16400         routine on non-windows platforms, as I've not managed to think of
16401         a non-kludgy way of doing this.  Finishes off bug 78739.
16402
16403 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16404
16405         * object.c: properly setup interface_bitmap in proxy vtables.
16406
16407 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16408
16409         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16410         to create unique shadow copy target directories, use the domain's
16411         serial number instead. Each domain gets a unique target directory
16412         that way.
16413
16414         * domain.c (mono_domain_create): added code to increment domain
16415         shadow copy serial number and cache the value in the current
16416         domain structure.
16417
16418         * domain-internals.h (struct _MonoDomain): added a new field -
16419         shadow_serial to hold the serial number used in generation of
16420         shadow-copy directories. This is to make sure that the directory
16421         name is unique for each and every domain created. We avoid a race
16422         condition with overriding assemblies already in use by other app
16423         domains.
16424
16425 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16426
16427         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16428         binding generic parameters.
16429
16430 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16431
16432         * metadata.c (do_mono_metadata_parse_generic_class): Use
16433         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16434         error.
16435
16436 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16437
16438         * loader.c, class-internals.h, reflection.c: removed the per-method
16439         generics hashtable: we use the global one through the call of
16440         mono_class_inflate_generic_method ().
16441
16442 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16443
16444         * class.c, metadata.c, class-internals.h: introduce yet another
16445         generics global cache for inflated methods (fixes 98% of the perf
16446         issue in bug #81806).
16447
16448 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16449
16450         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16451         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16452         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16453         return a MonoGenericInst containing (a copy) of those types.
16454         (mono_metadata_inflate_generic_inst): Update to changes.
16455         (mono_metadata_parse_generic_inst): Likewise.
16456         (mono_get_shared_generic_inst): Likewise.
16457         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16458         (mono_reflection_bind_generic_method_parameters): Likewise.
16459         * metadata-internals.h: Likewise.
16460         * icall.c (free_generic_context): Kill.
16461         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16462
16463         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16464         mono_metadata_type_dup.
16465         * marshal.c (mono_mb_create_method): Likewise.
16466
16467         * metadata.c (mono_metadata_type_dup): Rename from
16468         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16469         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16470         * marshal.c, metadata-internals.h: Update to changes.
16471
16472 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16473
16474         * class.c: fixed a small leak for array classes and removed warning.
16475
16476 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16477
16478         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16479         Return 0x8000000 for return parameters. Fixes #82161.
16480
16481 2007-07-21  Marek Habersack  <grendello@gmail.com>
16482
16483         * appdomain.c (get_shadow_assembly_location): append the current
16484         ticks value to the path. Avoids overwriting the same assemblies by
16485         several threads at the same time.
16486
16487 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16488         and Raja R Harinath  <rharinath@novell.com>
16489
16490         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16491         Simplify slightly.
16492         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16493         property for testing if a method is a generic method definition.
16494
16495 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16496
16497         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16498
16499 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16500
16501         * verify.c: used function from private branch, reverted to the one in class.h 
16502
16503 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16504
16505         * verify.c: a typo slipped in and the code wont compile
16506
16507 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16508
16509         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16510         disabled box instruction as it is doing the wrong thing
16511         improved stack dump messages, now it is easier to debug type related issues
16512
16513
16514 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16515
16516         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16517
16518 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16519
16520         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16521         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16522         grouped with class and valuetype. This change will simply 
16523         the code as it should be handled just like unmanaged pointers.
16524
16525 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16526
16527         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16528
16529 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16530
16531         * verify.c: several stack merge issues fixed, reference comparisons now
16532         check the type size. strict type check now works correctly.
16533         added more uses of IS_MANAGED_POINTER macro.
16534         fixed issues pointed by running the test suite against .net.
16535         
16536
16537 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16538
16539         * class.c, loader.c, class-internals.h: Removed the
16540         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16541         defines.
16542
16543         * icall.c: Better error checking in some internal reflection
16544         methods.
16545
16546 2007-07-18  William Holmes  <billholmes54@gmail.com>
16547
16548         * filewatcher.c : removed unused variable 'filename' in 
16549           ves_icall_System_IO_FSW_SupportsFSW
16550
16551 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16552
16553         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16554         obsolete, removed.
16555
16556 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16557
16558         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16559         
16560         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16561
16562 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16563
16564         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16565         Implement generics support.
16566         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16567
16568         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16569         type_args and method_args arguments.
16570         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16571         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16572         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16573
16574 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16575
16576         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16577           It adds a rootimage parameter to mono_reflection_get_type_internal,
16578           adds new function mono_reflection_get_type_with_rootimage and use
16579           the rootimage to resolve the types instead of the current image
16580
16581 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16582
16583         * culture-info-table.h: Forgot to update after r78304.
16584
16585 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16586
16587         * class.c (mono_class_is_open_constructed_type)
16588         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16589
16590 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16591
16592         * class.c (mono_bounded_array_class_get):  method fails if used with
16593         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16594         avoiding calculating the size for such array as it cannot be instantiated.
16595         Fix bug #82015
16596
16597 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16598
16599         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16600         field.
16601         * metadata.c, reflection.c: Update to changes.
16602
16603 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16604
16605         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16606         mono_class_is_valid_enum, they are used to valide a enum when loading.
16607         * reflection.c: used new functions to throw TypeLoadException when and
16608         invalid enum is build with TypeBuilder. Fixes #82018
16609   
16610 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16611
16612         * object.c: forgot commit of mono_class_setup_methods () to access
16613         iface->methods.
16614         * object-internals.h: added a few more handy fields to
16615         MonoIMTCheckItem.
16616
16617 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16618
16619         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16620         iface->methods.
16621
16622 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16623
16624         * class-internals.h, object-internals.h, object.c: IMT-based
16625         interface invocation core from Massimiliano Mantione
16626         (massi@ximian.com) with a reworked arch-specific interface,
16627         bsearch implementation and a few bugfixes and memory savings by me.
16628
16629 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16630
16631         * class.c (mono_class_create_from_typedef): mono would segfault if 
16632         an enum did not have a __value field. It now throws a TypeLoadException
16633         for such cases. Fix bug #82022
16634
16635 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16638
16639 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16640
16641         * class.c (mono_class_init): If a class is already inited but has
16642         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16643
16644 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16645
16646         * class.c: Properly handle the case of an unimplemented interface
16647         method.  Fixes: 81673.
16648
16649 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16650
16651         * class-internals.h, object.c: cleanup patch from massi: use
16652         MonoVTable->interface_bitmap since the vtable interfaces offset array
16653         is going away.
16654
16655 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16656
16657         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16658         GetMDStreamVersion icall instead.
16659
16660 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16661
16662         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16663         not use mono_dl_build_path() with a full library name: makes
16664         fallbacks to libgaim and libfam work.
16665
16666 2007-07-06  William Holmes  <billholmes54@gmail.com>
16667
16668         * assembly.c: Added a continue statement in probe_for_partial_name when
16669          parse_assembly_directory_name fails.  Fixes : 82002
16670
16671 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16672
16673         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16674         and added a verification  for TYPEDBYREF.
16675         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16676         make native int interchangeable with int32 and some small cleanup and formating.
16677         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16678         handle byref of byref.
16679         * verify.c (push_local): handle byref of byref.
16680         * verify.c (do_binop): invalid mix of values is unverifiable
16681         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16682         added visibility checks
16683         * verify.c (field related method): added visibility checks
16684         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16685
16686 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16687
16688         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16689         string.
16690
16691 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16692
16693         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16694
16695         * marshal.c (emit_marshal_string): When returning a string from managed code,
16696         allways make a copy even for unicode strings. Fixes #81990.
16697
16698 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16699
16700         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16701         of byref generic inst types (bug #81997).
16702
16703 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16704
16705         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16706         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16707
16708 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16709
16710         * marshal.c (emit_marshal_string): Add support for unicode strings in
16711         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16712
16713 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16714
16715         * verify.c: field load/store are now verified, missing only access checks now
16716
16717 2007-06-28  Martin Baulig  <martin@ximian.com>
16718
16719         * mono-debug.c (mono_debug_debugger_version): New public variable.
16720
16721 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16722
16723         * locales.c: When constructing DateTimeFormat or NumberFormat for
16724         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16725         MonoCultureInfo contructed from the current locale is always
16726         read-only and has UseUserOverride set to true. All MonoCultureInfo
16727         instances returned for GetCultures have both IsReadOnly and
16728         UseUserOverride set to true. Fixes part of bug #81930.
16729
16730 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16731
16732        * icall-def.h: Update System.__ComObject icalls
16733        * marshal.c: Avoid managed transition (and object creation)
16734        when looking up COM interface in RCW.
16735        * marshal.h: Ditto.
16736        
16737        Code is contributed under MIT/X11 license.
16738
16739 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16740
16741         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16742         to avoid crashes during assembly unloading.
16743
16744 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16745
16746         Fix MethodInfo.IsGenericMethodDefinition
16747         * reflection.c (mono_reflection_bind_generic_method_parameters):
16748         Rearrange code to ensure we always uses a generic method definition.
16749         * class.c (mono_class_inflate_generic_method_full): Set
16750         'generic_container' field only for generic method definitions.
16751         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16752         Use presense of 'generic_container' field as indication of being a
16753         generic method definition.
16754
16755 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16756
16757         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16758
16759         * object-internals.h: Reflect changes in the layout of the managed Delegate
16760         class.
16761         
16762         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16763         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16764         runtime memory used by the dynamic method. Fixes #77146.
16765
16766 2007-06-21  Dick Porter  <dick@ximian.com>
16767
16768         * file-io.h: 
16769         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16770         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16771         81767.
16772
16773 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16774
16775         * reflection.c (method_encode_methodspec): Add a tripwire.
16776         * class.c (inflate_generic_type): The fully open generic type is
16777         not the same as the generic type definition.
16778
16779 2007-06-21  Martin Baulig  <martin@ximian.com>
16780
16781         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16782
16783         * mono-debug-debugger.h
16784         (MonoDebuggerBreakpointInfo): Removed.
16785         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16786         (mono_debugger_remove_breakpoint): Likewise.
16787         (mono_debugger_breakpoint_callback): Likewise.
16788         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16789
16790 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16791
16792         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16793         generic type is not the same as the generic type definition.
16794         * class.c (mono_generic_class_get_class): Likewise.
16795
16796 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16797
16798         * icall.c: The second argument to 
16799         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16800         is a MonoType not a MonoClass.
16801
16802 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16803
16804         * verify.c: support for function pointers in the verifier
16805
16806 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16807
16808         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16809
16810 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16811
16812         * assembly.c: removed Mono.Data.SqliteClient from the list of
16813         forward-compatible assemblies as it breaks the ABI (bug #81899).
16814
16815 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16816
16817         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16818         lookup/update with the loader lock.
16819         * reflection.c (mono_class_bind_generic_parameters): No need to
16820         protect mono_metadata_lookup_* with the loader lock.
16821         * class.c (inflate_generic_type): Likewise.
16822         
16823         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16824         on a generic instantiated type.
16825
16826 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16827
16828         *verify.c: produce meanfull error messages on verification error
16829         *verify.c: fixed some cases of verification errors reported as validation errors
16830         *pedump.c: fixed the error name array, now it shows validation errors properly
16831         *verify.h: fixed the contant that should be used for verification errors
16832
16833 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16834
16835         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16836         for bug #77596, 81858 and 80743 (generics data structures on domain
16837         unload).
16838
16839 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16840
16841         Avoid allocating 'MonoGenericContext' on the heap.
16842         * class-internals (_MonoMethodInflated::context): Make field
16843         inline, not a pointer.
16844         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16845         stack.  Use the context embedded within the inflated method as the
16846         hash key, rather than 'new_context'.
16847         * class.c (inflate_generic_context): Simplify.  Return a struct
16848         rather than allocating on the heap.
16849         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16850         doesn't salt away a copy of the context -- simplifying the
16851         lifetime rules of a 'MonoGenericContext *'.
16852         (mono_method_get_context): Return pointer to embedded context.
16853         (setup_generic_array_ifaces): Allocate temporary context on stack.
16854         * reflection.c (inflate_mono_method): Likewise.
16855         (mono_reflection_bind_generic_method_parameters): Likewise.
16856         Use the context embedded within the inflated method as the hash key.
16857
16858         Avoid a source of allocation of 'MonoGenericContext'.
16859         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16860         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16861         * class.c: Update to changes.
16862         (mono_generic_class_get_context): Simplify drastically.  Now just
16863         returns a pointer to the field.
16864         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16865         argument as a const pointer.
16866         (mono_metadata_generic_context_equal): Likewise.
16867         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16868         Update to changes.
16869
16870 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16871
16872         * verify.c improved the handling of brtrue/brfalse, factored out common code
16873
16874 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16875
16876         Kill MonoGenericMethod.
16877         * class-internals.h (MonoGenericContext::method_inst): Rename from
16878         'gmethod' and convert to a MonoGenericInst.
16879         (MonoGenericMethod): Remove.
16880         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16881         * loader.c (method_from_methodspec): Update to changes.  Use a
16882         MonoGenericContext as the key to the hashtable.
16883         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16884         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16885         (mono_metadata_generic_context_hash): Likewise from
16886         'mono_metadata_generic_method_hash'.  Change hash function.
16887         (mono_metadata_load_generic_params): Update to changes.
16888         (mono_get_shared_generic_method): Remove.
16889         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16890         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16891         (inflate_generic_context): Likewise.
16892         (mono_class_inflate_generic_method_full): Likewise.
16893         (setup_generic_array_ifaces): Likewise.
16894         (mono_class_create_from_typespec): Likewise.
16895         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16896         (method_encode_methodspec): Update callsite.
16897         (reflection_methodbuilder_to_mono_method): Update to changes.
16898         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16899         MonoGenericContext as the key to the hashtable.
16900         (inflate_mono_method): Update to changes.
16901
16902         * class-internals.h (MonoGenericMethod::container): Remove.
16903         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16904
16905 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16906
16907         * profiler-private.h, profiler.c, profiler.h: added API to profile
16908         exception events.
16909
16910 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16911
16912         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16913
16914 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16915
16916         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16917         Fixed overflow and underflow not aborting the verification process.
16918
16919 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16920
16921         * class-internals.h (MonoStats): Added stats entries for dynamic
16922         code allocations.
16923
16924 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16925
16926         * loader.c (mono_free_method): Free header->locals and header->clauses.
16927
16928         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16929         dynamic case.
16930
16931         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16932
16933         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16934
16935 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16936
16937         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16938         the tables.
16939
16940 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16941
16942         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16943
16944 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16945
16946         MonoGenericMethod on a diet
16947         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16948         here ...
16949         (_MonoGenericMethod::reflection_info): ... from here.
16950         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16951         Update to changes.
16952         * reflection.c (inflate_mono_method): Likewise.
16953         (mono_reflection_bind_generic_method_parameters): Likewise.
16954
16955 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16956
16957         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16958         *verify.c: factored long ldarg forms to share code with short forms
16959
16960 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16961
16962         *verify.c: fixed code formating factored some duplicate code
16963         into a new function
16964
16965         *verify.h: fixed binary incompatibility introduced earlier
16966
16967         *pedump.c: fixed formating
16968
16969 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16970
16971         Fix assertion when disassembling Mono.C5.dll
16972         * loader.c (method_from_methodspec): Avoid inflating a method
16973         twice with the same context.  If the methodref is inflated, use
16974         the declaring method instead.
16975
16976         * class.c (mono_class_from_generic_parameter): Fix case similar to
16977         bug #81830 handled below, but for method containers.
16978
16979 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16980
16981         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16982         get_shared_generic_class.  Directly inflate the instance.
16983         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16984         (inflate_generic_class): Delete.
16985         (get_shared_generic_class): Delete.  Move setting of
16986         'cached_class' and 'cached_context' ...
16987         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16988
16989         * metadata.c (mono_metadata_lookup_generic_class): Change
16990         signature to take the components of a MonoGenericClass rather than
16991         an allocated MonoGenericClass.  Change semantics to be intern-like.
16992         * reflection.c (mono_class_bind_generic_parameters): Update to
16993         changes.  Make locking region tighter.
16994         * class.c (inflate_generic_class): Update to changes.
16995         (get_shared_generic_class): Likewise.
16996         * metadata-internals.h: Likewise.
16997
16998         * reflection.c (mono_class_bind_generic_parameters): Take and
16999         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
17000         (mono_reflection_bind_generic_parameters): Use
17001         'mono_class_bind_generic_parameters' rather than duplicate the code.
17002         * class.c (mono_bounded_array_class_get): Update to changes.
17003         * object-internals.h: Likewise.
17004
17005         * reflection.c (mono_class_bind_generic_parameters): Only support
17006         parameterizing generic type definitions.  Remove support for other
17007         open types.
17008
17009 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
17010
17011         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
17012
17013         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
17014         in the dynamic case.
17015
17016 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
17017
17018         * threads.c: When cleaning up thread, reset the Background bit.
17019         Fixes bug #81720.
17020
17021 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
17022
17023        * metadata.c: Move variable declarations to top of scope.
17024        * verify.c: Move variable declarations to top of scope.
17025
17026        Code is contributed under MIT/X11 license.
17027
17028 2007-06-08  Raja R Harinath  <rharinath@novell.com>
17029
17030         * reflection.c (mono_class_bind_generic_parameters): Replace
17031         open-coded loop with mono_metadata_inflate_generic_inst.
17032
17033         * class.c (get_shared_generic_class): Don't call
17034         mono_get_shared_generic_inst.  Use the container's own
17035         'class_inst'.
17036
17037         * metadata.c (mono_metadata_load_generic_params): Move
17038         initialization of 'context' field here from ...
17039         * class.c (mono_class_create_from_typedef): ... here, and ...
17040         * loader.c (mono_get_method_from_token): ... here.
17041
17042         * class.c (get_shared_generic_class): Rename from
17043         mono_get_shared_generic_class and make static.
17044         (mono_get_shared_generic_inst): Move to metadata.c.
17045         * loader.c (mono_get_shared_generic_method): Likewise.
17046         * class-internals.h, metadata-internals.h: Update to changes.
17047
17048         Fix #81830
17049         * class.c (mono_class_from_generic_parameter): Don't assume a
17050         generic container owner exists.  Generic containers from monodis
17051         don't have any.
17052
17053 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
17054
17055         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
17056         * verify.h: new typedefs to returns the non-verifiable status
17057         * verify.c: initial implementation of generics, stack merging and object compatibility check
17058
17059 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17060
17061         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17062         a MonoInternalHashTable again (fixed bug in internal hash table
17063         code).
17064
17065 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17066
17067         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17068         MonoInternalHashTable again (fixed bug in internal hash table
17069         code).
17070
17071 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17072
17073         * class.c, image.c, class-internals.h, domain.c,
17074         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
17075         changes.  Have to figure out what makes them break the SWF
17076         regression.
17077
17078 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17079
17080         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17081         a MonoInternalHashTable now.
17082
17083 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17084
17085         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17086         MonoInternalHashTable now.
17087
17088 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
17089
17090         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
17091         invoke_impl code.
17092
17093         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
17094
17095         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
17096         dependent trampoline.
17097
17098         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17099
17100         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
17101
17102 2007-05-29  Robert Jordan  <robertj@gmx.net>
17103
17104         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
17105
17106 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
17107
17108         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
17109
17110 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
17111
17112        * marshal.c: Fix interface lookup loops for
17113        cominterop_get_com_slot_for_method and 
17114        cominterop_get_method_interface. Only need to lookup
17115        if type is a class, else use interface type method is on.
17116
17117        Code is contributed under MIT/X11 license.
17118
17119 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
17120
17121         * reflection.c: HasSecurity can be present even if no specially 
17122         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
17123         SecurityAttribute). Fix CAS regression tests on buildbot.
17124
17125 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
17126
17127        * appdomain.c: Add configure checks for header files.
17128        * image.c: Add configure checks for header files.
17129        * file-io.c: Add configure checks for header files.
17130        * debug-mono-symfile.c: Add configure checks for header files.
17131        * threadpool.c: Add configure checks for header files.
17132        * console-io.c: Add configure checks for header files.
17133        * profiler.c: Add configure checks for header files.
17134        * rawbuffer.c: Add configure checks for header files.
17135        * icall.c: Add configure checks for header files.
17136        * rand.c: Add configure checks for header files.
17137        * socket-io.c: Add configure checks for header files.
17138
17139        Code is contributed under MIT/X11 license.
17140
17141 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
17142
17143         * reflection.c (mono_custom_attrs_from_builders): Remove the 
17144         assertion as it breaks the build.
17145         
17146         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
17147
17148         * reflection.c (lookup_custom_attr): Make a copy here too.
17149
17150         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
17151         dynamic images.
17152
17153         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
17154         images.
17155
17156         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
17157         info.
17158
17159 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
17160
17161         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
17162         (load_cattr_value): Ditto.
17163
17164 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
17165
17166         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
17167
17168 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
17169
17170         * threads.c: In "start_wrapper", set apartment_state to MTA if
17171         apartment_state is Unknown and we're running on 2.0 profile or
17172         higher.
17173         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
17174         to main method, then set apartment_state to Unknown on 1.0 profile,
17175         and MTA on 2.0 profile.
17176
17177 2007-05-16  Jb Evain  <jb@nurv.fr>
17178
17179         * class-internals.h (MonoDefaults): Add an attribute_class and
17180           customattribute_data_class.
17181         * domain.c (mono_init_internal): Populate them.
17182         * reflection.c: Use them to remove duplicates. Make a vew
17183         MonoClass variables `static'.
17184
17185 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
17186
17187         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
17188         step in implementing IMT, so that all isinst checks now can go
17189         through the bitmap.
17190         This was needed because vtables for TransparentProxy need to look
17191         like the vtable of the "target" class, so they need to point to
17192         its interface bitmap directly.
17193
17194         * object.c: inside "mono_class_create_runtime_vtable" and
17195         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
17196
17197 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
17198
17199         * object-internals.h
17200           culture-info.h : added territory field in MonoCulture and
17201           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
17202         * locales.c : fill territory field above too.
17203         * culture-info-table.h : regenerated.
17204
17205 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
17206
17207         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
17208         Fixes #81599.
17209
17210 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
17211
17212         * object.c: Always initialize apartment, even if 
17213         there is no custom attributes on entry point.
17214         
17215         Code is contributed under MIT/X11 license.
17216
17217 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
17218
17219         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
17220         * metadata.c: If no encoding is set, check for unicode
17221         on class.
17222         
17223         Code is contributed under MIT/X11 license.
17224
17225 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17226
17227         * threads.c: Handle if mono_thread_current returns NULL 
17228         
17229         Code is contributed under MIT/X11 license.
17230
17231 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17232
17233         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17234         in start_wrapper. Added mono_thread_init_apartment_state and
17235         mono_thread_cleanup_apartment_state.
17236         * object.c: Initialize thread apartment state on main thread
17237         by checking for STAThreadAttribute on entry point.
17238         * object-internals.h: Add apartment_state field to MonoThread.
17239         * threads-types.h: Add unmanaged definition of 
17240         System.Threading.ApartmentState, MonoThreadApartmentState.
17241         
17242         Code is contributed under MIT/X11 license.
17243         
17244 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17245
17246         * class.c: Fix windows build.
17247         * class-internals.h: Fix windows build.
17248         
17249         Code is contributed under MIT/X11 license.
17250
17251 2007-05-08  Robert Jordan  <robertj@gmx.net>
17252
17253         * process.c (CreateProcess_internal):
17254         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17255         .CreateNoWindow was specified. Fixes #81496.
17256
17257 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17258
17259         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17260         step in implementing IMT, replaced it with two compact arrays
17261         (interfaces_packed and interface_offsets_packed) and a bitmap that
17262         is used for isinst checks (interface_bitmap).
17263
17264         * class.c: (compare_interface_ids): compare function to pass to
17265         bsearch when looking for an interface with a given id.
17266         (mono_class_interface_offset): reimplemented using bsearch on
17267         interfaces_packed, getting the offset from interface_offsets_packed.
17268         (print_implemented_interfaces): utility debugging function.
17269         (setup_interface_offsets): reworked to initialize interfaces_packed,
17270         interface_offsets_packed and interface_bitmap.
17271
17272         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17273         with uses of interfaces_packed and interface_offsets_packed.
17274
17275 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17276
17277         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17278         mono_class_interface_offset prototype to wrap all accesses to
17279         "MonoClass.interface_offsets".
17280
17281         * class.c: Implemented mono_class_interface_offset, and wrapped all
17282         accesses to "MonoClass.interface_offsets".
17283
17284         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17285         "MonoClass.interface_offsets".
17286
17287 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17288
17289         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17290         GetMethodFromHandle overloads (bug #78637).
17291
17292 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17293
17294         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17295         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17296
17297 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17298
17299         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17300         #81498.
17301
17302         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17303         gracefully.
17304         (mono_custom_attrs_from_index): Ditto.
17305
17306         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17307         Fixes #81501.
17308
17309 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17310
17311         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17312         is now allocated from a mempool.
17313
17314 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17315
17316         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17317         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17318
17319 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17320
17321         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17322         mono_loader_clear_error () too late. Fixes #81463.
17323
17324 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17325
17326         * culture-info-table.h : regenerated.
17327
17328 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17329
17330         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17331         is missing.
17332
17333 2007-04-25  Dick Porter  <dick@ximian.com>
17334
17335         * Makefile.am: Put the mingw enforced-optimisation back into the
17336         PLATFORM_WIN32 section.
17337
17338 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17339
17340         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17341         patch.
17342
17343         * image.c (mono_image_load_module): New API function to load a module reference.
17344
17345         * image.c (load_modules): Load modules lazily. Fixes #80812.
17346
17347         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17348         
17349         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17350
17351         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17352         to mono_image_load_module_dynamic.
17353
17354 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17355
17356         * marshal.c: Fix calling convention for CCW on non-windows
17357         platforms. STDCALL on windows, CDECL everywhere else to work 
17358         with XPCOM and MainWin COM.
17359         
17360         Code is contributed under MIT/X11 license.
17361
17362 2007-04-23  Martin Baulig  <martin@ximian.com>
17363
17364         Fix #80969.
17365
17366         * loader.c
17367         (method_from_memberref): Added `gboolean *used_context' argument.
17368         (mono_get_method_from_token): Likewise.
17369         (mono_get_method_full): Don't insert the method in the cache when
17370         `used_context' is true.
17371
17372 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17373
17374         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17375
17376         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17377         create new MonoTypes for returned types.
17378         * class.c (mono_generic_class_get_class): Export mono-internal.
17379         * class-internals.h: Update to changes.
17380
17381 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17382
17383         * threadpool.c, threadpool.h, icall-def.h: patch from
17384         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17385
17386 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17387
17388         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17389         
17390         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17391
17392         * threads.c (mono_thread_get_stack_bounds): New helper function.
17393
17394         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17395         Correctly compute stack bounds when attaching. Fixes #81394.
17396
17397 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17398
17399         * reflection.c: fix handling of doubles in custom attributes
17400         for the arm-fpa format (bug #81368).
17401
17402 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17403
17404         * reflection.c (assembly_add_win32_resources): Mildly relax an
17405         bounds check to let the end pointer point just past the end of the
17406         allocated buffer.  (may fix #81384)
17407
17408 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17409
17410         * culture-info-table.h : regenerated.
17411
17412 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17413
17414         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17415         the thread is aborted early.
17416
17417 2007-04-05  Dick Porter  <dick@ximian.com>
17418
17419         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17420         FindFirstFile()/FindNextFile() to find entries.  This lets the
17421         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17422         81038.
17423
17424         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17425         the parameters of
17426         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17427
17428 2007-04-04  Martin Baulig  <martin@ximian.com>
17429
17430         * debug-helpers.c
17431         (mono_method_desc_full_match): Add support for nested classes.
17432
17433 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17434
17435         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17436
17437 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17438
17439         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17440         waiting for too many threads.
17441
17442 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17443
17444         * environment.c: Fix return value check on uname so we can get the 
17445         executing version on Solaris operating systems.
17446
17447 2007-03-28  Jb Evain  <jbevain@gmail.com>
17448
17449         * class.c (mono_type_get_name_recurse): Complete the
17450         fix for the creation of assembly qualified names for
17451         pointer types. Fixes #81208.
17452
17453 2007-03-27  Dick Porter  <dick@ximian.com>
17454
17455         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17456         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17457         changed.
17458
17459         * threads.c
17460         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17461         the value of ReleaseMutex().
17462
17463 2007-03-27  Dick Porter  <dick@ximian.com>
17464
17465         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17466         in little-endian order, not network endian, so must be converted
17467         to host endian here.  Fixes bug 80593.
17468
17469 2007-03-22  Jb Evain  <jbevain@gmail.com>
17470
17471         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17472         qualified names for pointer types. Fixes #81208.
17473
17474 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17475
17476         * marshal.c: Add support for PreserveSigAttribute. 
17477         
17478         Code is contributed under MIT/X11 license.
17479
17480 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17481
17482         * process.c: Fix endianness issues. Fixes #81126.
17483
17484         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17485         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17486
17487         * image.c (mono_image_lookup_resource): Make this work on big-endian
17488         machines.Change API contract so the caller needs to free the return value.
17489         
17490         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17491         API change.
17492         
17493 2007-03-14  Martin Baulig  <martin@ximian.com>
17494
17495         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17496         mono_type_get_desc() as well.
17497
17498 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17499
17500         * icall.c:  Fix environ access in VS.  
17501         
17502 2007-03-13  Alp Toker  <alp@atoker.com>
17503
17504         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17505         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17506         #63841.
17507
17508 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17509
17510         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17511         circular references among dynamic methods. Fixes #81091.
17512
17513         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17514
17515 2007-03-09  Martin Baulig  <martin@ximian.com>
17516
17517         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17518
17519 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17520
17521         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17522         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17523         
17524         Code is contributed under MIT/X11 license.
17525         
17526 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17527
17528         * loader.c: Reapply patch for bug #79424.
17529
17530 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17531
17532         * metadata.c (mono_type_to_unmanaged): Only convert object to
17533         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17534
17535 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17536
17537         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17538         (and incorrectly set) is_reference field from MonoGenericInst.
17539
17540 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17541
17542         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17543         a little earlier.
17544
17545         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17546
17547         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17548
17549 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17550
17551         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17552         FileOptions.1 value to mean "temporary", map that to
17553         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17554
17555         Fixes 80688
17556
17557 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17558
17559         * appdomain.c: implement MS .Net style shadow copying. Copies of
17560         the assemblies are made in a subdirectory of the dynamic base
17561         directory, the assembly names are preserved.
17562         Copy .mdb and .config files along with the assemblies being shadowed.
17563
17564 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17567         (emit_marshal_handleref): Ditto.
17568
17569         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17570         on Visual C++. Fixes #80671.
17571
17572 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17573
17574         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17575         for clone operations.
17576
17577 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17578
17579         * marshal.c: Fix warnings.
17580
17581 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17582
17583         * loader.c: allow case-insensitive matching of the dll name
17584         in dllmap handling when prefixed with "i:".
17585
17586 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17587
17588         * threads.c: Fix #ifdef for dummy_apc function for VS.
17589
17590 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17591
17592         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17593
17594 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17595         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17596         giving precedence to the methods with a fully qualified name
17597         (InterfaceName.MethodName) when building the interface sections
17598         of the vtable.
17599
17600 2007-02-16  Dick Porter  <dick@ximian.com>
17601
17602         * threadpool.c (append_job): Fix fast-path array handling, so it's
17603         less likely the array will grow exponentially when the load is
17604         heavy.
17605
17606 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17607
17608         * metadata-internals.h, loader.c: fix dllmap lookup order
17609         for non-function maps, too, and prepare for fallback code.
17610
17611 2007-02-12  Robert Jordan  <robertj@gmx.net>
17612
17613         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17614         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17615         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17616         GlobalFree. Fixes a part of bug #77075.
17617
17618 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17619
17620         * loader.c: implemented typedef parent in field memberref.
17621
17622 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17623
17624         * marshal.c: Fix warnings and remember to call Release on
17625         IUnknown of RCW.
17626         
17627         Code is contributed under MIT/X11 license.
17628
17629 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17630
17631         * class-internals.h: Add MonoHandleRef definition, and
17632         handleref_class to mono_defaults. 
17633
17634         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17635         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17636
17637         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17638         (do nothing on this stage)
17639         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17640         (emit_marshal_handleref): New method, used for argument handling
17641         of HandleRefs. 
17642
17643 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17644
17645         * class.c (mono_class_setup_parent): Lazily init com types.
17646         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17647         init com types.
17648         * object.c (mono_remote_class_vtable): Lazily init com types.
17649         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17650         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17651         * domain-internals.h: Expose mono_init_com_types.
17652         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17653         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17654         Add support for COM Callable Wrapper marshalling.
17655         * marshal.h: Add icall definitions.
17656         * gc.c: Handle freeing of CCWs in finalizer code.
17657         
17658         Code is contributed under MIT/X11 license.
17659
17660 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17661
17662         * reflection.c: changed all the signature encoding code to use
17663         a variable-sized buffer.
17664
17665 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17666
17667         * marshal.c: locking fixes: never take the loader lock
17668         or other runtime locks when holding the marshal lock
17669         (fixes bug#80664).
17670
17671 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17672
17673         * marshal.c: make the delegate function pointer mapping
17674         work for the moving GC.
17675
17676 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17677
17678         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17679         for bug #80618.
17680
17681 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17682
17683         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17684         gmodule.
17685
17686 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17687
17688         * threadpool.c: made the code moving-GC safe.
17689
17690 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17691
17692         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17693         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17694         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17695         warning cleanup.
17696         * reflection.c: warning cleanup, some threading and moving GC fixes.
17697
17698 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17699
17700         * class.c, loader.c: create the needed Set/Get/Address array methods
17701         as well as the .ctors in mono_class_init (), fixes bug #80567.
17702
17703 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17704
17705         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17706         we doesn't decrease its alignment. Should fix the sparc build.
17707
17708 2007-01-24  Dick Porter  <dick@ximian.com>
17709
17710         * socket-io.c
17711         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17712         Create the returned object if we need to ignore an unsupported
17713         socket option.  Fixes a segfault reported by Atsushi.
17714
17715 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17716
17717         * class.c, object.c: restrict GC-tracked fields to
17718         UIntPtr fields used inside corlib, so we provide better
17719         type info to the GC and also allow broken packing as in
17720         bug #80580.
17721
17722 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17723
17724         * sgen-gc.c: removed duplicated function.
17725
17726 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17727
17728         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17729         value that means that the value is not supported, but that we
17730         should not return a failure, but instead report this as a
17731         successful operation.
17732
17733 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17734
17735         Fix tests/bug79956.2.il
17736         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17737         (mono_generic_class_get_class): If the generic definition in an
17738         enum, copy over other fields related to it.
17739
17740 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17741
17742         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17743         genericinst enums (bug #79215).
17744
17745 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17746         * class.c: Fix bug 80307.
17747
17748 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17749
17750         * image.c: if the file table is not present, try to load
17751         all the modules, since we don't have info about them
17752         having or not metadata (bug #80517).
17753         * assembly.c: allow mono_assembly_load_references () to
17754         work for netmodules.
17755
17756 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17757
17758         * image.c, metadata-internals.h, object.c: execute module
17759         cctors when running on the 2 runtime if present (bug #80487).
17760
17761 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17762
17763         * icall.c: optimized InitializeArray() on bigendian.
17764
17765 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17766
17767         * icall.c: fix for the broken ARM FPA double format.
17768
17769 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17770
17771         * icall.c: handle endian issues for r4 and r8 types, too, in
17772         the InitializeArray() icall.
17773
17774 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17775
17776         * loader.c (mono_loader_error_prepare_exception): Clear the error
17777         once we have extracted the information from it, do this before we
17778         call into the JIT's class loading mechanisms.
17779
17780         * object.c (mono_class_create_runtime_vtable): Do not clear the
17781         loader error before calling mono_class_get_exception_for_failure
17782         as the loader error is needed inside
17783         mono_class_get_exception_for_failure to throw the error (thinko).
17784
17785         Fixes #80521
17786         
17787 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17788
17789         * reflection.c: align fields rva data so it's faster to load at
17790         runtime.
17791
17792 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17793
17794         Prepare to simplify GenericMethod handling.
17795         * class-internals.h (mono_method_get_context): New accessor function.
17796         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17797         rather than directly accessing '->context' field.
17798
17799         * class-internals.h (_MonoGenericParam.method): Move ...
17800         (_MonoGenericContainer): ... here.  Add into union with klass field.
17801         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17802         Update to changes.
17803
17804 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17805
17806         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17807         the wrapper type enum and reduce relocations.
17808
17809 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17810
17811         * reflection.c (inflate_mono_method): Reuse method instantiation
17812         from the generic method, if available.
17813
17814 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17815
17816         * marshal.c (emit_marshal_variant): Fix conv_arg
17817         type in last commit, based on whether parameter is byref.
17818         
17819 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17820
17821         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17822         marshalling.
17823         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17824         MONO_TYPE_OBJECT back for VARIANT support.
17825
17826 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17827
17828         * marshal.c, marshal.h, icall-def.h: Implement 
17829         Marshal.ReAllocCoTaskMem.
17830
17831 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17832
17833         * marshal.c: memory retention fixes: use the proper
17834         image cache for runtime_invoke method lookups.
17835
17836 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17837
17838         * mempool.c: added code to help debug mempool allocations.
17839
17840 2007-01-11  Dick Porter  <dick@ximian.com>
17841
17842         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17843         support (experimenting with faking it with IP_MTU_DISCOVER for
17844         systems that don't have IP_DONTFRAGMENT.)
17845         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17846         icall.
17847
17848         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17849
17850         * socket-io.h: Add new fields to MonoSocketAsyncResult
17851         corresponding to the new ones in Socket.cs.
17852
17853 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17854
17855         Fix IronPython regression mentioned in #80249
17856         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17857         'cached_context' field, since it may have been initialized as a
17858         side-effect of metadata parsing.
17859
17860         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17861         (_MonoGenericClass.cached_class): Move here and rename from lone
17862         remaining field of ...
17863         (_MonoInflatedGenericClass): ... this.  Remove.
17864         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17865         to changes.
17866
17867         Fix mcs/tests/test-128.cs regression.
17868         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17869         2007-01-10 change below.
17870         [MONO_TYPE_OBJECT]: Recurse into array case.
17871
17872 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17873
17874         * class-internals.h (mono_get_inflated_generic_class): Remove.
17875         * class.c (mono_get_inflated_generic_class): Remove.
17876         (mono_generic_class_get_class): Rename from
17877         mono_class_create_generic.
17878         (mono_class_from_mono_type) [GENERICINST]: Use it.
17879         * reflection.c, metadata.c: Update to changes.  Use
17880         'mono_class_from_mono_type'.
17881
17882 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17883
17884         * reflection.c: use passed type when encoding an array element
17885         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17886
17887 2007-01-09  Robert Jordan  <robertj@gmx.net>
17888
17889         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17890         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17891         Fixes bug #80392.
17892
17893 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17894
17895         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17896
17897         * object.c (set_value): Avoid aliasing between type->data.klass
17898         and type->data.generic_class.
17899
17900         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17901
17902 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17903
17904         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17905         between type->data.klass and type->data.generic_class.
17906
17907 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17908
17909         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17910         value in out parameters.
17911
17912 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17913
17914         Simplify invariant for MonoGenericClass::klass field.
17915         * class.c (mono_class_create_generic): Verify 'klass' is null.
17916         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17917         initialize 'klass' field.
17918
17919 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17920
17921         Ongoing work to avoid redundant data and simplify invariants.
17922         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17923         'generic_class', and change type to a GenericInst.
17924         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17925         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17926
17927 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17928
17929         * class.c : skip io-layer under PLATFORM_WIN32.
17930
17931 2007-01-03  Tor Lillqvist  <tml@novell.com>
17932
17933         Fix #80305: In a bundled executable, look in the bundled exe
17934         assembly to determine the runtime version. Add the possibility to
17935         bundle also the machine.config file.
17936         
17937         * assembly.c (mono_assembly_open_from_bundle): Make
17938         non-static. Allow being called even if we have no bundled
17939         assemblies, and return NULL right away in that case.
17940
17941         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17942         here.
17943
17944         * domain.c (app_config_parse): Take an assembly exe file name as
17945         parameter instead of a config file name. Check for a bundled
17946         config file for that assembly by calling
17947         mono_config_string_for_assembly_file() (see below) before looking
17948         for one in the file system.
17949         (get_runtimes_from_exe): Corrsponding change to call of
17950         app_config_parse().
17951         (get_runtimes_from_exe): Check for bundled assembly exe file first
17952         by calling mono_assembly_open_from_bundle(). If no bundled
17953         assembly exe file is found, call mono_image_open() as before to
17954         look it up in the file system.
17955
17956         * mono-config.c: Add variable bundled_machinec_onfig.
17957         (mono_config_string_for_assembly_file): New function.
17958         (mono_config_for_assembly): Move code snippet that looks for a
17959         bundled assembly .config file into the above new function. Call
17960         it.
17961         (mono_register_machine_config, mono_get_machine_config): New
17962         functions to set and retrieve
17963
17964         * assembly.h: Declare mono_register_machine_config().
17965
17966         * mono-config.h: Declare mono_get_machine_config() and
17967         mono_config_string_for_assembly_file().
17968
17969         * icall.c: No declaration of environ necessary on Win32. It is
17970         declared (as a macro expanding to a function call) in stdlib.h.
17971         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17972         New internal mono function. Returns the value of
17973         mono_get_machine_config() as a Mono string.
17974
17975         * icall-def.h: Add get_bundled_machine_config().
17976
17977 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17978
17979         Remove redundant field
17980         * class-internals.h (_MonoGenericContext.container): Remove field.
17981         * loader.c (mono_method_get_signature_full): Don't parse a
17982         "container" for a signature parse when the signature is inflated
17983         immediately.
17984         (method_from_methodspec): Likewise, for a generic_inst.
17985         * class.c, metadata.c, reflection.c: Update to changes.
17986
17987 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17988
17989         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17990         'cached_context', and change semantics -- it starts off NULL, and
17991         is initialized on demand.
17992         * class.c (mono_generic_class_get_context): New accessor to
17993         replace 'context' field accesses.
17994         (mono_class_get_context): New helper.
17995         (*): Update to changes.
17996         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17997
17998 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17999
18000         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
18001         before the memcpy.   Fixes Marshal2 regression.
18002
18003 2007-01-02  Jb Evain  <jbevain@gmail.com>
18004
18005         * blob.h: add a MONO_TYPE_ENUM definition
18006         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
18007         fix the encoding of arrays of enums in custom attributes.
18008
18009         Fixes #79666.
18010
18011 2007-01-01  Miguel de Icaza  <miguel@novell.com>
18012
18013         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
18014         string is null terminated, but only cut the string short if it
18015         overflows the buffer.   
18016         
18017         (mono_string_to_byvalstr): Also fix this routine.   The code here
18018         was not properly terminating a string (it was only terminated
18019         because of the previous catch-all memset). 
18020
18021         I left the memset, because I do not know if applications expect
18022         the runtime to clear this region. 
18023
18024         Fixes #79944.
18025
18026         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
18027         Clear the error before returning to unmanaged code to prevent the
18028         runtime from being confused later on (fixes  80420).
18029         (ves_icall_type_from_name): Always call mono_loader_clear_error
18030         after parsing a type that could have failed.
18031         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
18032
18033         * loader.c (mono_loader_clear_error): Fix indentation.
18034
18035 2006-12-28  Martin Baulig  <martin@ximian.com>
18036
18037         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
18038
18039 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18040
18041         * reflection.c: patch from Rolf Bjarne Kvinge to fix
18042         getting a token for an EnumBuilder.
18043
18044 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
18045
18046         * reflection.c: be more careful in case resource generation
18047         fails to create the data array.
18048
18049 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18050
18051         * sgen-gc.c: write barrier for clone and fix unregister handles.
18052
18053 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18054
18055         * reflection.c: some fixes needed in the generics code for the moving GC.
18056
18057 2006-12-22  Robert Jordan  <robertj@gmx.net>
18058
18059         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
18060         account. Fixes bug #80299.
18061
18062 2006-12-21  Raja R Harinath  <rharinath@novell.com>
18063
18064         Fix WaitHandle usage in delegates.
18065         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
18066         * object.c (mono_wait_handle_new): Use the property set method to
18067         initialize the handle.
18068         (mono_wait_handle_get_handle): New.
18069         * threadpool.c (mono_async_invoke): Use it.
18070         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
18071         Likewise.
18072         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
18073
18074 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
18075
18076         * marshal.c (emit_marshal): Call emit_marshal_variant and
18077         emit_marshal_com_interface when applicable.
18078         (emit_marshal_variant, emit_marshal_com_interface): Add
18079         methods for this case and remove if's from emit_marshal_object.
18080         
18081 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
18082
18083         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
18084
18085 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
18086
18087         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
18088         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
18089         and GlobalFree on Windows. Remove FIXME.
18090
18091 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18092
18093         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
18094         implementation for managed objects.
18095
18096 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
18097
18098         * object.c: implemented code to be used for checking
18099         that no reference field overlaps with non-references.
18100
18101 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18102
18103         * threadpool.c: fix queue code to be compatible with the
18104         moving GC.
18105
18106 2006-12-18  Miguel de Icaza  <miguel@novell.com>
18107
18108         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
18109         in structures by throwing ArgumentNullException.
18110
18111         (emit_marshal_safehandle): Also when they are null parameters.
18112
18113         (emit_marshal_safehandle): Add support for ref
18114         SafeHandles parameters
18115
18116 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18117
18118         * profiler.c: updated to use the mono-dl API instead of
18119         gmodule.
18120
18121 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18122
18123         * profiler.c: updated to use the mono-dl dynamic loading
18124         API instead of gmodule.
18125
18126 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18127
18128         * profiler.c: use readlink, older versions of glib don't have
18129         g_file_read_link ().
18130
18131 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18132
18133         * profiler.c: try to detect the path to mono if libc fails to provide
18134         a useful name (bug #80286).
18135
18136 2006-12-16  Raja R Harinath  <rharinath@novell.com>
18137
18138         Fix #80242
18139         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
18140         instance, use the generic type definition instead.
18141         (ves_icall_Type_GetNestedTypes): Likewise.
18142         * class.c (mono_class_create_generic): Always set the
18143         nested_classes of a generic instance to NULL, even if the generic
18144         type definition has nested types.
18145
18146 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
18147
18148         * marshal.c (mono_string_from_bstr): Revert previous Windows change
18149         and fix on Linux.
18150         
18151 2006-12-15  Miguel de Icaza  <miguel@novell.com>
18152
18153         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
18154         my arguments were in the wrong order.   I also fixed the Windows
18155         version which seems to have had the same issue.
18156
18157         (mono_free_bstr): On Unix, this is g_free.
18158         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
18159         conversions (for the tests in corlib to pass).
18160
18161 2006-12-14  Miguel de Icaza  <miguel@novell.com>
18162
18163         * marshal.c (emit_ptr_to_object_conv): For now, ignore
18164         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
18165         exception if a ref SafeHandle in a struct has changed).
18166         
18167         (emit_struct_conv): Do not perform layout checks for classes
18168         derived from SafeHandle, as those are specially handled. 
18169
18170         (emit_object_to_ptr_conv): Add support for
18171         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
18172
18173         (emit_marshal_safehandle): Implement conversion of return values
18174         of safehandles (MARSHAL_ACTION_CONV_RESULT).
18175         
18176         * threads.c: WaitHandle now is compiled with two different handles
18177         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
18178         for 2.0.
18179         
18180         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
18181         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
18182         these routines to cope with both kinds of fields.
18183
18184 2006-12-12  Miguel de Icaza  <miguel@novell.com>
18185
18186         * metadata.c (mono_type_to_unmanaged): Handle the case where
18187         type->data.klass is a SafeHandle, and in that case, return the
18188         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
18189         MONO_MARSHAL_CONV_SAFEHANDLE. 
18190
18191 2006-12-11  Miguel de Icaza  <miguel@novell.com>
18192
18193         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
18194         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
18195         calling emit_marshal_object.
18196
18197         (emit_marshal_safehandle): Implement marshalling of
18198         SafeHandle parameters (no ref support yet).
18199
18200         (MarshalAction): Document the defines as I implement
18201         them for SafeHandle.
18202
18203         (emit_marshal_object): indentation police.
18204
18205         * class-internals.h: Define MonoSafeHandle.
18206         Add safehandle_class to MonoDefaults type.
18207
18208         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
18209         list of classes to check for fields. 
18210
18211         * domain.c (mono_init_internal): Add SafeHandle to the list of
18212         mono_defaults loaded.
18213
18214 2006-12-15  Raja R Harinath  <rharinath@novell.com>
18215
18216         Fix #80253
18217         * reflection.c (mono_reflection_bind_generic_parameters): If the
18218         generic type definition is a type builder, ensure that it is fully
18219         initialized before instantiating it.  Kill some dead code.
18220
18221 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18222
18223         * object.c: clear the loader_error () before loading
18224         more metadata stuff (bug #80258).
18225
18226 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
18227
18228         * icall.c, icall-defs.h: type modifiers icalls for
18229         parameters and properties.
18230
18231 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18232
18233         * object.c, icall.c: fixed warnings.
18234
18235 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18236
18237         * marshal.c: fixed a couple of leaks and coding style in a few places.
18238
18239 2006-12-08  Dick Porter  <dick@ximian.com>
18240
18241         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18242         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18243         80173.
18244
18245 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18246
18247         * process.c: ProcessStartInfo may have only filename set and
18248         arguments can be NULL.
18249
18250 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18251
18252         * icall.c: fix leak found by Robert Jordan.
18253
18254 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18255
18256         * marshal.c, marshal.h: generate managed method to access an element
18257         of a multi-dimensional array.
18258
18259 2006-11-30  Paolo Molaro (lupus@ximian.com)
18260
18261         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18262
18263 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18264
18265         * icall.c: back out GetFields () fix until the serialization code is
18266         fixed to not depend on the incorrect behaviour.
18267
18268 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18269
18270         * profiler.c: provide defaults if none are set.
18271
18272 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18273
18274         * Makefile.am, attrdefs.h: new public header file with
18275         constants for attributes for use by embedders.
18276
18277 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18278
18279         * icall.c: GetFields () fix for bug #80064.
18280
18281 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18282
18283         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18284         removed long unused icalls.
18285
18286 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18287   
18288         * marshal.c: 
18289                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18290                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18291                 can be generated without a delegate class.
18292                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18293         
18294         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18295
18296 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18297
18298         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18299         #80069.
18300
18301 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18302
18303         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18304         icall-def.h: added icalls needed by System.GC.
18305
18306 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18307
18308         * loader.c: ensure the class in catch clauses is handled
18309         correctly for generics methods (fixes bug#79980).
18310
18311 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18312
18313         * monitor.h, monitor.c: added mono_locks_dump () function
18314         to help debug deadlocks involving managed locks.
18315
18316 2006-11-13  Dick Porter  <dick@ximian.com>
18317
18318         * file-io.c (get_file_attributes): If the file is a symlink try
18319         and get the stat data for the target, but also add the
18320         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18321         the specs for the windows symlink support, but will probably have
18322         to be reworked when I have test data from a vista machine.  Fixes
18323         bug 79887.
18324
18325 2006-11-13  Dick Porter  <dick@ximian.com>
18326
18327         * gc.c (mono_domain_finalize): 
18328         * marshal.c (mono_delegate_begin_invoke): 
18329         * threadpool.c (socket_io_init, mono_thread_pool_init)
18330         (mono_thread_pool_finish): 
18331         * monitor.c (mono_monitor_try_enter_internal): 
18332         * threads.c (mono_thread_resume, mono_thread_init)
18333         (mono_thread_suspend_all_other_threads)
18334         (mono_thread_execute_interruption): 
18335         * appdomain.c (mono_domain_unload): Check for NULL error returns
18336         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18337         75733.
18338
18339 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18340
18341         * process.c
18342         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18343         Only close the handle if the value of the handle is not
18344         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18345         robust.
18346
18347         Improvement for #75733, so that we do not run into this problem. 
18348
18349         
18350         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18351         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18352         internal variables.  Fixes #79462 
18353         
18354
18355 2006-11-09  Dick Porter  <dick@ximian.com>
18356
18357         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18358         Use poll() not select().  Fixes bug 79397.
18359
18360 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18361
18362         Fix #79872
18363         * assembly.c (mono_assembly_load_from_full): Check that the given
18364         image has an assembly manifest.
18365
18366 2006-11-09  Ankit Jain  <jankit@novell.com>
18367
18368         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18369         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18370         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18371
18372 2006-11-07  Dick Porter  <dick@ximian.com>
18373
18374         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18375         Put the old resolver behaviour back for pre-2.0 profiles.
18376
18377 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18378
18379         * threadpool.c: precise GC and locking fixes.
18380
18381 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18382
18383         * class.c: don't load types that have an explicit unaligned
18384         managed reference. Provide better info in the TypeLoad exception.
18385         Part of the fix for bug #79744.
18386         * object.c: use the correct check for class type load issues.
18387
18388 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18389
18390         * class.c: enforce alignment of fields with managed references
18391         even when Pack=1 is forced by the user (bug #77788).
18392
18393 2006-11-03  Dick Porter  <dick@ximian.com>
18394
18395         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18396         If the address reverse lookup fails, return it as the hostname
18397         anyway.  Fixes bug 79721.
18398
18399 2006-11-03  Dick Porter  <dick@ximian.com>
18400
18401         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18402         Fix build on Windows.
18403
18404 2006-11-02  Dick Porter  <dick@ximian.com>
18405
18406         * icall-def.h: 
18407         * object-internals.h: 
18408         * exception.c (mono_get_exception_thread_interrupted): 
18409         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18410         Fixes bug 74525.
18411
18412         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18413         Check for pending Thread.Interrupt.
18414
18415 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18416         * loader.c: Fixed bug 79684.
18417
18418 2006-10-27  Dick Porter  <dick@ximian.com>
18419
18420         * file-io.c (get_file_attributes): Force symlinks to directories
18421         to be returned as a regular file.  Fixes bug 79733.
18422 2006-10-26  Dick Porter  <dick@ximian.com>
18423
18424         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18425         CreateFile to open a directory then we need to set the
18426         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18427
18428 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18429
18430         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18431         friends.
18432
18433 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18434
18435         * sgengc.c: small cleanup of timer code.
18436
18437 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18438
18439         * sgen-gc.c: fix some warnings and start adding support for
18440         complete object removal on domain unload.
18441
18442 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18443
18444         * assembly.c: build_assembly_name should not consider a version
18445         number without build or revision number invalid. Fixes bug #79715.
18446
18447 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18448
18449         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18450         call kernel32 function OutputDebugString directly.
18451         
18452         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18453         
18454 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18455
18456         * reflection.c: small cleanup, using a function to insert a MonoString
18457         in the string heap.
18458
18459 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18460
18461         * reflection.c: moving GC fixes.
18462
18463 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18464
18465         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18466         all the objects with finalizers belonging to an unloading appdomain.
18467
18468 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18469
18470         * sgen-gc.c: added ability to allocate even when the nursery is fully
18471         pinned and fixed a couple of bugs.
18472
18473 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18474
18475         * threads.h: Revert the last change for now.
18476
18477         * threads.h (mono_thread_get_pending_exception): Rename this to
18478         mono_thread_get_undeniable_exception ().
18479
18480 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18481
18482         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18483         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18484         when fname does not refer to valid assembly. This result in a more
18485         meaningful error message.
18486         * exception.c: added mono_get_exception_bad_image_format2 which 
18487         constructs a BadImageFormatException using the ctor taking a custom
18488         message and the file name. Passing in a NULL msg results in a default
18489         message.
18490         * exception.h: define mono_get_exception_bad_image_format2 function.
18491         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18492         when file name pointed to an invalid IL image. Use 
18493         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18494         as this results in a more meaningful error message.
18495
18496 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18497
18498         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18499         #79465.
18500
18501 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18502
18503         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18504         consistency with the other _size functions.
18505         (mono_type_stack_size): Ditto.
18506
18507         * class.c object.c icall.c: Fix warnings caused by the above change.
18508
18509         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18510
18511         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18512
18513         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18514
18515 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18516
18517         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18518         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18519         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18520         threadpool.h, threads-types.h: mark more internal functions.
18521
18522 2006-10-11  Dick Porter  <dick@ximian.com>
18523
18524         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18525         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18526         reproduce the bug even before applying the fix.)
18527
18528 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18529
18530         * reflection.c: allow retrieving attributes for arguments in generic
18531         methods (bug #79241).
18532
18533 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18534
18535         * debug-mono-symfile.c: properly check fopen () result (found by
18536         coverity).
18537
18538 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18539
18540         * reflection.c: make error message clearer and fixed two
18541         issuelets found by Coverity.
18542
18543 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18544
18545         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18546
18547 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18548
18549         * object-internals.h, gc-internal.h, profiler-private.h:
18550         mark internal functions.
18551
18552 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18553
18554         * reflection.c: put data in the text section.
18555         * icall.c: recognize more types in type_from_typename ().
18556         * process.c, marshal.c: added some GC FIXMEs.
18557
18558 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18559
18560         * loader.c: check for NULL before initializing.
18561
18562 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * gc.c (finalizer_thread): Use a non-alertable wait here.
18565
18566         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18567         until the correct solution is found.
18568
18569 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18570
18571         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18572         modules with no metadata. Fixes #79596.
18573
18574         * image.c (load_metadata_ptrs): Put back the error message when
18575         the #- heap is encountered since the support is not complete yet.
18576
18577 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18578
18579         * gc.c: do not allow the user to SuppressFinalize () a
18580         delegate because it would leak the trampoline if present.
18581
18582 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18583
18584         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18585         PropertyPtr table.
18586
18587 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18588
18589         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18590
18591         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18592
18593         * row-indexes.h: Add definitions for *Ptr tables.
18594
18595         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18596
18597         * metadata.c (mono_metadata_translate_token_index): New helper function to
18598         translate table indexes used in uncompressed metadata.
18599         (mono_metadata_decode_table_row): Ditto.
18600         (mono_metadata_decode_table_row_col): Ditto.
18601
18602         * metadata.c: Add table schema for *Ptr tables.
18603
18604         * class.c loader.c: Use the new helper function to access the affected metadata
18605         tables.
18606         
18607         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18608         #38532.
18609         
18610 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18611
18612         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18613         sequences which can be unbounded in size. Fixes #79583.
18614
18615 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18616
18617         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18618         static initialization.
18619
18620         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18621
18622         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18623
18624         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18625
18626         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18627         ctor fails, i.e. throw the same exception on subsequent accesses.
18628         
18629 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18630
18631         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18632         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18633         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18634         Handle marshalling of interfaces and VARIANTs contained in structs.
18635         
18636         Code is contributed under MIT/X11 license.
18637         
18638 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18639
18640         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18641         
18642         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18643         mempool.
18644
18645 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18646
18647         * console-io.c: ignore previous SIGINT handler.
18648
18649 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18650
18651         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18652         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18653         #79460, #79461, #79485.
18654
18655         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18656
18657         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18658         #79217.
18659
18660 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18661
18662         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18663         could be generated from it.
18664
18665 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18666
18667         * rand.c: fix read loop to correctly handle EINTR.
18668
18669 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18670
18671         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18672         internal calls are defined to keep methods closer to the declaring
18673         type and allow a significant reduction in runtime relocations and
18674         memory usage.
18675
18676 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18677
18678         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18679         exception message to have FileNotFoundException use the default
18680         assembly load error message. Fixes bug #79426.
18681         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18682
18683 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18684
18685         * threadpool.c: (start_thread_or_queue) use the root domain when
18686         creating the thread instead of the async object one.
18687
18688 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18689
18690         * class.c, object.c, class-internals.h, reflection.c:
18691         for arrays, store element_size inside MonoClass (speedup
18692         for array object creation).
18693
18694 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18695
18696         * icall.c: fixed CodeBase to use the file name and not the module
18697         name (bug #79365).
18698
18699 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18700
18701         * mono-debug.c, mono-debug.h: export find_method as
18702         mono_debug_find_method ().
18703
18704 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18705
18706         * debug-helpers.c, class-internals.h: added a few functions useful
18707         when debugging under gdb.
18708
18709 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18710
18711         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18712         characters that need special handling.
18713
18714 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18715
18716         * mono-config.c: make the os/cpu specification more flexible,
18717         allowing lists and negation.
18718
18719 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18720
18721         * marshal.c: COM Interop fixes. Handle case where method->klass.
18722         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18723         calling convention on non-windows platforms. This is for
18724         compatibility with XPCOM and MainWin COM.
18725         
18726         Code is contributed under MIT/X11 license.
18727         
18728
18729 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18730
18731         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18732         correctly. Fixes #79217.
18733
18734         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18735
18736 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18737
18738         * mono-config.c: allow both an os and cpu attribute for dllmap
18739         and dllentry elemnets to enable a single config file to be used
18740         for multiple architectures.
18741
18742 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18743
18744         * loader.c: MonoLoaderError was cleared too soon on load failure.
18745         Fixes bug #79424.
18746
18747 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18748
18749         * icall.c: use the defining class vtable when accessing a
18750         static field, not a pobblibly derived class.
18751
18752 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18753
18754         * icall.c string-icalls.c: Remove references to unicode.h.
18755
18756         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18757
18758         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18759
18760         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18761         indicating the image where custom marshaller types should be looked up.
18762         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18763         custom marshallers, instead of corlib. Fixes #79425.
18764
18765 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18766
18767         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18768
18769 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18770
18771         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18772         Implement Environment.ProcessorCount.
18773         
18774         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18775         Implement Environment.ProcessorCount.
18776         
18777         * icall.c: 
18778         Add Environment.ProcessorCount icall.
18779         
18780         Patch by Jason McFall.
18781
18782 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18783
18784         * assembly.c: don't append .exe/.dll when the filename already contains
18785         one of those extensions.
18786
18787 2006-09-12  Martin Baulig  <martin@ximian.com>
18788
18789         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18790         to array interfaces.
18791
18792 2006-09-11  Martin Baulig  <martin@ximian.com>
18793
18794         * reflection.c (mono_image_build_metadata): Create the
18795         MethodImpl's after emitting all types and methods, so we don't
18796         need another fixup pass for them.
18797
18798 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18799
18800         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18801         change.
18802
18803 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18804
18805         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18806         unload.
18807
18808 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18809
18810         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18811         args is not set. Fixes #78926.
18812
18813 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18814
18815         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18816
18817         * image.c (load_class_names): Move this to class.c, and rename it to 
18818         'mono_image_init_name_cache'.
18819         (load_modules): Fix a warning.
18820
18821         * class.c icall.c image.c: Initialize image->name_cache lazily.
18822
18823         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18824         on its name using information in the AOT file.
18825
18826         * class.c (mono_class_from_name): Use the new hook function.
18827
18828 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18829
18830         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18831         correctly.
18832
18833         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18834         Fixes #79289.
18835         
18836 2006-09-06  Martin Baulig  <martin@ximian.com>
18837
18838         * icall.c (mono_lookup_internal_call): Small fix.
18839
18840 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18841
18842         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18843         double g_free.
18844
18845 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18846
18847         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18848         when --debug is specified.
18849
18850 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18851
18852         * class.c (setup_generic_array_ifaces): Fix a warning.
18853
18854 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18855
18856         * Temporarily remove the patch to assemly.c that checks the
18857         assembly versions as it breaks our gacutil.
18858
18859 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18860
18861         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18862
18863         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18864         a net 1.0 runtime.
18865
18866         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18867         created using the default ctor. Fixes #79152.
18868         (mono_string_builder_to_utf16): Ditto.
18869
18870 2006-09-01  Martin Baulig  <martin@ximian.com>
18871
18872         Fix handling of the generic array interfaces.
18873
18874         * class-internals.h
18875         (MonoDefaults): Removed `generic_array_class' and added
18876         `generic_ilist' class.
18877
18878         * class.c
18879         (mono_bounded_array_class_get): Add the new generic array interfaces.
18880         (setup_generic_array_ifaces): New static method; create vtable
18881         entries for each method in the generic array interfaces.
18882
18883         * metadata.c
18884         (select_container): Allow "parent-less" generic methods.
18885
18886         * marshal.c
18887         (mono_marshal_get_generic_array_helper): New public method.
18888
18889         * icall.c
18890         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18891         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18892         moved the interncall into System.Array.
18893
18894 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18895
18896         A few more cases of avoiding work on types with ->byref set.
18897         Has the real fix for #79238
18898         * icall.c (is_generic_parameter): New helper.
18899         (ves_icall_Type_GetGenericParameterPosition): Use it.
18900         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18901         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18902         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18903         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18904         reference types.
18905         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18906         reference types.
18907         (ves_icall_Type_get_IsGenericInstance): Likewise.
18908         (ves_icall_Type_get_IsGenericType): Likewise.
18909
18910 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18911
18912         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18913         class if possible.
18914
18915         * mempool.h (mono_mempool_get_allocated): New helper function.
18916
18917         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18918         change.
18919
18920         * mempool.c: Fix warnings and the calculation of stats.
18921
18922         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18923
18924         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18925
18926         * loader.c (mono_get_method_from_token): Update method_count stat.
18927
18928         * class-internals.h (MonoStats): Add some stats.
18929
18930 2006-08-31 Robert Jordan  <robertj@gmx.net>
18931
18932         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18933         with managed variants.
18934         All code is contributed under the MIT/X11 license.
18935         
18936 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18937
18938         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18939         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18940
18941         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18942
18943         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18944         with cycles in classes.
18945
18946         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18947
18948         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18949         missing a [MarshalAs] directive. Fixes #79203.
18950
18951         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18952         klass->marshal_info. Fixes #79217.
18953
18954 2006-08-30  Martin Baulig  <martin@ximian.com>
18955
18956         Committing a patch from Joachim Ante <joe@otee.dk>:
18957         Add support for binary data symbol stores.
18958
18959         * debug-mono-symfile.c
18960         (mono_debug_open_mono_symbol_file): Renamed into
18961         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18962         arguments.
18963
18964         * mono-debug.c
18965         (mono_debug_open_image): Added `raw_contents' and `size' args.
18966         (mono_debug_init_2_memory): New public function.
18967
18968 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18969
18970         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18971
18972 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18973
18974         * appdomain.c: implement support for ShadowCopyFiles.
18975
18976 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18977
18978         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18979         when value is NULL (and should remove CID #51).
18980
18981 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18982
18983         * image.c: moved 2 functions to ../utils.
18984
18985 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18986
18987         * gc.c: cope with the target object of a GC handle being NULL
18988         (bug #78877).
18989
18990 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18991
18992         * class.c: recursively check parent's explicit implementations
18993         of interface methods (fixes bug #79125).
18994
18995 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18996
18997         * filewatcher.c: Avoid warnings when building, do not redefine
18998         constants that are defined.
18999
19000         Remove warnings.
19001
19002 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19003
19004         * image.c: don't fail when the link points to an absolute path.
19005
19006 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
19007
19008         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
19009         Fix CID #3.
19010
19011 2006-08-17  Miguel de Icaza  <miguel@novell.com>
19012
19013         * image.c (full_path): A new method used to obtain the actual path
19014         of an assembly even in the presence of symbolic links.  
19015
19016         This is necessary for the case where we are running a binary that
19017         has been GACed, but we are using the "published" path name
19018         ($prefix/mono/1.0/blah.exe) which happens to point to the real
19019         file in the GAC.
19020
19021         This was the source of the failure for the `xsp' command with the
19022         recent AppDomain changes, as far as the runtime was concerned,
19023         there were two different assemblies: $prefix/mono/1.0/blah.exe and
19024         $prefix/mono/gac/blah/version/blah.exe.
19025
19026         (do_mono_image_open): use full path
19027
19028 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19029
19030         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
19031
19032 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
19033
19034         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
19035         domain_id is supplied. Fix CID #241 and corlib's unit tests.
19036
19037 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19038
19039         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
19040         small structures. Fixes #78990.
19041
19042 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19043
19044         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
19045
19046         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
19047
19048 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19049
19050         * appdomain.c:
19051         * marshal.c: don't load all the assemblies from a domain into newly
19052         created ones. The new domains might have different rules and load
19053         assemblies from different locations. Fixes bug #76757.
19054
19055         Patch by Lluis. Conflicts resolved by Brian Crowell.
19056
19057 2006-08-16  Alp Toker  <alp@atoker.com>
19058
19059         * socket-io.c: First half of the fix for #79084.
19060         Set sa_size to the length of the content, not that of the struct.
19061         Don't add NULL suffix to the content, this should be done in
19062         managed code if needed.
19063
19064 2006-08-14  Raja R Harinath  <rharinath@novell.com>
19065
19066         Fix part of #79012
19067         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
19068         mono_metadata_parse_type returns NULL.
19069
19070 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
19071
19072         * normalization-tables.h : new file for string normalization data.
19073         * locales.c, locales.h, icall.c :
19074           added load_normalization_resource() for string normalization,
19075           and icall as well.
19076         * Makefile.am : added normalization-tables.h to the sources.
19077
19078 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
19079
19080         * marshal.c: Add more helper functions to reduce code duplication and use them
19081         everywhere.
19082
19083 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
19084
19085         * marshal.c: Fix non-x86 stdcall warnings.
19086         
19087         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
19088         them everywhere.
19089
19090 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
19091
19092         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
19093         type check on multi-dimensional arrays. Fixes #79000.
19094
19095 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
19096
19097         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
19098         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
19099         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
19100         * class-internals.h: add is_com_object to class structure.
19101         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
19102         null checks to COM object marshalling. Fix .ctor call on RCW.
19103         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
19104         
19105         All code is contributed under the MIT/X11 license.
19106
19107 2006-08-09  Dick Porter  <dick@ximian.com>
19108
19109         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
19110         racing mono_monitor_allocator_lock() somewhere, so don't delete
19111         the critical section for now.  Found by running and exiting
19112         monodevelop.
19113
19114 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
19115
19116         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
19117         (ves_icall_System_ComObject_FindInterface): Ditto.
19118         (ves_icall_System_ComObject_CacheInterface): Ditto.
19119
19120         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
19121         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
19122
19123 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19124
19125         * threadpool.c: treat pipes from process asynchronous reads as sockets
19126         when reading from them, so we get select/poll or epoll to wait for
19127         data.
19128
19129 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
19130
19131         * loader.c: Fix a typo (CID #233) in the null check.
19132
19133 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
19134
19135         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
19136         Hopefully fixes #78949.
19137         
19138         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
19139         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
19140         bytes. Fixes #78972.
19141
19142 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19143
19144         * filewatcher.c: we need to set errno here.
19145
19146 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19147
19148         * filewatcher.c: let Win32Exception get the error value.
19149
19150 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19151
19152         * filewatcher.c: translate errno into win32 errors for Win32Exception
19153         to know what happened.
19154
19155 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
19156
19157         * threadpool.c: Fix more warnings.
19158
19159         * assembly.c (search_loaded): Fix warnings.
19160
19161         * threadpool.c (mono_thread_pool_finish): Fix warnings.
19162         (mono_async_invoke): Ditto.
19163
19164 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
19165
19166         * object.c (mono_remote_class_vtable): Need to create proxy vtable
19167         entries for __ComObject type in addition to ComImport types.
19168         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
19169         about hash table.
19170         
19171         All code is contributed under the MIT/X11 license.
19172
19173 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
19174
19175         * image.c: avoid tentative loading of modulerefs that contain
19176         no metadata (P/Invoke library names).
19177
19178 2006-07-28  Dick Porter  <dick@ximian.com>
19179
19180         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
19181         mono_loader_lock() somewhere, so don't delete the critical section
19182         for now.  Found by running and exiting monodevelop.
19183
19184 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19185
19186         * filewatcher.c: define the inotify syscalls when we're building on
19187         linux and have sys/syscall.h. The build system might not have support
19188         for inotify but the target system might have it.
19189
19190 2006-07-26  Miguel de Icaza  <miguel@novell.com>
19191
19192         * domain.c: Documentation updates.
19193
19194         * loader.c (mono_free_method): Do not release the method
19195         information if we are being profiled, as profilers will use this
19196         information at shut down to present some data to the user.
19197
19198         This is needed so that the profiler does not crash, as the
19199         profiler tends to keep MonoMethods around, and they might become
19200         invalid if we free these.
19201
19202         (mono_get_method_constrained): Return the original CIL stream
19203         method as well, so verification can be performed against it.
19204
19205 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19206
19207         * filewatcher.[ch]: support for inotify file system watcher.
19208         * icall.c: add new internal calls for the inotify file system watcher.
19209
19210 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19211
19212         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
19213         #78888.
19214
19215 2006-07-20  Dick Porter  <dick@ximian.com>
19216
19217         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
19218         warning.
19219
19220 2006-07-20  Dick Porter  <dick@ximian.com>
19221
19222         * threads.c (start_wrapper): Do the thread cleanup while we still
19223         hold a reference to its object.  Fixes bug 78123.
19224
19225 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
19226
19227         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19228         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19229           "managed-to-managed".
19230         * icall.c: Redirect string constructors that take sbyte* to
19231           ves_icall_System_String_ctor_RedirectToCreateString.
19232         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19233           to CreateString () methods with matching signature.
19234         * reflection.c: Use original security informations for
19235           MONO_WRAPPER_MANAGED_TO_MANAGED.
19236         * security-manager.c: Use original security informations for
19237           MONO_WRAPPER_MANAGED_TO_MANAGED.
19238         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19239           that is a placeholder and only its address should be used.
19240         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19241           that is a placeholder and only its address should be used.
19242
19243 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19244
19245         Begin implementing COM Interop.
19246         * appdomain.c: Increment corlib version.
19247         * class.c: Set ComImport classes' parent to __ComObject.
19248         * loader.c: Mark cominterop methods as such.
19249         * domain.c: Add __ComObject class to MonoDefaults structure.
19250         * image.c: Add 2 hashtables to the image for COM Interop related methods
19251         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19252         using the mempool allocator
19253         
19254         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19255         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19256         declaration for mono_metadata_type_dup_mp.
19257         
19258         * debug-helpers.c: Added strings for two additional wrapper types
19259         * object.c: Create proxy objects for ComImport classes
19260         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19261         and added __ComObject class to MonoDefaults structure.
19262         
19263         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19264         MonoComInteropProxy and MonoComObject.
19265         
19266         * marshal.c: Added support for COM Interop
19267         (signature_cominterop): Converts managed signature to corresponding
19268         unmanaged COM signature.
19269         (cominterop_get_function_pointer): gets unmanaged function pointer via
19270         COM object vtable
19271         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19272         (cominterop_get_method_interface): returns interface type that method is defined on
19273         (mono_mb_emit_cominterop_call): emits native call to function pointer
19274         gotten from vtable
19275         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19276         that matches signature of unmanaged function.
19277         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19278         (cominterop_get_invoke): forwards call from proxy to __ComObject
19279         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19280         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19281         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19282         
19283         * marshal.h: Added Marshal icall declarations.
19284         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19285         so we can access them in finalizer
19286         
19287 2006-07-14  Dick Porter  <dick@ximian.com>
19288
19289         * object.c (mono_type_initialization_cleanup): Fix a race
19290         condition by temporarily commenting out the critical section
19291         deletion.
19292
19293 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19294
19295         * reflection.c (create_custom_attr): Fix some warnings.
19296         (create_custom_attr_data): Ditto.
19297         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19298         types. Fixes #78855.
19299
19300 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19301
19302         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19303
19304         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19305
19306 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19307
19308         * reflection.c (resolve_object): Add support for DynamicMethod.
19309
19310         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19311         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19312
19313 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19314
19315         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19316         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19317
19318 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19319
19320         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19321         Fixes #77888.
19322
19323 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19324
19325         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19326         slightly: remove a shadow local variable.
19327
19328 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19329
19330         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19331         definition that introduces the virtual function slot.
19332         Also fix Coverity #105.
19333
19334 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19335
19336         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19337         for dynamic assemblies. Fixes #78724.
19338
19339 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19340
19341         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19342         Fixes #78722.
19343
19344 2006-06-21  Martin Baulig  <martin@ximian.com>
19345
19346         * reflection.c
19347         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19348         fixes #76484.
19349
19350 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19351
19352         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19353
19354 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19355
19356         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19357         nor TYPEREFs.
19358         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19359         Inflate result if necessary.
19360         (mono_class_get_full): Remove old version.  Rename from
19361         'mono_class_get' and add 'context' argument.  Pass it to
19362         ..._create_from_typespec.
19363         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19364         (mono_ldtoken): Revert change below.
19365
19366 2006-06-20  Martin Baulig  <martin@ximian.com>
19367
19368         * class.c (mono_ldtoken): Don't pass the generic context to
19369         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19370
19371 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19372
19373         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19374         and later freeing it. Fixes #78638.
19375
19376 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19377
19378         * icall.c (mono_class_get_throw): Revert over-zealous error
19379         throwing, the caller for mono_class_get_throw will cope with
19380         errors when classes are not properly initialized already.
19381
19382         The code still copes with loader exceptions though.
19383
19384         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19385         
19386 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19387
19388         Fixes the `make run1' version of RuntimeAbort (to be commited,
19389         source is in Bugzilla).
19390         
19391         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19392         FALSE on class loading failure instead of returning true.
19393
19394         * class.c (mono_class_create_from_typedef): It is possible for
19395         mono_metadata_interfaces_from_typedef_full to fail if a class is
19396         not found, cope with this.
19397         
19398
19399 2006-06-14  Dick Porter  <dick@ximian.com>
19400
19401         * socket-io.c: 
19402         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19403         4.1.1
19404
19405 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19406
19407         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19408
19409 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19410
19411         * icall.c: Another fix for building mono in Visual Studio.
19412
19413 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19414
19415         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19416         
19417 2006-06-09  Martin Baulig  <martin@ximian.com>
19418
19419         * debug-mono-symfile.c: Put this back and really fix it this
19420         time. Sorry for all the trouble.
19421
19422 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19423
19424         * icall.c (mono_class_get_throw): Fix a warning.
19425         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19426         ReflectionTypeLoadException if needed. Fixes #78606.
19427
19428         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19429         (mono_class_init): Ditto.
19430
19431         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19432         ref_only exceptions.
19433         (mono_loader_clear_error): Make this work even if there is no error.
19434
19435 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19436
19437         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19438         Marshal.GetComSlotForMethodInfo using internal call.
19439
19440 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19441
19442         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19443         a function for signalling it.
19444
19445         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19446         a referenced assembly is not found.
19447
19448         * loader.c (mono_loader_error_prepare_exception): Add support for 
19449         LOADER_ERROR_ASSEMBLY. Fix formatting.
19450
19451 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19452
19453         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19454         for VARIANT marshalling on windows and increment corlib version
19455         since Variant struct was added.
19456
19457 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19458
19459         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19460         stack trace line information:
19461
19462         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19463         (Martin) when looking up B which is between A and C, return A not C.
19464
19465         Bug is #78573.
19466
19467         Thanks to Alexander Olk for tracking this down.
19468
19469 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19470
19471         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19472         
19473         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19474         avoid clobbering its value.
19475         (mono_string_to_lpstr): Fix a warning on windows.
19476
19477 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19478
19479         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19480
19481         * reflection.c loader.c: Removed references to 'dummy' flag.
19482
19483         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19484
19485         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19486         it gets GC tracking.
19487
19488         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19489         GC tracking.
19490         
19491         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19492
19493         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19494
19495         * appdomain.c: Bump corlib version.
19496
19497 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19498
19499         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19500         CEE_STIND_REF when working with object references.
19501
19502 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19503
19504         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19505         Fixes #78539.
19506
19507 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19508
19509         * loader.c (method_from_memberref): Fix argument value for
19510         mono_loader_set_error_method_load (I was passing the MonoClass
19511         instead of the class name char *).
19512
19513 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19514
19515         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19516         CEE_STIND_REF when working with object references.
19517
19518 2006-05-30  Martin Baulig  <martin@ximian.com>
19519
19520         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19521         mono_method_full_name() change and replace the ':' with a '.'
19522         here.
19523
19524 2006-05-30  Martin Baulig  <martin@ximian.com>
19525
19526         * debug-mono-symfile.c
19527         (mono_debug_symfile_lookup_location): Fix the algorithm:
19528         when looking up B which is between A and C, return A not C.
19529
19530 2006-05-29  Martin Baulig  <martin@ximian.com>
19531
19532         * mono-debug.h
19533         (MonoDebugMethodInfo): Make the typedef public.
19534         (MonoDebugSourceLocation): New public struct.
19535
19536         * mono-debug.c
19537         (mono_debug_source_location_from_address): Removed.
19538         (mono_debug_source_location_from_il_offset): Removed.
19539         (mono_debug_il_offset_from_address): Removed.
19540         (mono_debug_address_from_il_offset): Removed.
19541         (mono_debug_lookup_method): New public function.
19542         (mono_debug_lookup_source_location): New public function; replaces
19543         the old mono_debug_source_location_from_*() functions; see the
19544         inline documentation.
19545         (mono_debug_free_source_location): New public function.
19546         (mono_debug_print_stack_frame): New public function; see the
19547         inline documentation.
19548
19549         * debug-mono-symfile.c
19550         (mono_debug_find_source_location): Renamed into
19551         mono_debug_symfile_lookup_location(); only take a
19552         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19553         documentation.
19554         (mono_debug_find_method): Renamed into
19555         mono_debug_symfile_lookup_method().
19556
19557 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19558
19559         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19560         returned by mono_image_open_full ().
19561
19562         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19563         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19564         #78517.
19565
19566         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19567         #78518.
19568
19569 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19570
19571         * class.c (mono_class_from_typeref): handle missing images
19572         earlier, deals with bug #78418.   Refactor code; 
19573
19574         Fix a warning introduced in my previous commit (some stale code
19575         from before I revisited my patch).
19576
19577         * class.c (mono_class_create_from_typedef): On failure, remove the
19578         class from the MonoImage->class_cache as the class is not
19579         initialized;   Fixes the leak pointed out by Paolo.
19580
19581 2006-05-25  Dick Porter  <dick@ximian.com>
19582
19583         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19584         DeleteCriticalSections until I figure out which one may still be
19585         sometimes locked when mono_thread_cleanup is called.
19586
19587 2006-05-24  Dick Porter  <dick@ximian.com>
19588
19589         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19590         of mono_thread_manage and back into its own function, so it can be
19591         called after the finalizer thread has finished.
19592
19593         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19594
19595 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19596
19597         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19598         Fixes #78495.
19599
19600         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19601         with non-blittable elements.
19602         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19603
19604 2006-05-24  Martin Baulig  <martin@ximian.com>
19605
19606         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19607         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19608
19609         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19610         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19611         `mono_debugger_event_handler' to NULL.
19612
19613 2006-05-24  Martin Baulig  <martin@ximian.com>
19614
19615         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19616
19617 2006-05-24  Martin Baulig  <martin@ximian.com>
19618
19619         * mono-debug-debugger.h
19620         (mono_debugger_create_notification_function): Added
19621         `MonoCodeManager *' argument.
19622
19623 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19624
19625         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19626
19627 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19628
19629         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19630         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19631         implementation.
19632
19633 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19634
19635         * icall.c: precise GC support: objects can't be stored in unmanaged
19636         memory anymore, even if they are kept alive by other references: since
19637         they can move the GC needs to be able to always find them.
19638
19639 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19640
19641         * object.c: precise GC support for static fields. Support
19642         for moving GCs: write barriers and pinned allocation for interned
19643         strings.
19644
19645 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19646
19647         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19648         structure.
19649
19650 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19651
19652         * class.c, gc.c: sgen and precise GC updates.
19653
19654 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19655
19656         * marshal.h, marshal.c: added write barrier wrapper and precise type
19657         fixes.
19658
19659 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19660
19661         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19662         support.
19663
19664 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19665
19666         * reflection.c: precise and sgen GC updates.
19667
19668 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19669
19670         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19671
19672 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19673
19674         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19675
19676 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19677
19678         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19679         MONO_TYPE_OBJECT. Fixes #78462.
19680
19681 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19682
19683         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19684         and blittable types.
19685
19686 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19687
19688         * class.c (mono_class_get_exception_for_failure): Implement parts
19689         of a TODO: if the loader error is set (instead of the class
19690         error), we return a Loader exception that can be properly thrown
19691         elsewhere.
19692
19693         This was exposed by some Winforms 2.0 code that I tried to run
19694         (Atsushi pointed me to it).
19695
19696 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19697
19698         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19699         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19700         
19701         * marshal.c (emit_marshal_vtype): Add limited support for 
19702         UnmanagedType.LPStruct. Fixes #78427.
19703
19704         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19705         Applied a patch from kangaroo to fix #77523.
19706
19707 2006-05-17  Martin Baulig  <martin@ximian.com>
19708
19709         * threads.c
19710         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19711         (debugger_thread_created): Removed.
19712         (debugger_thread_exited): Removed.
19713
19714 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19715
19716         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19717
19718         * object-internals.h (MonoReflectionResource): Sync with managed version.
19719
19720 2006-05-12  Wade Berrier <wberrier@novell.com>
19721
19722         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19723
19724 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19725
19726         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19727         functions try to allocate from the image mempool.
19728
19729 2006-05-12  Dick Porter  <dick@ximian.com>
19730
19731         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19732
19733 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19734
19735         * object.c: The FieldGetter and FieldSetter methods require the full
19736         name of the class, not only the name. Fixes bug #78277.
19737
19738 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19739
19740         * loader.c (method_from_memberref): Do not pass the NULL klass to
19741         mono_loader_set_error_() methods.  Pass the non-NULL value
19742         (class). 
19743
19744 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19745
19746         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19747         (mono_assembly_close): Null out assembly->image->references after freeing it.
19748
19749         * image.c (mono_image_close): Free image->references.
19750         
19751         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19752
19753 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19754
19755         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19756         before checking if it's NULL (g_assert).
19757
19758 2006-05-10  Martin Baulig  <martin@ximian.com>
19759
19760         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19761         I thought I already killed that two months ago, but now it somehow reappeared.
19762
19763 2006-05-10  Martin Baulig  <martin@ximian.com>
19764
19765         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19766
19767 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19768
19769         * reflection.c: Allocate memory for dynamically created methods in the image
19770         mempools.
19771
19772 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19773
19774         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19775         don't use the ad pointer before checking if it's NULL (g_assert).
19776
19777 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19778
19779         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19780         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19781
19782         * marshal.c: Allocate all signatures from mempools.
19783
19784         * marshal.c: Allocate some more signatures from mempools.
19785
19786 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19787
19788         * object.c (mono_load_remote_field): The code used to provide a
19789         temporary variable for returning results if the user did not
19790         provide a result pointer.  But our temporary variable was allocted
19791         on the satck.
19792
19793         Fix calling code to always pass a result area.   Coverity ID 103.
19794
19795 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19796
19797         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19798         value, not the old. Fixes #78312.
19799         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19800
19801         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19802         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19803         per-image cache.
19804
19805         * assembly.c (mono_assembly_close): Free image->references.
19806
19807         * assembly.c (mono_assembly_names_equal): Fix a warning.
19808         (mono_assemblies_cleanup): Cleanup more global data.
19809
19810         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19811
19812         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19813         ptr_cache and image->modules.
19814
19815         * image.c (mono_image_init): Allocate array_cache lazily.
19816         
19817 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19818
19819         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19820         behavior was changed recently and has bad side effects.
19821
19822 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19823
19824         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19825         
19826         * assembly.c (mono_assembly_close): Remove a debug printf.
19827
19828         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19829
19830         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19831         to also allow for temporary references between mono_image_open ()/close ().
19832
19833         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19834
19835 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19836
19837         * marshal.c: Fix support for dynamic methods.
19838
19839         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19840
19841         * marshal.c (mono_marshal_cleanup): New cleanup function.
19842
19843         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19844         image mempools.
19845
19846         * class.c (mono_class_init): Fix leaking class->nested_classes.
19847
19848         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19849
19850         * image.c (mono_image_init): Initialize the new cashes.
19851
19852         * image.c (mono_image_close): Destroy the new cashes.
19853
19854         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19855
19856         * mempool.c (mono_mempool_strdup): New helper function.
19857
19858         * class-internals.h: Add prototype for mono_loader_unlock ().
19859
19860         * domain.c (mono_jit_info_table_find): Fix a warning.
19861         (mono_debugger_check_runtime_version): Ditto.
19862
19863         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19864         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19865         functions to these modules.
19866
19867         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19868         metadata modules.
19869         
19870         * marshal.c (mono_free_bstr): Fix a warning.
19871
19872         * assembly.c (mono_assembly_open_full): Fix another small leak.
19873
19874         * object.c: Fix some unload leaks in the remoting code.
19875
19876         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19877         function.
19878
19879         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19880
19881         * reflection.c: Fix some unload leaks in dynamic assemblies.
19882
19883 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19884
19885         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19886         * marshal.h: Add BSTR support on Win32
19887         * icall.c: Add BSTR icalls
19888         * metadata.h: Add BSTR enums
19889
19890 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19891
19892         Work to catch the crash from #76795 and turn it into an
19893         exception.   As I stubbed out pieces of the VisualBasic support,
19894         I found a number of places where the code was failing and I added
19895         checks to those places. 
19896         
19897         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19898         function return a status code.  If we fail to parse the signature
19899         from mono_metadata_parse_generic_inst, return FALSE.
19900
19901         * loader.c (mono_get_method_from_token): If we fail to load the
19902         method (mono_class_get) return NULL.   
19903
19904         * (method_from_memberref): Return NULL if we are unable to parse
19905         the method signature
19906
19907         (mono_loader_error_prepare_exception): Since we now use the
19908         loader_error flag internally to stop processing, and obtaining
19909         exceptions that might be thrown will walk this code path the
19910         proper way of going from a MonoLoaderError into a
19911         MonoException was convoluted.   This new routine encapsulates the
19912         process of turning the error into an exception and *clearing* the
19913         error afterwards.
19914         
19915 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19916
19917         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19918         with missing assemblies), and to cope with:
19919
19920                 * Missing fieldref from a non-existing assembly.
19921                 * Missing methodref from a non-existing assembly.
19922
19923         The first batch of work to address *some* of the issues from 76661.
19924         
19925         * object.c (mono_class_create_runtime_vtable): If we fail to
19926         initialize the class raise the exception here. 
19927
19928         * metadata.c (mono_class_get_overrides_full): If any methods fail
19929         to load return the failure to the caller.
19930
19931         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19932         flagging assemblies that failed to load.   
19933
19934         Do not crash if we are unable to load the assembly.
19935
19936         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19937         assemblies. 
19938
19939         * loader.c (mono_loader_set_error_type_load): Change the
19940         convention to always pass unallocated strings, so we make our own
19941         copies (I know our own code had duplicated strings before, but
19942         this keeps the normal conventions).
19943         (method_from_memberref): Call mono_loader_set_error_method_load
19944         for all possible failures of loading the class. 
19945         Remove assert, turn into a loader error.
19946
19947         (mono_loader_error_to_exception): Move this routine from mini
19948         (mini_loader_error_to_exception) there was no need to have that in
19949         mini. 
19950
19951         * class.c (mono_class_from_typeref): If we were not able to load
19952         the assembly with mono_assembly_load_reference, call the
19953         mono_loader_set_error_type_load to register the problem.
19954
19955         (mono_class_setup_fields): If we fail to load the type from
19956         mono_metadata_parse_type_full, call mono_class_set_failure and
19957         break from the loop.
19958
19959         If class->exception_type is set, we do not layout the fields as
19960         that might crash the runtime, and instead return (from breaking
19961         from the previous loop).
19962
19963         (mono_class_setup_vtable): This now returns a boolean indicating
19964         whether the table was properly setup.   The decision is driven by
19965         mono_class_get_overrides_full which might run into non-existing
19966         methods. 
19967         
19968         (mono_class_init): Returns TRUE on success or FALSE if there was a
19969         problem in loading the type (incorrect assemblies, missing
19970         assemblies, methods, etc).
19971
19972         When we call mono_class_setup_fields we also check for a potential
19973         error inside this call (either a class exception or a general
19974         loader exception).
19975
19976         (mono_class_create_from_typedef): If the parent fails to load
19977         (calling mono_class_get_full) return NULL.
19978         
19979         ** Important **
19980
19981         calls to mono_metadata_parse_type_full should be checked
19982         everywhere and set the mono_class_set_failure
19983         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19984
19985         The current patch checks the places where my manually constructed
19986         tests show the errors are showing up, but we should do it
19987         everywhere. 
19988
19989         ** Important2 **
19990
19991         mono_class_init return values should be tested everywhere, like
19992         the previous case this is something that we should audit
19993         everywhere and not only on the cases exposed by the tests I
19994         created. 
19995
19996 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19997
19998         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19999         boolean parameter and instead pass the information on `options'
20000         parameter (FileOptions).
20001
20002         * icall.c: Register the new signature for MonoIO.Open.
20003
20004         * debug-helpers.c (dis_one): Trying to understand how coverity
20005         works.  Fix Run 5, item 78.
20006
20007 2006-04-26  Dick Porter  <dick@ximian.com>
20008
20009         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
20010         dereference.
20011
20012 2006-04-25  Martin Baulig  <martin@ximian.com>
20013
20014         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
20015
20016         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
20017         debugger_thread_created().
20018         (debugger_gc_push_all_stacks): Don't handle the main thread in any
20019         special way.
20020         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
20021         (mono_debugger_finalize_threads): New function; undo the effects
20022         of mono_debugger_init_threads().
20023         (mono_debugger_create_all_threads): Removed.
20024
20025 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
20026
20027         * image.c (mono_image_close): Tidy up trace messages.
20028
20029         * assembly.c (mono_assembly_close): Ditto.
20030
20031         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
20032         no longer references an already freed assembly. Fixes #78168.
20033
20034 2006-04-21  Dick Porter  <dick@ximian.com>
20035
20036         * threads.c (mono_thread_detach): Fix reference counting when
20037         detaching threads.
20038
20039 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
20040
20041         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
20042         #78155.
20043
20044 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
20045
20046         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
20047         (mono_type_to_stind): Ditto.
20048
20049         * marshal.c: Use the new helper functions to simplify code.
20050
20051         * image.c (mono_image_close): Add some code for help debug assembly unloading
20052         problems.
20053
20054         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
20055         image mempool.
20056
20057         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
20058         assembly was already loaded in another appdomain. Fixes #78083.
20059
20060 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
20061
20062         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
20063         referenced assemblies.
20064         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
20065
20066         * domain.c (mono_domain_free): Add a trace message.
20067
20068         * appdomain.c (add_assemblies_to_domain): Ditto.        
20069
20070         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
20071         field.  
20072
20073 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20074
20075         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
20076
20077 2006-04-12  Martin Baulig  <martin@ximian.com>
20078
20079         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
20080         `USE_INCLUDED_LIBGC'.   
20081
20082 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20083
20084         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
20085         the patch contains ../ and a small directory name later. Hopefully fixes
20086         #78035.
20087
20088 2006-04-10  Martin Baulig  <martin@ximian.com>
20089
20090         Clean up the debugger's thread-handling code.
20091
20092         The debugger's thread-handling code has been moved from
20093         ../mini/debug-debugger.c to threads.c.  We now iterate directly
20094         over the `threads' hash, keep track of exiting threads and also
20095         use proper locking.
20096
20097         We can now debug XSP and XSP based applications with the debugger.
20098
20099         * object-internals.h (MonoThread): Added `gpointer end_stack'.
20100
20101         * threads.h
20102         (MonoThreadCallbacks): Removed; this was only used by the debugger.
20103         (mono_install_thread_callbacks): Likewise.      
20104
20105         * threads.c (mono_thread_callbacks): Removed.
20106         (debugger_thread_created, debugger_thread_exited): New static functions.
20107         (start_wrapper): Call debugger_thread_created().
20108         (thread_cleanup): Call debugger_thread_exited().
20109         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
20110         (mono_debugger_init_threads): New public function.
20111         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
20112         iterate directly over the `threads' hash and also use proper locking.
20113
20114         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
20115
20116         * mono-debug-debugger.h
20117         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
20118
20119 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
20120
20121         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
20122         argument type=array. Fixes #78057.
20123
20124 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
20125
20126         * culture-info-table.h : regenerated. Fixed bug #69652.
20127
20128 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
20129
20130         * loader.c metadata.c: Reapply a variant r59116.
20131         
20132         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
20133
20134         * class.c (mono_class_setup_interface_offsets): New internal function.
20135
20136         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
20137         interfaces too. Fixes #77398.
20138
20139         * reflection.c (encode_cattr_value): Add support for 
20140         parameter type=object, argument type=array.
20141         (load_cattr_value): Ditto. Fixes #77916.
20142
20143         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
20144         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
20145
20146         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
20147         a byval char array and CharSet is Ansi.
20148
20149         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
20150
20151 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
20152
20153         * metadata.c: Add some locking comments.
20154         
20155         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
20156         mempool.
20157         (mono_metadata_free_method_signature): Don't free the signature itself.
20158
20159         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
20160
20161         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
20162         reference the same MonoImage.
20163         (mono_assembly_load_from_full): Add an assert.
20164
20165 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
20166
20167         * image.c (mono_image_close): Don't put the image we are about to free into the
20168         loaded_images_guid_hash.
20169
20170         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
20171         to reduce code duplication.
20172
20173         * marshal.c: Register the native functions called by this module as icalls, to
20174         somewhat centralize the creation of MonoMethodSignature's.
20175
20176         * loader.c (mono_method_signature): Add a cache for method signatures.
20177
20178         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
20179         the parameter attributes of a method.
20180         (mono_metadata_parse_method_signature_full): Refactored the computation of
20181         parameter attributes into a separate function. Also avoid one allocation in
20182         most cases.
20183
20184         * assembly.c (mono_assembly_close): Ditto.
20185
20186         * image.c (mono_image_close): Log trace messages with INFO level.
20187
20188         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
20189
20190         * image.c reflection.c: Correct reference counting of image modules.
20191         
20192         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
20193         of this function from the image mempool.
20194         
20195         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
20196         to allow more cached types to be used.
20197
20198         * mono-debug.c (mono_debug_add_method): Appled patch from
20199         David S. Miller  <davem@sunset.davemloft.net>: Access 
20200         minfo->lexical_blocks[] entry elements using read32().
20201
20202 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
20203
20204         * loader.c (mono_free_method): No longer free the method header for non-dynamic
20205         methods as it is allocated from the mempool.
20206
20207         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
20208         image mempool.
20209
20210         * metadata-internals.h: Add comments describing the reference counting scheme
20211         used for MonoImage and MonoAssembly.
20212
20213         * image.c assembly.c reflection.c: Rework reference counting of images and 
20214         assemblies so they are freed when the runtime is shut down. Free some 
20215         additional memory structures when an image is unloaded.
20216         
20217 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
20218
20219         * class.c loader.c reflection.c: Allocate more data structures in
20220         the image mempool.
20221
20222 2006-03-31  Miguel de Icaza  <miguel@novell.com>
20223
20224         * icall.c
20225         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
20226         build on pre glib 2.4 systems.
20227
20228 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20229
20230         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20231
20232         * icall.c: Fix some warnings.
20233
20234 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20235
20236         * culture-info-table.h : regenerated.
20237
20238 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20239
20240         * threads.c, object-internals.h, verify.c: changed the culture caching
20241         code to use a normal MonoArray for storage so the GC can keep track of
20242         them easily. Fixed bits of the cache logic, too and simplified the
20243         code.
20244
20245 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20246
20247         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20248         thread for non-Boehm GCs.
20249
20250 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20251
20252         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20253         needed to keep track of the data for static fields.
20254
20255 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20256
20257         Fix #75172
20258         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20259         for interface classes.  Use 'num_methods' instead.
20260         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20261         before using '->vtable_size' field.
20262
20263 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20264
20265         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20266         doesn't contain managed pointers, so use a normal hashtable.
20267
20268 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20269
20270         * reflection.c, class-internals.h, domain.c: fixed handling of types
20271         used as values for objects in custom attributes (bug #77915):
20272
20273 2006-03-24  Martin Baulig  <martin@ximian.com>
20274
20275         * class.c (mono_class_setup_fields): Added support for generic
20276         instances; fixes #77580.
20277
20278 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20279
20280         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20281
20282 2006-03-24  Dick Porter  <dick@ximian.com>
20283
20284         * file-io.c (get_file_attributes): More stat macro breakage.
20285         Fixes bug 77759.
20286
20287 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20288
20289         * profiler.c: added the file=filename option in the default profiler
20290         to output the profile data to filename.
20291
20292 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20293
20294         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20295         bug #77877.
20296
20297 2006-03-22  Martin Baulig  <martin@ximian.com>
20298
20299         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20300         allocated `MonoClassField *' in `fb->handle'.
20301
20302 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20303
20304         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20305         allocate interface ID to save memory and allow better ID reuse on
20306         appdomain unload. setup_generic_vtable () removal from Martin.
20307
20308 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20309
20310         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20311         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20312         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20313         write barriers for reference stores with managed objects accessed with
20314         C structures in the runtime and in embedding programs.
20315
20316 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20317
20318         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20319         'interface_id' and 'max_interface_id' fields of MonoClasses
20320         representing open generic types.
20321
20322 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20323
20324         * object.h, object.c, icall.c: added functions to deal with
20325         storing valuetypes that contain references in managed objects.
20326         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20327         fixes and comments around uses of mono_array_addr ().
20328
20329 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20330
20331         * object.h, icall.c, monitor.c: object.GetHashCode ()
20332         implementation that supports the moving garbage collector.
20333
20334 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20335
20336         * icall.c, threads-types.h, threads.c: implemented finalizer for
20337         LocalDataStoreSlot.
20338
20339 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20340
20341         * metadata.c (mono_type_size): Add a fixme.
20342         (mono_type_stack_size): Ditto.
20343
20344         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20345         'type_forwarders' field.
20346
20347         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20348         attribute from net 2.0.
20349
20350         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20351         from class.c.
20352
20353         * class.c (mono_class_setup_fields): Fix a warning.
20354         
20355         * class.c (mono_class_from_name): Add support for assemblyref entries
20356         in the EXPORTEDTYPE table.
20357
20358         * reflection.c: Add support for handling type forwarders under net 2.0.
20359
20360         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20361         
20362 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20363
20364         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20365         overwriting entries in ModuleBuild->types, also clean up the code
20366         a little. Fixes #77774.
20367
20368 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20369
20370         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20371         load friend assembly info when present.
20372
20373 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20374
20375         Fix crasher on gtest-158.cs.
20376         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20377         the return value if the MonoClass we want is yet in an
20378         inconsistent state.
20379         * class.c (mono_class_create_from_typedef): Add an comment
20380         explaining an order dependency between mono_class_setup_parent and
20381         mono_class_setup_mono_type.
20382
20383 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20384
20385         * class.c: documentation updates and events bug fix.
20386
20387 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20388
20389         * class.c: some cleanup, locking fixes.
20390
20391 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20392
20393         * class.c: fix the generics code to setup nested
20394         type info to the instantiated type (bug #77770).
20395
20396 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20397
20398         * marshal.c: fixed a few type correctness issues.
20399
20400 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20401
20402         * loader.c: the Set/Get/Addrtess array methods should be public.
20403
20404 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20405
20406         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20407         
20408         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20409         info->wrapper.
20410
20411 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20412
20413         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20414
20415         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20416
20417         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20418         (mono_mempool_alloc0): Ditto.
20419
20420 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20421
20422         * socket-io.c:
20423         (create_object_from_sockaddr): it was allocating 4 extra bytes
20424         for the AF_UNIX data. Fixes bug #77747.
20425
20426 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20427
20428         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20429
20430 2006-03-09  Dick Porter  <dick@ximian.com>
20431
20432         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20433         Fixes bug 76966 again.
20434
20435 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20436
20437         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20438         names from r57532
20439         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20440
20441 2006-03-07  Martin Baulig  <martin@ximian.com>
20442
20443         * object.c
20444         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20445
20446 2006-03-07  Martin Baulig  <martin@ximian.com>
20447
20448         * class.c
20449         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20450         regression introduced in r56970; see gtest-252.cs.
20451
20452         * loader.c (mono_get_method_constrained): Correctly handle generic
20453         methods; see gtest-253.cs.
20454
20455 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20456
20457         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20458
20459 2006-03-04  Martin Baulig  <martin@ximian.com>
20460
20461         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20462         compute the parent type at runtime, just like we're already doing
20463         it for interfaces.
20464
20465         * reflection.c
20466         (mono_reflection_bind_generic_parameters): Don't compute the
20467         parent type anymore.
20468
20469         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20470
20471 2006-03-04  Martin Baulig  <martin@ximian.com>
20472
20473         * mono-debug-debugger.h
20474         (mono_debugger_create_notification_function): Allocate memory at
20475         runtime and return a pointer to it.
20476
20477 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20478
20479         * assembly.c: Fix windows build.
20480         
20481         * assembly.c: Fix build.
20482
20483         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20484
20485         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20486         
20487 2006-03-03  Dick Porter  <dick@ximian.com>
20488
20489         * process.c
20490         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20491         Check parameters before dereferencing them.  Fixes Aaron's part of
20492         bug 77393.
20493
20494 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20495
20496         Fix performance regression.
20497         * loader.c (find_method_in_class): Add 'from_class' argument.
20498         Rename 'klass' argument to 'in_class'.  The signature is compared
20499         against the method in 'in_class', and the corresponding method is
20500         returned from 'from_class'.
20501         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20502         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20503         type definition and generic instantiation in parallel.
20504         (mono_get_method_constrained): Update to changes.
20505
20506 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20507
20508         * threads.c: make sure the domain is correct, too when doing
20509         mono_thread_attach ().
20510
20511 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20512
20513         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20514         windows. Fixes #77683.
20515
20516 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20517
20518         * object.h, *: introduced specific way to set elements of an array
20519         of references to be used as write barrier. Still need to audit the
20520         uses of mono_array_addr.
20521
20522 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20523
20524         * object-internals.h: New field to cache the assmebly name, patch
20525         from Tambet Ingo (tambet@ximian.com)
20526
20527 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20528
20529         * decimal.h, class-internals.h, metadata-internals.h,
20530         file-io.h: mark a few function declarations as internal, to
20531         reduce the number of PLT entries.
20532
20533 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20534
20535         * file-io.c: fix typo in warning message.
20536
20537 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20538
20539         * loader.c: on unix, lookup the "*A" version of a function
20540         if charset is auto as a second option before failing.
20541
20542 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20543
20544         * class.h (mono_class_inflate_generic_method): Revert to two
20545         argument version.
20546         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20547         (mono_class_inflate_generic_method_full): Add.
20548         * class.c (mono_class_inflate_generic_method_full): Rename from
20549         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20550         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20551         * loader.c, reflection.c: Update to changes.
20552
20553 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20554
20555         * icall.c: const fixes and small improvements.
20556
20557 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20558
20559         * threadpool.c: for asynchronous connect(), enable the same workaround
20560         for BSD 6 as for the Mac. Fixes bug #77637.
20561
20562 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20563
20564         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20565         formatted classes. Fixes #77524.
20566
20567 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20568
20569         * class.c (inflate_generic_type): Add a couple more
20570         micro-optimizations.
20571         (inflate_generic_context): Don't use the 'gmethod' from
20572         'inflate_with'.
20573         (mono_class_inflate_generic_method): If the method has generic
20574         parameters, but the passed-in context doesn't have a 'gmethod',
20575         create one.  Use the possibly simplified generic instantiation
20576         from the declaring class instead of the one passed in.
20577
20578 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20579
20580         Make generic method signature and method header handling lazy.
20581         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20582         (inflate_generic_header): Likewise.
20583         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20584         parameter to avoid inflating types.
20585         (mono_get_inflated_method): Empty out.
20586         * class.h (mono_class_inflate_generic_method): Update to changes.
20587         * loader.c (mono_get_method_from_token): Don't parse signature for
20588         generic methods, nor methods of generic classes.
20589         (mono_method_signature): Rename from 'mono_method_signature'.
20590         Inflate signature on demand.
20591         (mono_method_get_header): Inflate method header on demand.
20592         * reflection.c: Update to changes.
20593
20594 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20595
20596         * metadata.c (mono_metadata_inflate_generic_inst): If the
20597         instantiation is closed, don't bother expanding it in the new
20598         context.
20599         * class.c (inflate_generic_class): If the generic instantiation
20600         doesn't change after inflation, return the argument itself.
20601         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20602         Add bounds checks.
20603         (inflate_generic_context): If neither the generic class nor the
20604         generic method instantiations change, return the original context.
20605         * reflection.c (mono_method_get_object): Do
20606         'mono_get_inflated_method' before accessing the ->klass field.
20607         (inflate_mono_method): Don't create a MonoGenericMethod unless
20608         necessary.
20609         (inflate_method): Don't pass a constructed type as the declaring
20610         type of a methodbuilder.
20611
20612 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20613
20614         * object.c: fix memory overwrite.
20615
20616 2006-02-22  Dick Porter  <dick@ximian.com>
20617
20618         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20619         it doesn't work any more.
20620         (mono_threads_request_thread_dump): Fix unused variable warnings.
20621
20622 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20623
20624         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20625         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20626         the public header file.
20627
20628 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20629
20630         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20631
20632 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20633
20634         * class-internals.h, object.c: reduce the size of MonoVTable
20635         and store the interface_offsets array at negative offsets.
20636
20637 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20638
20639         * metadata.c: tweak table descriptors data structures to reduce
20640         size and runtime relocations.
20641
20642 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20643
20644         * marshal.c: fix some types and opcodes to be type-safe
20645         in marshaling wrappers.
20646
20647 2006-02-21  Ankit Jain  <jankit@novell.com>
20648
20649         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20650
20651 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20652
20653         * metadata.c (get_constraints): Relax debugging checks for monodis.
20654
20655 2006-02-21  Ankit Jain  <jankit@novell.com>
20656
20657         * metadata.c (mono_metadata_load_generic_params): Move the code
20658         checking for ambiguous generic params from here to mono/dis/get.c
20659         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20660
20661 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20662
20663         Fix assertion triggered when compiling nemerle.
20664         * class.c (mono_get_shared_generic_inst): Rename from
20665         get_shared_inst and make non-static.
20666         * loader.c (mono_get_shared_generic_method): New.  Used to create
20667         the MonoGenericContext-equivalent of a MonoGenericContainer.
20668         (mono_get_method_from_token): Initialize the 'context' field of
20669         the created MonoGenericContainer.
20670         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20671         * metadata.c (get_constraints): Add sanity check.
20672         * class-internals.h: Add new internal methods.
20673
20674         * reflection.c (verify_safe_for_managed_space): New sanity check.
20675         Currently checks that owner-less generic parameters aren't allowed
20676         in managed space.
20677         (mono_type_get_object): Use it.
20678         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20679         that are now in mono_type_get_object.
20680         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20681
20682 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20683
20684         * metadata.c (mono_type_create_from_typespec): Rename from
20685         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20686         argument and caching of types in the generic container.
20687         (unwrap_arrays, find_generic_param): Remove.
20688         * metadata-internals.h: Update.
20689         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20690
20691 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20692
20693         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20694
20695         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20696         return values. Fixes #77581.
20697
20698         * class.c (mono_fnptr_class_get): Switch name and name_space.
20699
20700         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20701         classes and add support for [In, Out] attributes.
20702         (mono_marshal_free_asany): Ditto. Fixes #77524.
20703
20704 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20705
20706         * class.c (mono_class_from_generic_parameter): Make more robust to
20707         incomplete MonoGenericContainers from monodis.
20708
20709 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20710
20711         * class-internals.h: added some more exception types.
20712         * class.c, metadata.c: added a few checks to handle missing
20713         types.
20714
20715 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20716
20717         Use owner-less generic-params some more.
20718         * class.c (my_mono_class_from_generic_parameter): Remove.
20719         (mono_class_from_generic_parameter): Handle null image,
20720         param->name and param->owner.
20721         (mono_class_from_mono_type): Update.
20722         (mono_class_create_from_typespec): Remove 'container' parameter.
20723         If that parameter is non-null, the result is always inflated by
20724         'mono_class_get_full' anyway.
20725         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20726         parameter.
20727         (mono_class_get_full): Update.
20728
20729         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20730         instance is not open, don't bother inflating.
20731         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20732         parse metadata for inflated classes.
20733         (_mono_class_get): Change GenericContext* parameter to
20734         GenericContainer*.
20735         (mono_class_create_from_typespec): Likewise.  Simplify, and
20736         implement trivially.  All the cases are handled in
20737         mono_class_from_mono_type.  Don't inflate returned class.
20738         (mono_class_get_full): Delegate GENERICINST optimization to
20739         inflate_generic_type.
20740         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20741
20742 2006-02-16  Dick Porter  <dick@ximian.com>
20743
20744         * socket-io.c (create_object_from_sockaddr): Fix typo.
20745         (create_sockaddr_from_object): Check array lengths before
20746         potentially accessing items off the end.
20747         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20748         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20749         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20750         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20751         length checks to avoid wraparound overflows.
20752         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20753         contents of the array of sockets
20754         (hostent_to_IPHostEntry2)
20755         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20756         Check return value of inet_ntop ().
20757         (addrinfo_to_IPHostEntry): Fix typo
20758
20759 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20760
20761         Type metadata parsing doesn't use generic-instantiation information.
20762         * metadata.c (mono_metadata_parse_array_full): Change
20763         MonoGenericContext* parameter to MonoGenericContainer*.
20764         (mono_metadata_parse_type_full): Likewise.
20765         (mono_type_create_from_typespec_full): Likewise.
20766         (mono_metadata_parse_mh_full): Likewise.
20767         (mono_metadata_parse_generic_inst): Likewise.
20768         (do_mono_metadata_parse_generic_class): Likewise.
20769         (do_mono_metadata_parse_type): Likewise.
20770         * metadata-internals.h: Update to changes.
20771         * class.c (mono_class_find_enum_basetype): Likewise.
20772         (mono_class_setup_fields): Likewise.
20773         (mono_class_create_from_typespec): Likewise.
20774         * loader.c (method_from_methodspec): Likewise.
20775         (mono_get_method_from_token): Likewise.
20776         (mono_method_get_header): Likewise.
20777
20778 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20779
20780         * marshal.c: handle additional GENERICINST case (patch from
20781         Thong Nguyen <tum@veridicus.com>).
20782         Fix a few cases where LDIND_I/STIND_I was used for references.
20783
20784 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20785
20786         * reflection.c (mono_reflection_get_token): Remove unused variable.
20787
20788 2006-02-16  Martin Baulig  <martin@ximian.com>
20789
20790         * reflection.c (mono_reflection_get_token): Add support for fields
20791         in instantiated generic types.
20792
20793         * icall.c
20794         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20795
20796 2006-02-15  Martin Baulig  <martin@ximian.com>
20797
20798         * icall.c
20799         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20800         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20801         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20802         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20803
20804 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20805
20806         * class.c, metadata.c, metadata.h, object.c, icall.c,
20807         marshal.c: changed mono_type_get_underlying_type () to do
20808         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20809         Fixed handling of instantiated generic valuetypes (bug #75479).
20810
20811 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20812
20813         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20814         Delegate to mono_metadata_decode_value, and work on the returned value.
20815
20816         * icall.c (ves_icall_MonoType_GetGenericArguments):
20817         Add consistency check here too.
20818         
20819 2006-02-15  Ankit Jain  <jankit@novell.com>
20820
20821         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20822         char/short etc.
20823
20824 2006-02-15  Ankit Jain  <jankit@novell.com>
20825
20826         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20827         signed values, used only for representing lower bounds of arrays.
20828         (mono_metadata_parse_array_full): Use new
20829         mono_metadata_decode_signed_value to decode lower bounds.
20830
20831 2006-02-14  Martin Baulig  <martin@ximian.com>
20832
20833         * reflection.c
20834         (mono_reflection_get_token): Support "MonoGenericMethod" and
20835         "MonoGenericCMethod" and allow generic instances / methods.
20836
20837 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20838
20839         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20840         to obtain the terminal size using an ioctl.
20841
20842         * object.c (mono_nullable_init): Revert this as nullable reference
20843         types are not valid.
20844         (mono_nullable_box): Ditto.
20845
20846 2006-02-09  Dick Porter  <dick@ximian.com>
20847
20848         * threads.c (mono_thread_detach): Drop a reference to the thread
20849         we're detaching.
20850
20851 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20852
20853         * object.c (mono_nullable_init): Handle nullable reference types.
20854         (mono_nullable_box): Ditto. Fixes #77446.
20855
20856 2006-02-07  Martin Baulig  <martin@ximian.com>
20857
20858         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20859
20860 2006-02-07  Ankit Jain  <jankit@novell.com>
20861
20862         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20863         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20864         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20865         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20866         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20867         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20868
20869 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20870
20871         * class.c (mono_class_create_generic): Set type_token as well.
20872
20873         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20874         compatible with MS.
20875
20876 2006-02-02  Martin Baulig  <martin@ximian.com>
20877
20878         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20879         has never been used so far.
20880
20881 2006-02-02  Martin Baulig  <martin@ximian.com>
20882
20883         * mono-debug-debugger.h: Changed comment at the top of this file;
20884         the header is not installed, but it's safe to #include it from
20885         within the JIT.
20886
20887         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20888         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20889
20890 2006-02-02  Martin Baulig  <martin@ximian.com>
20891
20892         * mono-debug.h
20893         (MonoSymbolTable): Removed the `metadata_info' field.
20894
20895         * mono-debug.c
20896         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20897
20898         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20899         (mono_debugger_add_builtin_types): Removed.
20900         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20901         (mono_debugger_create_notification_function): We now operate on a
20902         pre-allocated area; take a `gpointer' and return `void'.
20903
20904         * mono-debug-debugger.c
20905         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20906         (mono_debugger_add_builtin_types): Removed.
20907
20908 2006-02-02  Martin Baulig  <martin@ximian.com>
20909
20910         * threads.c (mono_debugger_create_all_threads): New public method.
20911
20912 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20913
20914         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20915         breaks on several platforms.
20916
20917 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20918
20919         * assembly.c: the VS.NET build doesn't supply default values for
20920         MONO_ASSEMBLIES and MONO_CFG_DIR.
20921
20922 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20923
20924         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20925         helper function.
20926
20927         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20928
20929         * loader.c (method_from_memberref): Fix a warning.
20930
20931         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20932
20933         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20934         with explicit layout. Fixes #77433.
20935
20936 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20937
20938         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20939         max_interface_id is initialized before using it. Fixes #77398.
20940         (ves_icall_Type_GetInterfaces): Ditto.
20941
20942 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20943
20944         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20945         allocate memory for parameter attributes when parsing memberref
20946         signatures.
20947         * loader.c (mono_loader_set_error_method_load): Don't warn.
20948         (method_from_memberref): Ensure MissingMethodException gets thrown
20949         if method is not found.  Make warning more informative.
20950
20951 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20952
20953         Fix #77397
20954         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20955         return true if is byref.
20956         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20957         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20958         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20959
20960 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20961
20962         Fix tests/find-method.2.il
20963         * loader.c (find_method, find_method_in_class): Remove is_inflated
20964         argument.  Revert 2006-01-18 change.
20965         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20966         is generic, search for method in its generic definition.
20967         * class.c (mono_class_setup_vtable_general): Print generic
20968         arguments of generic types in debugging printf.
20969
20970 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20971
20972         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20973
20974         * threads.c (mono_threads_request_thread_dump): New helper function.
20975
20976 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20977
20978         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20979
20980 2006-01-25  Ankit Jain  <jankit@novell.com>
20981
20982         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20983         move definition to ..
20984         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20985         
20986 2006-01-25  Ankit Jain  <jankit@novell.com>
20987             Raja R Harinath  <rharinath@novell.com>
20988
20989         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20990         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20991         as necessary.
20992
20993 2006-01-25  Martin Baulig  <martin@ximian.com>
20994
20995         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20996         `MonoDebuggerThread' into debug-debugger.c.
20997
20998 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20999
21000         * profiler.c: fix printing of data.
21001
21002 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
21003
21004         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
21005           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
21006
21007 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
21008
21009         * object.c: fix deadlock related to string interning.
21010
21011 2006-01-23  Martin Baulig  <martin@ximian.com>
21012
21013         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
21014
21015         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
21016
21017 2006-01-23  Martin Baulig  <martin@ximian.com>
21018
21019         * mono-debug.h: Moved the prototypes of some functions which are
21020         used by the JIT here from mono-debug-debugger.h.
21021
21022 2006-01-21  Martin Baulig  <martin@ximian.com>
21023
21024         * Makefile.am: Don't install mono-debug-debugger.h.
21025
21026 2006-01-21  Martin Baulig  <martin@ximian.com>
21027
21028         * mono-debug-debugger.h: Enforce the private status of this header
21029         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
21030         Moved some stuff from mono-debugger-jit-wrapper.h here.
21031
21032 2006-01-20  Raja R Harinath  <rharinath@novell.com>
21033
21034         * class.c (mono_class_from_typeref): Add a sanity test to help
21035         catch lack of assembly load/search hooks.
21036
21037 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
21038
21039         * marshal.c (emit_struct_conv): Relax the fields with same offset
21040         check even more. Fixes #77230.
21041
21042 2006-01-18  Martin Baulig  <martin@ximian.com>
21043
21044         * loader.c (find_method_in_class): Added `gboolean is_inflated'
21045         argument; if false, we compare the uninstantiated signatures.
21046         (method_from_memberref): Compare the uninstantiated signatures;
21047         fixes #76417.
21048
21049 2006-01-18  Robert Jordan  <robertj@gmx.net>
21050
21051         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
21052         Clear the weak link. Fixes bug #77170.
21053
21054         * gc.c (mono_gchandle_free):
21055         Reflect *-gc.c changes (tiny optimization).
21056
21057 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
21058
21059         * metadata.c (mono_metadata_signature_dup): Applied patch from
21060         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
21061         Fixes #77288.
21062
21063 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
21064
21065         * marshal.c (emit_struct_conv): Allow fields with the same offset when
21066         marshalling from native to managed code. Fixes #77230.
21067
21068 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21069
21070         * threadpool.c: fix problem (Mac only) when more than one asynchronous
21071         connect. Fixes bug #77020.
21072
21073 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
21074
21075         * class.c: fixed id assignement for nested interfaces (bug #77275).
21076         Added also better info for --print-vtable debugging.
21077
21078 2006-01-12  Martin Baulig  <martin@ximian.com>
21079
21080         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
21081         interfaces on-the-fly; fixes #76625.
21082
21083         * class-internals.h
21084         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
21085         don't need that anymore.
21086
21087 2006-01-12  Miguel de Icaza  <miguel@novell.com>
21088
21089         * socket-io.c
21090         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21091         To avoid initing the nested_classes when not needed I turned the
21092         PeerCredData as a toplevel internal class, as it has to be shared
21093         anyways. 
21094
21095         Fixes the CASA issue.
21096
21097 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
21098
21099         * domain.c: Accessors for MonoJitInfo
21100
21101         * profiler-private.h: Add jitinfo to the end jit hook
21102
21103         * profiler.[ch]: Define new hooks, called after jitting which give
21104         the MonoJitInfo that was compiled
21105
21106 2006-01-10  Martin Baulig  <martin@ximian.com>
21107
21108         * class.c (mono_class_setup_events): Add support for generic
21109         classes; fixes #76440.
21110
21111 2006-01-06  Raja R Harinath  <rharinath@novell.com>
21112
21113         Fix #77160.
21114         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
21115         on passed-in method.
21116
21117 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21118
21119         * object.c (mono_runtime_invoke_array): Add Nullable support.
21120
21121         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
21122
21123 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
21124
21125         * file-io.c: Don't consider sockets as directory and avoid an endless
21126         loop. Fix bug #76966.
21127
21128 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21129
21130         * object.c (mono_nullable_init): New helper function.
21131         (mono_nullable_box): Ditto.
21132
21133         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
21134
21135         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
21136
21137         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
21138         
21139 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
21140
21141         * class.c (mono_class_is_assignable_from): Make T assignable to 
21142         Nullable<T>.
21143
21144 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
21145
21146         * appdomain.c: Bump corlib version to 46.
21147         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
21148         serialization purpose) and changed ves_icall_System_Reflection_
21149         Assembly_get_code_base signature to accept a boolean (to escape, or 
21150         not, the assembly code base).
21151
21152 2005-12-23  Dick Porter  <dick@ximian.com>
21153
21154         * icall.c: 
21155         * threads-types.h: 
21156         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
21157         CreateEvent icall now returns "created" boolean parameter.
21158
21159 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
21160
21161         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
21162         #76967.
21163
21164         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
21165         when attr_klass is an interface. Fixes #77045.
21166
21167 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
21168
21169         * marshal.c (emit_struct_conv): Fix previous patch.
21170         
21171         * marshal.c (emit_struct_conv): Add a check for fields with the same
21172         offset.
21173
21174 2005-12-20  Raja R Harinath  <rharinath@novell.com>
21175
21176         Fix regression in Mono.C5.
21177         * class.c (mono_class_create_generic): If 'klass' is an interface
21178         set up the interface offsets.
21179         (mono_class_is_assignable_from): Don't throw away generic arguments.
21180
21181 2005-12-19  Raja R Harinath  <rharinath@novell.com>
21182
21183         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
21184         type parameters.
21185
21186 2005-12-15  Raja R Harinath  <rharinath@novell.com>
21187
21188         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
21189         dead store.
21190         (do_mono_metadata_parse_generic_class): Don't pass the current
21191         generic context when parsing the type being instantiated: it
21192         cannot use it, anyway.
21193
21194         * loader.c (method_from_memberref): Don't inflate a signature if
21195         it doesn't contain any type parameters.
21196
21197 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
21198
21199         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
21200
21201 2005-12-14  Martin Baulig  <martin@ximian.com>
21202
21203         * class.c
21204         (mono_type_get_name_recurse): Don't return null for type
21205         parameters and open generic classes.
21206         (mono_class_setup_methods): Don't exclude generic instances.
21207         (mono_get_unique_iid): Use different IDs for different
21208         instantiations of the same generic type.
21209         (mono_class_setup_vtable): Only use setup_generic_vtable() for
21210         open generic instances; create a normal vtable for closed generic
21211         instances.
21212         (mono_class_setup_vtable_general): We're now also called for
21213         closed generic instances.
21214
21215         * reflection.c
21216         (mono_reflection_bind_generic_parameters): Correctly use
21217         mono_metadata_lookup_generic_inst() everywhere.
21218
21219 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
21220
21221         * object.c (mono_class_create_runtime_vtable): Call 
21222         mono_class_setup_vtable ().
21223
21224         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
21225         function.
21226         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
21227         #76959.
21228
21229         * loader.c (mono_loader_set_error_type_load): Print the type load
21230         warnings to the console so they are more visible to the user.
21231         (mono_loader_set_error_method_load): Ditto.
21232
21233         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21234         is still broken.
21235         
21236         * reflection.c (ensure_runtime_vtable): Fix build.
21237
21238         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21239         doesn't work in all cases.
21240
21241 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21242
21243         * object.c (mono_array_new_full): Treat a single dimensional array
21244         with 0 lower bounds as an szarray. Fixes #76973.
21245
21246         * reflection.c (custom_attr_visible): Really fix this.
21247
21248 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21249
21250         * reflection.c (custom_attr_visible): Allow nested public attributes
21251         as well.
21252
21253         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21254         interface check.
21255
21256 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21257
21258         * class.c (set_generic_param_owner): Delete.
21259         (mono_class_create_from_typedef): Don't set ->owner field of
21260         generic parameters to "param containers" of enclosing classes.
21261         * reflection.c (mono_reflection_initialize_generic_parameter):
21262         Likewise.
21263
21264 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21265
21266         * reflection.c (custom_attr_visible): Fix build.
21267
21268 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21269
21270         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21271         private attributes.
21272         
21273         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21274         handling of null parameter defaults.
21275
21276 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21277
21278         * class.c (mono_class_from_generic_parameter): Don't set
21279         klass->generic_container.
21280         (my_mono_class_from_generic_parameter): Likewise.
21281
21282 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21283
21284         * reflection.c (load_public_key): Fix a warning.
21285         (method_encode_code): Fix unaligned accesses.
21286
21287 2005-12-07  Martin Baulig  <martin@ximian.com>
21288
21289         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21290
21291         * reflection.c
21292         (write_generic_param_entry): Encode our custom attrs.
21293
21294         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21295
21296 2005-12-07  Martin Baulig  <martin@ximian.com>
21297
21298         * reflection.c (encode_new_constraint): Removed; we don't use the
21299         `NewConstraintAttribute' anymore.
21300
21301 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21302
21303         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21304         not fire a TypeResolve event when Assembly.GetType () is called.
21305
21306 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21307
21308         Beginning of support for nullable types in the runtime. Parts of
21309         this patch are from Martin.
21310
21311         * appdomain.c (MONO_CORLIB_VERSION): Bump
21312
21313         * domain.c (mono_init_internal): get the nullable type
21314
21315         * class.c (mono_class_is_nullable): New method
21316         (mono_class_get_nullable_param): New mehod
21317         (mono_class_create_generic): In types T? set cast_class to T
21318
21319         * class-internals.h (MonoDefaults): new nullable default class
21320         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21321         new methods.
21322
21323 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21324
21325         * metadata.c (select_container): New.  Refactor code to select the
21326         appropriate GenericContainer given the type of generic parameter
21327         we are looking for.
21328         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21329         not a MonoGenericContext.  Use select_container.  Update parameters.
21330         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21331         and MONO_TYPE_MVAR.
21332         (unwrap_arrays): Remove duplicate tests.
21333         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21334         generic instantiated class to find any arguments that are generic
21335         parameters.
21336         (mono_type_create_from_typespec_full): Use find_generic_param to
21337         avoid evicting some generic instantiations from the typespec
21338         cache.
21339
21340 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21341
21342         * reflection.c: fixed writing of doubles on ARM FPA.
21343
21344 2005-12-02  Robert Jordan  <robertj@gmx.net>
21345
21346         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21347
21348 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21349
21350         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21351         least on SUSE 10 they are not the same (on debian, they are just the
21352         same thing).
21353
21354 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21355
21356         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21357         DeclaringType for VARs and MVARs.
21358         * class.c (set_generic_param_owner): Fix initialization of owner
21359         fields.
21360
21361 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21362
21363         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21364
21365 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21366
21367         * threadpool.c: workaround for a bug that shows up on the Mac:
21368         select()+connect() on a blocking socket is not like it should
21369         be, so we proceed to connect() in that case, wasting the I/O
21370         threadpool thread until connect succeedes. Fixes bug #75436.
21371
21372 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21373
21374         * threadpool.c: fix typo when setting file descriptor states.
21375
21376 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21377
21378         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21379         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21380         create a temporary signature container.
21381         (mono_metadata_parse_generic_param): Update to changes.
21382         (mono_type_create_from_typespec_full): Update to changes.
21383         * loader.c (method_from_memberref): Don't use a
21384         MonoGenericContainer while parsing a memberref signature.
21385         (method_from_methodspec): Remove dead-store of the 'container'
21386         variable.  It's overwritten before use.
21387
21388         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21389         checks tighter.
21390         (mono_metadata_parse_generic_param): Likewise.
21391         * loader.c (find_method_in_class): Does not need a
21392         MonoGenericContainer.  Use 'mono_method_signature' rather than
21393         'mono_method_signature_full'.
21394         (find_method, mono_get_method_constrained, method_from_memberref):
21395         Update to changes.
21396
21397         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21398         owner-less generic-parameters are never evicted from the typespec
21399         cache.
21400
21401         * loader.c (method_from_memberref): Don't use the current context
21402         when parsing signatures.
21403         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21404
21405         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21406         side-effects in g_assert.
21407         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21408         that we don't potentially lose information.
21409
21410 2005-11-26  Dick Porter  <dick@ximian.com>
21411
21412         * icall.c:
21413         * threads.c: icalls to implement basic (ie, not named)
21414         System.Threading.Semaphore.
21415
21416 2005-11-24  Dick Porter  <dick@ximian.com>
21417
21418         * process.c
21419         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21420         Use GetProcessId() if it's available.
21421
21422 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21423
21424         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21425
21426 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21427             Ankit Jain  <jankit@novell.com>
21428
21429         * loader.c (mono_get_method_from_token): Initialize 'method' field
21430         of all generic parameters before parsing the signature.  Remove
21431         code that "fixed"-up MVAR references.
21432
21433 2005-11-23  Ankit Jain  <jankit@novell.com>
21434
21435         * metadata.c (mono_metadata_has_generic_params):
21436         (mono_metadata_load_generic_param_constraints):
21437         (mono_metadata_load_generic_params): Move duplicate code ...
21438         (mono_metadata_get_generic_param_row): ... here. Returns the
21439         first row-id in GenericParam table for a given owner (token).
21440         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21441         prototype.
21442
21443 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21444             Ankit Jain  <jankit@novell.com>
21445
21446         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21447         comparing VARs too.
21448         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21449         type->data.generic_param only if the type is an MVAR.
21450         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21451         leak owner-less VARs and MVARs into managed space.
21452
21453 2005-11-21  Martin Baulig  <martin@ximian.com>
21454
21455         * class-internals.h
21456         (MonoMethod): Moved the `generic_container' here from
21457         `MonoMethodNormal' since we now also need it for
21458         `MonoMethodPInvoke';
21459         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21460         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21461         an union containing both `MonoMethodNormal' and
21462         `MonoMethodPInvoke'.
21463
21464         * loader.c
21465         (mono_get_method_from_token): Allow implementing generic methods
21466         as interncalls.
21467
21468         * threads.c
21469         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21470         icall.
21471
21472 2005-11-17  Dick Porter  <dick@ximian.com>
21473
21474         * icall.c: 
21475         * process.h: 
21476         * process.c: Split the Process Start_internal icall into
21477         ShellExecuteEx_internal and CreateProcess_internal, which are
21478         called depending on whether UseShellExecute is true.  Fixes bug
21479         76670.
21480
21481         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21482
21483 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21484
21485         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21486         'msize' parameters, use the information in 'mspec' instead.
21487         (emit_object_to_ptr_conv): Ditto.
21488
21489         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21490         fields out of order. Fixes #76733.
21491
21492 2005-11-17  Ankit Jain  <jankit@novell.com>
21493
21494         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21495
21496 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21497
21498         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21499           bug #76575.
21500
21501 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21502
21503         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21504         for types with non-auto layout. Fixes #76717.
21505
21506 2005-11-16  Ankit Jain  <jankit@novell.com>
21507
21508         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21509         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21510         if generic_context is null.
21511           (mono_metadata_generic_param_equal): param->owner can be null.
21512           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21513         null.
21514
21515 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21516
21517         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21518         the correct value.
21519
21520 2005-11-15  Martin Baulig  <martin@ximian.com>
21521
21522         * object.c (set_value): Use mono_class_from_mono_type() instead of
21523         the hack for generic instances; fixes #76136.
21524
21525 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21526
21527         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21528         fields.
21529
21530         * image.c (load_metadata_ptrs): Initialize the new fields.
21531
21532         * reflection.c (create_dynamic_mono_image): Ditto.
21533
21534         * reflection.c (build_compressed_metadata): Use the new fields.
21535
21536         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21537         icall.
21538
21539         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21540         icall.
21541         
21542 2005-11-15  Ankit Jain  <jankit@novell.com>
21543             Raja R Harinath  <harinath@gmail.com>
21544
21545         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21546         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21547         new per-generic_container cache if the cached MonoType's context matches
21548         the current context.
21549           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21550         to the expected context.
21551           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21552
21553 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21554
21555         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21556         we changed the signature of an icall.
21557         * icall.c: Modify to mono_double_ParseImpl return true/false 
21558         depending on the success, instead of throwing the exception. This will
21559         help us in Double.TryParse methods.
21560         
21561 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21562
21563         * marshal.c (emit_marshal_object): Throw an exception when
21564         marshalling 'object' instead of crashing. Fixes #76696.
21565
21566 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21567
21568         * class-internals.h: Add prototype for mono_type_get_full_name ().
21569
21570 2005-11-11  Dick Porter  <dick@ximian.com>
21571
21572         * threads.c (mono_thread_manage): Make sure the main thread has
21573         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21574
21575 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21576
21577         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21578         console about the missing type.
21579         (mono_loader_set_error_method_load): Ditto.
21580
21581 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21582
21583         * mono-config.c (mono_get_config_dir): Set the system defaults if
21584         none is specified.
21585
21586         * assembly.c (mono_set_dirs): New API entry point to set the
21587         assembly and the config directory in one call
21588
21589 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21590
21591         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21592         the ftnptr was created from a delegate in a domain other than the
21593         current domain. Fixes #75377.
21594
21595         * exception.h exception.c: Add mono_get_exception_not_supported ().
21596
21597 2005-11-08  Martin Baulig  <martin@ximian.com>
21598
21599         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21600
21601 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21602
21603         * security-manager.h: Added definitions to deal with strongname key 
21604         pairs bigger (and smaller) than 1024 bits.
21605         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21606         adjust wrt the public key length being used.
21607
21608 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21609
21610         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21611           Windows build (r51396-51397).
21612
21613 2005-11-03  Martin Baulig  <martin@ximian.com>
21614
21615         * class.c (mono_class_setup_vtable_general): Also add generic
21616         methods to the vtable; fixes #76581.
21617
21618 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21619
21620         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21621         sure that we lookup GetString method from the System.Text.Encoding
21622         class, not the derived class or we get an empty method.
21623
21624         Fixed class #76612.
21625
21626 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21627
21628         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21629         if it has been previously set (embedders). 
21630
21631         Make mono_set_rootdir available also on Unix.
21632
21633 005-10-24  Robert Jordan  <robertj@gmx.net>
21634
21635         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21636
21637 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21640         only calls which are made to native code use this flag.
21641
21642         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21643
21644 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21645
21646         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21647         Add support for FieldBuilders.
21648
21649 2005-10-29  Martin Baulig  <martin@ximian.com>
21650
21651         * mono-debug.c
21652         (mono_debug_using_mono_debugger): New public method; returns
21653         whether we're running inside the debugger.
21654
21655 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21656
21657         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21658         for Method/Constructor/FieldBuilders.
21659
21660 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21661
21662         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21663         and fields as well.
21664
21665 2005-10-26  Martin Baulig  <martin@ximian.com>
21666
21667         * mono-debug-debugger.c
21668         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21669
21670 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21671
21672         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21673         integer to isspace.
21674
21675 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21676
21677         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21678         when passing valuetypes byref. Fixes #76502.
21679
21680 2005-10-19  Jackson Harper  <jackson@ximian.com>
21681
21682         * profiler.c: Don't put a . in front of types that are not in a
21683         namespace.
21684
21685 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21686
21687         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21688
21689 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21690
21691         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21692         #76436.
21693         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21694
21695 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21696
21697         * assembly.c metadata-internals.h icall.c: Define an additional
21698         parameter for mono_assembly_name_parse_full, so we can avoid creating
21699         S.R.AssemblyName.Version when no version info wasn't passed.
21700         
21701 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21702
21703         * class.c (mono_type_get_full_name): Reimplement method that was
21704         removed. 
21705
21706         * image.c: Some docs
21707
21708 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21709
21710         * profiler.c (output_newobj_profile): Fix printing of Total memory
21711         on x86.
21712
21713 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21714
21715         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21716
21717 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21718
21719         * threads.c: remove debug output.
21720
21721 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * threads.c (mono_thread_manage): Fix crashes if more than 64
21724         threads need to be aborted. Hopefully fixes #75899.
21725
21726         * assembly.c (mono_stringify_assembly_name): New helper function.
21727
21728         * class.c: Use mono_stringify_assembly_name instead of the similar
21729         static function.
21730
21731         * assembly.h assembly.c: Add support for calling a postload search 
21732         hook if an assembly cannot be loaded.
21733
21734         * appdomain.c: Register new search hooks which call the AssemblyResolve
21735         events in AppDomain. Fixes #75231
21736
21737 2005-10-07  Martin Baulig  <martin@ximian.com>
21738
21739         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21740         methods without debug info.
21741
21742 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21743
21744         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21745         wrappers.
21746
21747 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21748
21749         * file-io.c: now that we return symlinks, use lstat and, when the file
21750         is a symbolic link, stat, to get the file attributes. Also avoid the
21751         conversion to/from utf16/external.
21752
21753 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21754
21755         * class.c (mono_class_layout_fields): Compute klass->has_references
21756         correctly if an embedded valuetype is not yet initialized. Fixes
21757         #76331.
21758
21759 2005-10-04  Martin Baulig  <martin@ximian.com>
21760
21761         * metadata.c
21762         (mono_metadata_load_generic_param_constraints): New public
21763         function; splitted the constraints loading out from
21764         mono_metadata_load_generic_params().
21765
21766         * class.c (mono_class_create_from_typedef): Call
21767         mono_metadata_load_generic_param_constraints() after setting up
21768         the type and creating our parent; fixes #75329.
21769
21770 2005-10-04  Martin Baulig  <martin@ximian.com>
21771
21772         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21773         non-dynamic parent classes.
21774
21775 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21776
21777         * file-io.c : win32 build fix (ETXTBSY seems not found).
21778
21779 2005-10-04  Martin Baulig  <martin@ximian.com>
21780
21781         * reflection.c
21782         (mono_image_get_methodspec_token): Make the cache actually work;
21783         fixes #75974.
21784
21785 2005-10-04  Martin Baulig  <martin@ximian.com>
21786
21787         * class.c (mono_class_name_from_token): Removed the unneccessary
21788         `MonoGenericContext *' argument.
21789
21790 2005-10-04  Martin Baulig  <martin@ximian.com>
21791
21792         * loader.c
21793         (method_from_methodspec): Make the caching work again; fixes the
21794         performance regression from #76262.
21795
21796 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21797
21798         * file-io.c:
21799         * file-io.h:
21800         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21801         GetFileSystemEntries that performs the same work but without going
21802         into io-layer, locking, etc.
21803
21804 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21805
21806         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21807         ThreadState_Stopped as well. Fixes #76047.
21808
21809 2005-09-29  Martin Baulig  <martin@ximian.com>
21810
21811         * class.c
21812         (inflate_generic_context): If the new context has a `gmethod', set
21813         its `container' that that gmethod's `container'.
21814
21815         * metadata.c
21816         (mono_metadata_parse_generic_param): Simplify things;
21817         `generic_container = generic_context->container;' is just fine.
21818
21819         * loader.c (method_from_methodspec): Code cleanups.
21820
21821 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21822
21823         * decimal.c: fix warning (and let gcc generate correct
21824         code on ARM with optimizations).
21825
21826 2005-09-28  Martin Baulig  <martin@ximian.com>
21827
21828         * loader.c
21829         (method_from_memberref): Added `MonoGenericContext *class_context'
21830         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21831         (method_from_methodspec): If we're a memberref, use the enclosing
21832         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21833
21834 2005-09-28  Martin Baulig  <martin@ximian.com>
21835
21836         * object.c (mono_runtime_invoke_array): Added support for
21837         MONO_TYPE_GENERICINST; fixes #75917.
21838
21839 2005-09-27  Martin Baulig  <martin@ximian.com>
21840
21841         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21842         `k->byval_arg.type' to determine the actual type.
21843
21844         * loader.c (method_from_methodspec): Removed some hacks.
21845
21846 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21847
21848         * class-internals.h (mono_field_is_deleted): Do the test for
21849         rtspecialname before we check the actual name of the field. This
21850         prevents us from dereferencing a pointer into the string table,
21851         saving us from accessing a few pages
21852
21853         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21854         macros. This will allow a deadlock debugger to easily be plugged
21855         in.
21856
21857 2005-09-27  Martin Baulig  <martin@ximian.com>
21858
21859         * loader.c (method_from_methodspec): Create a "signature"
21860         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21861
21862 2005-09-27  Martin Baulig  <martin@ximian.com>
21863
21864         * class.c
21865         (inflate_generic_class): Correctly set the new context's
21866         container.
21867
21868         * loader.c
21869         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21870         instead of a `MonoGenericContext *'.
21871         (mono_method_signature_full): Take a `MonoGenericContainer *'
21872         instead of a `MonoGenericContext *'.
21873
21874         * metadata.c
21875         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21876         instead of a `MonoGenericContext *'.
21877         (mono_metadata_parse_method_signature_full): Likewise.
21878
21879 2005-09-26  Martin Baulig  <martin@ximian.com>
21880
21881         * class.c
21882         (mono_class_from_generic_parameter): Set `klass->generic_container'
21883         (mono_class_from_generic_parameter): Likewise.
21884         (mono_bounded_array_class_get): We inherit the generic container
21885         from the element class.
21886
21887         * loader.c
21888         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21889         argument rather than computing it here.
21890         (method_from_memberref): Correctly set the generic context before
21891         parsing the signature.  Fixes #75681.
21892
21893 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21894
21895         * object.c (mono_class_has_special_static_fields): Fix warnings.
21896
21897 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21898
21899         * assembly.c: Add parse_public_key function, to
21900         par the public keys. Also added mono_assembly_name_parse_full,
21901         to define it the parsed key should be freed or not.
21902         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21903         to parse a long format assembly name.
21904         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21905         private, since calling it to preserve the key requires
21906         freeing it manually.
21907         
21908 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21909
21910         * locales.c : removed HAVE_ICU part.
21911
21912 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21913
21914         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21915         field_is_special_static if the klass has no special static fields.
21916
21917         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21918         (MonoCachedClassInfo): Likewise.
21919
21920         * object.c (mono_class_has_special_static_fields): New helper function.
21921
21922 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21923
21924         * class.c (mono_class_create_from_typedef): Don't call 
21925         interfaces_from_typedef_full for enums.
21926         (mono_class_create_from_typedef): Compute the base types of enums directly
21927         without calling mono_class_setup_fields ().
21928         (mono_class_find_enum_basetype): New helper function.
21929
21930         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21931         one place inside the string heap.
21932         
21933 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21934
21935         * class.c: locking fixes, code cleanups, some docs added.
21936         Allocate some data structures in the image mempool.
21937
21938 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21939
21940         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21941         the example code.
21942         
21943 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21944
21945         * class-internals.h, class.c, reflection.c: reduce memory taken by
21946         MonoClass.
21947
21948 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21949
21950         * metadata.c, metadata.h, loader.h: documentation updates, code and
21951         API cleanups.
21952
21953 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21954
21955         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21956         the example code.
21957
21958         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21959         page faults caused by the runtime while reading metadata.
21960
21961 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21962
21963         * socket-io.c: the field names were changed 3 months ago and no one
21964         realized until bug #76077 got filed!
21965
21966 2005-09-20  Martin Baulig  <martin@ximian.com>
21967
21968         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21969
21970 2005-09-20  Martin Baulig  <martin@ximian.com>
21971
21972         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21973         write the rank into the class entry.
21974
21975 2005-09-20  Martin Baulig  <martin@ximian.com>
21976
21977         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21978
21979 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21980
21981         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21982
21983         * icall.c (custom_attrs_defined_internal): New icall.
21984
21985         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21986         function.
21987         (mono_custom_attrs_construct_by_type): New helper function.
21988
21989 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21990
21991         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21992         terminate the resulting string. Fixes #76123.
21993
21994 2005-09-16  Martin Baulig  <martin@ximian.com>
21995
21996         * mono-debug.c
21997         (mono_debug_add_method): Ignore inflated methods for the moment.
21998
21999 2005-09-14  Martin Baulig  <martin@ximian.com>
22000
22001         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
22002
22003 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
22004
22005         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
22006         return a success/failure indication.
22007         (mono_metadata_interfaces_from_typedef_full): Ditto.
22008         (get_constraints): Ditto.
22009
22010 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
22011
22012         * marshal.c (emit_marshal_array): Fix handling of null arrays.
22013         
22014         * marshal.c (emit_marshal_array): Add support for returning string
22015         arrays from delegates. Fixes #76063.
22016
22017         * marshal.c: Use the emit_ldloc/stloc macros where possible.
22018
22019 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
22020
22021         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
22022         icall.
22023
22024 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
22025
22026         * reflection.c icall.c: Fix after mono_get_exception_type_load
22027         signature change.
22028
22029         * assembly.c (mono_assembly_get_assemblyref): New helper function.
22030         (mono_assembly_load_reference): Use the new helper.
22031
22032         * class-internals.h (MonoLoaderError): New structure containing 
22033         information about type loading errors.
22034
22035         * class-internals.h loader.c: Add APIs to store per-thread loader
22036         error information.
22037
22038         * loader.c class.c: Set the loader error if needed.
22039
22040         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
22041
22042 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
22043
22044         * decimal.c: fixed to handle the broken ARM fp format.
22045
22046 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
22047
22048         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
22049         broken.
22050
22051 2005-09-06  Martin Baulig  <martin@ximian.com>
22052
22053         * domain.c (supported_runtimes): Added v2.0.50727.
22054
22055 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
22056
22057         * culture-info.h: reduce the size of some structures.
22058
22059 2005-09-05  Martin Baulig  <martin@ximian.com>
22060
22061         Reflect latest API changes in the August CTP.
22062
22063         * icall.c
22064         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
22065         ("MonoType.HasGenericArguments"): Removed.
22066         ("MonoMethod.BindGenericParameters"): Renamed to
22067         "MakeGenericMethod".
22068         ("MethodBuilder.BindGenericParameters"): Renamed to
22069         "MakeGenericMethod".    
22070
22071 2005-09-05  Martin Baulig  <martin@ximian.com>
22072
22073         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
22074
22075 2005-09-05  Martin Baulig  <martin@ximian.com>
22076
22077         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22078
22079         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
22080         generic_container is non-NULL.
22081
22082 2005-09-05  Martin Baulig  <martin@ximian.com>
22083
22084         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22085
22086         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
22087
22088 2005-08-29  Michal Moskal  <malekith@nemerle.org>
22089
22090         * reflection.c (encode_locals,
22091         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
22092         for large generic types.
22093
22094 2005-09-05  Martin Baulig  <martin@ximian.com>
22095
22096         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22097
22098         * class.c (mono_dup_array_type): New public method.
22099         (mono_metadata_signature_deep_dup): New public method.
22100         (dup_type): Correctly duplicate array and function types.
22101
22102 2005-09-05  Martin Baulig  <martin@ximian.com>
22103
22104         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22105
22106         * reflection.c (get_default_param_value_blobs): Handle generic types
22107         and generic methods.
22108
22109 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
22110
22111         * class.c: Fixed error reporting (method/class were inversed) for 
22112         inheritance demands.
22113         * security-manager.c|h: Added the AppDomain when calling the managed
22114         System.Security.SecurityManager.InheritanceDemand method.
22115
22116 2005-09-01  Raja R Harinath  <rharinath@novell.com>
22117
22118         * reflection.c (encode_marshal_blob): 'marshaltype' and
22119         'marshaltyperef' are alternate sources for the custom marshaler
22120         name.
22121
22122 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
22123
22124         * class.c: fix creation of array classes with rank == 1
22125         (patch by Ankit Jain <jankit@novell.com>).
22126
22127 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
22128
22129         * object.c: fix check for creating the bound data for arrays vs
22130         szarrays.
22131
22132 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22133
22134         * object.c: configuration file name is now based on the executable name,
22135         not the image name. Fixes bug #75931.
22136
22137 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
22138
22139         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
22140         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
22141
22142 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
22143
22144         * rand.c: Use wincrypt.h instead of WinCrypt.h.
22145
22146 2005-08-24  Ankit Jain  <jankit@novell.com>
22147             Raja R Harinath  <rharinath@novell.com>
22148
22149         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
22150           called by it recursively.
22151           (mono_class_init): Remove special case in pending_init handling, since it's
22152           superseded by the fix to mono_class_from_typeref.
22153
22154 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
22155
22156         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
22157         BROKEN_THREAD_START stuff.
22158
22159 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
22160
22161         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
22162         trampoline.
22163
22164         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
22165         
22166         * object.c (mono_delegate_ctor): Replace the original function address with
22167         a delegate trampoline.
22168
22169 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
22170
22171         * icall.c: add boolean argument to base64_to_byte_array and 
22172         InternalFromBase64String to control whether a whitespace-only string
22173         is allowed (or should casue a FormatException to be thrown). We need
22174         this as the behavior has changed between MS.NET 1.x and 2.0, and we
22175         to match the MS behaviour in both profiles.
22176         * appdomain.c: Bump corlib version.
22177
22178 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22179
22180         This patch implements a big portion of publisher policy
22181         support, used to bind assembly versions and redirect
22182         one assembly from version A to version B.
22183
22184         * assembly.c:
22185         New GSList loaded_assembly_bindings, for storing the cached
22186         assembly bindings.
22187         (assembly_binding_maps_name): New static function for checking if a 
22188         assembly binding information maps an assembly name.
22189         (mono_assembly_binding_info_free): New function for freeing
22190         assembly binding information resources.
22191         (get_publisher_policy_info): New static function for retrieving 
22192         assembly binding information from a MonoImage.
22193         (compare_versions): New static function for comparing an assembly
22194         binding information data and the version of an assembly name.
22195         (check_policy_versions): New static function for checking if an
22196         assembly binding info mapping an assembly name is valid for it.
22197         (mono_assembly_load_publisher_policy): New static function for
22198         loading the 'policy.major.minor.MyAssembly' image for an assembly
22199         with an assembly name 'aname'.
22200         (mono_assembly_bind_version): New static function for updating
22201         assembly redirection.
22202         (mono_assembly_apply_binding): New static function for applying
22203         assembly binding.
22204         (search_binding_loaded): New static function for searching 
22205         loaded assembly binding infos in the cache domain.
22206         (mono_assembly_load_full): Don't apply assembly binding for
22207         reflection only assemblies.
22208
22209         * metadata-internals.h: Add MonoAssemblyBindingInfo,
22210         which contains information about assembly binding. Also
22211         declare signature for mono_config_parse_publisher_policy ()
22212         function, used to retrieve pub policy info.
22213         
22214         * mono-config.c:
22215         (publisher_policy_start): New static function used to parse publisher 
22216         policy config files.
22217         (publisher_policy_parser): New static MonoParseHandler containing 
22218         the functions used when parsing config files.
22219         (mono_config_parse_publisher_policy): New function for parsing
22220         publisher policy files.
22221         
22222 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
22223
22224         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
22225
22226         * marshal.c (mono_delegate_free_ftnptr): Ditto.
22227
22228         * object.c (mono_get_addr_from_ftnptr): New helper function.
22229
22230         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22231
22232         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22233
22234 2005-08-19  Dick Porter  <dick@ximian.com>
22235
22236         * threads.c, threads.h, appdomain.c, appdomain.h,
22237         profiler-private.h, monitor.c, object.c, object-internals.h,
22238         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22239         store the thread ID, so it can hold a 64 bit value if needed.
22240
22241 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * reflection.c (mono_reflection_create_dynamic_method): Store the
22244         handle class into the method references as well so ldtoken works in
22245         dynamic methods.
22246
22247         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22248         types.
22249
22250 2005-08-19  Ankit Jain <jankit@novell.com>
22251
22252         Fix #75847.
22253         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22254           here rather than using the method signature of a arbitrary function
22255           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22256           two arguments.
22257           Hack done with Harinath.
22258
22259 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22260
22261         * threadpool.c: disable printing stack traces when we get a exception
22262         in a threadpool thread. I need to do more testing to figure out which
22263         cases actually print this. Fixes bug #75828.
22264
22265 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22266
22267         * icall.c: there might be ignored whitespace after the last '='. This
22268         fixes length computation and bug #75840.
22269
22270 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22271
22272         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22273         well. Fixes #75809.
22274
22275         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22276         #75784.
22277         
22278         * reflection.c (create_custom_attr_data): Ditto.
22279
22280 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22281
22282         * locales.c, culture-info.h : removed RegionLCIDMap.
22283         * culture-info-tables.h : regenerated.
22284
22285 2005-08-16  Martin Baulig  <martin@ximian.com>
22286
22287         * class.c (mono_type_get_name_recurse): Small fix.
22288
22289 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22290
22291         * locales.c : indentation fixie.
22292
22293 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22294
22295         * object-internals.h,
22296           locales.h,
22297           locales.c,
22298           culture-info.h,
22299           icall.c : added RegionInfo table support.
22300         * culture-info-table.h : regenerated for region support.
22301
22302 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22303
22304         * reflection.c (resolve_object): handle all kinds of MonoMethod
22305         including generic ones
22306
22307 2005-08-12  Ankit Jain <jankit@novell.com>
22308
22309         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22310           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22311
22312 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22313
22314         * process.c: Don't close a thread handle when it's NULL. This is a
22315         workaround for bug #75733.
22316
22317 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22318
22319         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22320
22321 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22324
22325 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22326
22327         * threadpool.c: if a work item in the thread pool has a callback that
22328         catches a exception, don't propagate it after invoking the callback.
22329         Fixes bug #75336.
22330
22331 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22332
22333         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22334
22335         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22336
22337         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22338
22339         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22340
22341 2005-08-03  Ankit Jain  <jankit@novell.com>
22342
22343         Fix #75683.
22344         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22345           PInvoke calling convention is 0.
22346
22347 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22348
22349         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22350         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22351
22352 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22353
22354         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22355         to handle threads not started by the GC (patch by Michael Meeks
22356         <michael.meeks@novell.com>).
22357
22358 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22359
22360         * reflection.c: Make buffer used in emitting types larger for some
22361         big generic types (patch by Michal Moskal).
22362
22363 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22364
22365         * mono-debug.c: Fix some (not all) alignment problems.
22366
22367 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22368
22369         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22370         Invoke mono_image_load_from_data_full passing the refonly
22371         parameter.
22372
22373         * assembly.c
22374         (mono_assembly_open_from_bundle): Add the refonly argument, 
22375         in order to pass it to other methods it calls to.
22376         (do_mono_assembly_open): Add the refonly argument, in order 
22377         to pass it to other methods it calls to.
22378         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22379         the refonly parameter to it.
22380
22381         * image.c: Add loaded_images_refonly_hash and
22382         loaded_images_refonly_guid_hash to cache the reflection
22383         only loaded images.
22384         (mono_images_init): Initialize the hash tables used for
22385         caching the reflection only images.
22386         (load_modules): Invoke mono_image_open_full passing the refonly
22387         parameter to load the modules the correct way.
22388         (build_guid_table): Add the refonly argument, to re-build the 
22389         correct hash table.
22390         (do_mono_image_open): Added the refonly argument, in order to
22391         define it for the loaded image.
22392         (mono_image_loaded_full): New function, which receives an
22393         additional parameter to look for the image in the refonly or
22394         non-refonly section.
22395         (mono_image_loaded): Updated, using mono_image_loaded_full.
22396         (mono_image_loaded_by_guid_full): The same case that happens
22397         with mono_image_loaded_full.
22398         (mono_image_loaded_by_guid): Likewise.
22399         (register_image): Use the ref_only variable inside MonoImage
22400         to decide in which hash table store the current image.
22401         (mono_image_open_from_data_full): Rename
22402         mono_image_open_from_data to mono_image_open_from_data_full,
22403         adding the refonly argument, to define the ref_only variable 
22404         inside MonoImage.
22405         (mono_image_open_from_data): Return 
22406         mono_image_open_from_data_full.
22407         (mono_image_open_full): Rename mono_image_open to
22408         mono_image_open_full, receiving the new refonly argument,
22409         to pass it to inner methods.
22410         (mono_pe_file_open): Update this function, to open
22411         a MonoImage as a non-refonly image.
22412         (mono_image_close): Use the refonly variable inside
22413         MonoImage to remove the image from the correct caches.
22414
22415         * image.h: Add the signatures of mono_image_open_full,
22416         mono_image_open_from_data_full, mono_image_loaded_full,
22417         mono_image_loaded_by_guid_full.
22418
22419         * metadata-internals.h: Add the ref_only field to 
22420         MonoImage.
22421         
22422 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22423
22424         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22425         Fix the last behavior, which used to load the assemblies and
22426         extract MonoReflectionAssemblyName information, instead of
22427         extract it from the metadata tables. Needed for Reflection
22428         Only assemblies.
22429         
22430 2005-07-29  Martin Baulig  <martin@ximian.com>
22431
22432         * mono-debug-debugger.c
22433         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22434         not initialized.
22435
22436         * mono-debug.c
22437         (mono_debug_address_from_il_offset): Check whether we have
22438         debugging support before attempting to take the lock.
22439         (mono_debug_source_location_from_address): Likewise.
22440         (mono_debug_source_location_from_il_offset): Likewise.
22441         (mono_debug_il_offset_from_address): Likewise.
22442         (mono_debug_address_from_il_offset): Likewise.
22443
22444 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22445
22446         * class.c (mono_class_from_name_case): Add support for dynamic images.
22447         Fixes #75650.
22448
22449         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22450         for #75479.
22451
22452 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22453         
22454         * reflection.c (mono_method_get_object): Fix warning.
22455
22456 2005-07-28  Martin Baulig  <martin@ximian.com>
22457
22458         * mono-debug.c
22459         (mono_debug_add_wrapper): Also write the wrapper type.
22460
22461 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22462
22463         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22464         
22465         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22466         data indicates the class has none.
22467
22468 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22469
22470         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22471         loader lock with the debugger lock. Prevents deadlocks for beagle.
22472
22473         Beagle can now run on an smp box for a weekend without any
22474         issues. Woohoo!
22475
22476 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22477
22478         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22479         in a module. Fixes #75629.
22480
22481 2005-07-26  Martin Baulig  <martin@ximian.com>
22482
22483         * mono-debug.c (mono_debug_add_wrapper): New static method.
22484         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22485         interncall or a wrapper.
22486
22487         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22488         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22489         (MONO_DEBUGGER_VERSION): Bump to 51.
22490
22491         * mono-debug-debugger.c
22492         (mono_debugger_add_type): Removed this empty function.
22493         (mono_debugger_add_method): Likewise.
22494
22495 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22498         before accessing method->slot.
22499
22500 2005-07-21  Jb Evain  <jbevain@gmail.com>
22501
22502         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22503         Fixes #75010.
22504
22505 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22506
22507         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22508         #75587.
22509
22510 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22511
22512         * image.h image.c: Add mono_image_get_guid () API function.
22513
22514 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22515
22516         There were issues when multiple threads tried to load
22517         assemblies. A deadlock was created between assemblies_mutex and
22518         mono_domain_assemblies_lock. This fixes the issue by making the
22519         assembly ref counting be lock free. See bug 75586.
22520         
22521         * image.c (mono_image_close): The add ref function here was using
22522         Interlocked operations while the unref was using a mutex and a
22523         --. I don't think this was ever a bug that would be exposed in a
22524         non-pendantic way (ie, by an embedder doing a ref on one thread
22525         and an unref on another), but for the sake of correctness, this is
22526         now Interlocked.
22527
22528         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22529         (mono_assembly_load_reference): Call mono_assembly_addref rather
22530         than touching the refcount ourselves.
22531         (mono_assembly_close): Use InterlockedDecrement to unref the
22532         assembly. Don't acquire the lock unless it is actually needed.
22533
22534 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22535
22536         * class.c (mono_class_layout_fields): Fix calculation of has_references
22537         for generic types.
22538
22539 2005-07-12  Martin Baulig  <martin@ximian.com>
22540
22541         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22542
22543         * metadata.c
22544         (mono_type_hash): Provide better hashing for generic instances.
22545         (mono_generic_inst_hash): Improve hashing.
22546         (mono_generic_class_hash): Likewise.
22547
22548         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22549         generic instances.
22550
22551 2005-07-12  Martin Baulig  <martin@ximian.com>
22552
22553         * reflection.c (mono_reflection_create_runtime_class): Remove the
22554         hack for generic type definitions and non-`Run' assemblies.
22555         (mono_reflection_bind_generic_parameters): Also use
22556         `klass->wastypebuilder' to check for TypeBuilders.
22557
22558 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22559
22560         * class.c (mono_class_layout_fields): Fix calculation of has_references
22561         for generic types.
22562
22563         * class.c (inflate_generic_class): Fix a leak.
22564         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22565         for generic types.
22566
22567 2005-07-11  Martin Baulig  <martin@ximian.com>
22568
22569         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22570         on error.
22571
22572 2005-07-11  Martin Baulig  <martin@ximian.com>
22573
22574         * loader.c (find_method): Also lookup in
22575         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22576
22577 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22578
22579         * appdomain.c (mono_domain_unload): Don't free the error message
22580         before passing it to mono_get_exception_...
22581
22582         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22583         
22584 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22585
22586         * threads.c: try to better guess an available RT signal (bug #75387).
22587
22588 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22589
22590         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22591         and CACHE_OBJECT.
22592
22593 2005-07-07  Martin Baulig  <martin@ximian.com>
22594
22595         * class.c (mono_type_get_name_full): Return NULL for
22596         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22597         fixes #75408.
22598
22599 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22600
22601         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22602         exit the appdomain as well being aborted.
22603
22604         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22605         change back to the root domain after calling managed code. This enables
22606         appdomains using threadpools to be unloaded.
22607
22608 2005-07-07  Martin Baulig  <martin@ximian.com>
22609
22610         * class-internals.h
22611         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22612         into `MonoDynamicGenericClass' since we only need it for dynamic
22613         types.
22614
22615         * reflection.c (mono_class_bind_generic_parameters): We don't need
22616         to compute the `parent' here.
22617
22618 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22619
22620         * culture-info-table.h : regenerated.
22621
22622 2005-07-06  Martin Baulig  <martin@ximian.com>
22623
22624         * icall.c
22625         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22626
22627         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22628
22629 2005-07-06  Martin Baulig  <martin@ximian.com>
22630
22631         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22632         we're doing a signature-only comparision; fixes #74945.
22633
22634 2005-07-06  Martin Baulig  <martin@ximian.com>
22635
22636         * class-internals.h (MonoGenericClass): Moved some things out into
22637         a new `MonoInflatedGenericClass' type.  
22638         (MonoInflatedGenericClass): New type; the `klass' of a
22639         `MonoGenericClass' is now computed lazyly in
22640         mono_get_inflated_generic_class().      
22641
22642         * class.c (mono_get_inflated_generic_class): New public function.
22643         (mono_class_inflate_generic_method): Removed the unused
22644         `MonoClass *' argument.
22645         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22646         all the methods.
22647         (mono_class_create_generic): Make this static and merge it with
22648         mono_class_create_generic_2(); we're now called automatically from
22649         mono_get_inflated_generic_class().
22650
22651         * loader.c (mono_method_signature): Call
22652         mono_get_inflated_method() here.
22653
22654 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22655
22656         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22657         type of fields with RVA.
22658
22659         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22660         for this pseudo class.
22661         (my_mono_class_from_generic_parameter): Likewise.
22662         (mono_class_init): Allow interfaces to have cctors.
22663
22664 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22665
22666         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22667         lazily for AOT methods.
22668
22669 2005-07-05  Martin Baulig  <martin@ximian.com>
22670
22671         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22672         returns FALSE for a successful match, not TRUE.
22673
22674 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22675
22676         * loader.c (mono_method_get_index): Optimize this a bit.
22677
22678 2005-07-04  Martin Baulig  <martin@ximian.com>
22679
22680         * class.c
22681         (class_compute_field_layout): Move the check for generic type
22682         definitions into mono_class_layout_fields().  Fixes #74684.
22683         (mono_class_from_generic_parameter): Correctly compute
22684         `klass->parent'; fixes #75457.
22685
22686         * reflection.c (register_assembly, register_module): Make sure
22687         `domain->rejobject_hash' is already created.
22688
22689 2005-07-02  Martin Baulig  <martin@ximian.com>
22690
22691         * class-internals.h
22692         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22693         `MonoDynamicGenericClass'.      
22694
22695 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22696
22697         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22698         returned by a field getter is null, since null is a valid value.
22699
22700 2005-07-01  Martin Baulig  <martin@ximian.com>
22701
22702         * reflection.c (mono_reflection_generic_class_initialize): Update
22703         the `dgclass->fields [i].parent' to the correct class.
22704         (mono_image_get_fieldref_token): Use the declaring type, not the
22705         reflected type.
22706
22707 2005-07-01  Martin Baulig  <martin@ximian.com>
22708
22709         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22710
22711 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22712
22713         * threads.c (thread_cleanup): assert that thread != NULL
22714         (wait_for_tids_or_state_change): We were using the wrong variable
22715         when accessing wait->threads. `i' was always out of the bounds of
22716         the array.
22717
22718 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22719
22720         * loader.c: map user32 and kernel32 to libMonoSupportW
22721
22722 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22725
22726 2005-06-28  Martin Baulig  <martin@ximian.com>
22727
22728         * loader.c (method_from_methodspec): Fix #75334.
22729
22730 2005-06-28  Martin Baulig  <martin@ximian.com>
22731
22732         Fix #74953 - Arrays now implement the generic IList<T> interface
22733         on the 2.0 platform.
22734
22735         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22736
22737         * reflection.c (mono_class_bind_generic_parameters): New public
22738         function; similar to mono_reflection_bind_generic_parameters(),
22739         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22740
22741         * domain.c (mono_init_internal): Try to initialize.
22742         `mono_defaults.generic_array_class' here; this'll only succeed if
22743         we're using the 2.0 corlib.
22744
22745         * icall.c
22746         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22747         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22748         (mono_lookup_internal_call): Added support for nested classes.
22749
22750         * loader.c
22751         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22752         we're an interncall and have generic arguments.
22753
22754         * class.c
22755         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22756         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22757         instance of System.Array.InternalArray<T> for arrays, so they
22758         implement the generic IList<T> interface.
22759
22760 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22761
22762         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22763         (chastamar@yahoo.com). Fixes #75374.    
22764
22765 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22766
22767         * culture-info-table.h: regenerated.
22768
22769 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22770
22771         * icall.c: handle spaces correctly for base64 strings.
22772
22773 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22774
22775         * *.c: Kill some warnings.
22776
22777 2005-06-23  Duncan Mak  <duncan@novell.com>
22778
22779         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22780         that this builds on Solaris 10 (x86).
22781
22782 2005-06-23  Martin Baulig  <martin@ximian.com>
22783
22784         * class.c
22785         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22786         generic type definitions.
22787
22788 2005-06-23  Martin Baulig  <martin@ximian.com>
22789
22790         Fix #75331.
22791
22792         * metadata.c (mono_class_get_overrides): Renamed to
22793         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22794         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22795         pass it to mono_get_method_full().
22796
22797 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22798
22799         * reflection.c (mono_reflection_create_runtime_class): take the
22800         mono_domain_lock in this method. Prevents deadlocks
22801
22802 2005-06-22  Martin Baulig  <martin@ximian.com>
22803
22804         * loader.c (method_from_methodspec): Fix #75330.
22805
22806 2005-06-22  Martin Baulig  <martin@ximian.com>
22807
22808         * reflection.c (type_get_qualified_name): Use
22809         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22810         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22811         argument; use it if we don't have an assembly name.
22812
22813 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22814
22815         * object.c: In mono_message_init, set "copy out" flag for in
22816         parameters with the [Out] flag.
22817
22818 2005-06-21  Martin Baulig  <martin@ximian.com>
22819
22820         * class.c
22821         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22822         and MONO_TYPE_PTR.
22823
22824 2005-06-21  Martin Baulig  <martin@ximian.com>
22825
22826         * class.c (mono_class_init): Don't initialize `class->fields' for
22827         generic instances since they're initialized again in
22828         compute_field_layout(). 
22829         (compute_field_layout): Set the field's `generic_info' here; fix
22830         #75320. 
22831
22832 2005-06-21  Martin Baulig  <martin@ximian.com>
22833
22834         * class-internals.h
22835         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22836
22837         * metadata.c (mono_metadata_generic_method_equal): Also
22838         distinguish the `generic_class'; fixes #75334.
22839
22840 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22841
22842         * domain.c:
22843         * appdomain.c:
22844         * domain-internals.h:
22845         * reflection.c: 'domain_assemblies' field is now protected by its own
22846         lock. Don't call into managed code to run the AssemblyLoad event if we
22847         now there are no registered delegates for it.
22848
22849 2005-06-20  Martin Baulig  <martin@ximian.com>
22850
22851         * class.c (mono_class_is_assignable_from): Use a custom version of
22852         mono_class_has_parent() to make things work for generic instances;
22853         fix #75300.
22854
22855 2005-06-20  Martin Baulig  <martin@ximian.com>
22856
22857         * loader.c (method_from_methodspec): Apply a patch from
22858         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22859
22860 2005-06-20  Martin Baulig  <martin@ximian.com>
22861
22862         * class.c (mono_class_init): Reverted Zoltan's last change; it
22863         breaks generics.
22864
22865 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22866
22867         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22868
22869 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22870
22871         * socket-io.c: fix the index in the socket array for writable/error
22872         sockets. Fixes bug #75306.
22873
22874 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22875
22876         * class.c (mono_class_init): Allow interfaces to have static ctors.
22877
22878 2005-06-17  Martin Baulig  <martin@ximian.com>
22879
22880         * loader.c (method_from_methodspec): Use `context->container' when
22881         parsing the `gmethod->inst'.
22882
22883 2005-06-17  Martin Baulig  <martin@ximian.com>
22884
22885         * class.c (mono_type_get_name_recurse): Don't add the assembly
22886         name for type arguments.
22887
22888 2005-06-15  Martin Baulig  <martin@ximian.com>
22889
22890         * reflection.c (mono_image_get_inflated_method_token): Encode
22891         correct klass; fixes #75260.
22892
22893 2005-06-13 Michal Moskal <malekith@nemerle.org>
22894
22895         * icall.c: Make GetCorrespondingMethod/Constructor take
22896         MonoReflectionMethod method not MonoMethod. Removed
22897         MonoType.GetCorrespondingField, and make
22898         MonoGenericType.GetCorrespondingField take name not
22899         MonoClassField.
22900
22901 2005-06-13  Michal Moskal <malekith@nemerle.org>
22902
22903         * reflection.c (field_encode_signature, encode_locals):
22904          Make sizes of buffers for types larger (for big generic types).
22905          (create_generic_typespec,
22906          mono_reflection_sighelper_get_signature_local,
22907          mono_reflection_sighelper_get_signature_field):
22908          Add asserts for too small buffers.
22909
22910 2005-06-15  Martin Baulig  <martin@ximian.com>
22911
22912         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22913         if our parent is not a dynamic type.
22914
22915 2005-06-15  Martin Baulig  <martin@ximian.com>
22916
22917         * class-internals.h (MonoTypeNameFormat): New enum.
22918
22919         * class.c
22920         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22921         (mono_type_get_full_name): Removed.
22922         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22923         argument instead of the boolean's.
22924
22925         * icall.c (ves_icall_System_MonoType_getFullName):
22926         Added `gboolean assembly_qualified'.    
22927
22928         * reflection.h
22929         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22930
22931         * reflection.c (mono_reflection_parse_type): Parse the new type
22932         name format.
22933
22934 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22935
22936         * icall.c: no need to convert from utf16 to utf8 and then back again
22937         after the call to GetLogicalDrives.
22938
22939 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22940
22941         * icall.c: frombase64. Fix problems exposed by new tests.
22942
22943 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22944
22945         * icall.c: added internal calls for converting char [] and strings in
22946         base64 into byte [].
22947
22948 2005-06-10  Martin Baulig  <martin@ximian.com>
22949
22950         * class.c (mono_class_create_generic_2): Read the nested classes
22951         from the metadata rather than from `gklass->nested_classes' since
22952         `gklass' might not be initialized yet.
22953
22954 2005-06-09  Duncan Mak  <duncan@novell.com>
22955
22956         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22957         all public headers. Fixes #74919.
22958
22959 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22960
22961         * domain.c: The key for proxy_vtable_hash is now a pointer
22962         array. Added new GHashFunc and GCompareFunc functions for this.
22963
22964         * class.h: The list of interfaces in MonoRemoteClass is known in
22965         advance and can't grow (we create a new MonoRemoteClass if needed),
22966         so now the interface array can be allocated together with
22967         MonoRemoteClass.
22968         
22969         * object.c: Added a new method create_remote_class_key.
22970         Fixed mono_remote_class so it does not depend on
22971         mono_upgrade_remote_class.
22972         Removed extend_interface_array.
22973         Added new method clone_remote_class(), which makes a copy of a remote
22974         class and adds a new interface or class to it.
22975         mono_upgrade_remote_class() now creates a new remote class (or gets
22976         it from the cache) if an vtable upgrade is needed. In this way
22977         we make sure that other objects sharing the same remote class
22978         don't get the new vtable with unwanted interfaces.
22979         
22980         * object-internals.h:
22981         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22982         
22983         * marshal.c: Track changes in mono_upgrade_remote_class().
22984
22985 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22986         * icall.c: Add runtime methods for obtaining members of inflated
22987         class, which were created from supplied non-inflated members. It
22988         is used in internal Get{Method,Constructor,Field} methods in
22989         System.Type
22990
22991 2005-06-09  Martin Baulig  <martin@ximian.com>
22992
22993         * reflection.c
22994         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22995
22996 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22997         * reflection.c (mono_image_basic_init): Define
22998         Version in MonoDynamicAssembly. 
22999         
23000 2005-06-08  Martin Baulig  <martin@ximian.com>
23001
23002         Fix #75136.
23003
23004         * loader.c
23005         (mono_method_signature_full): New public method; takes a
23006         `MonoGenericContext *'.
23007         (find_method): Use mono_method_signature_full() and pass the
23008         klass'es context to it.
23009
23010         * class.c (mono_class_is_inflated_method): Use
23011         mono_method_signature_full() and pass the context to it.
23012
23013 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
23014
23015         * object.c: add proper locking in mono_remote_class_vtable(),
23016         fixes possible memory corruption.
23017
23018 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
23019
23020         * marshal.c (mono_remoting_marshal_init): set
23021         initialized after initialization.
23022
23023 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
23024
23025         * locales.c : hush.
23026
23027 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
23028
23029         * object.c (extend_interface_array): fix really silly
23030         memory corrupting / comparison bug.
23031
23032 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23033
23034         * reflection.c: Functions added to support the creation
23035         of CustomAttributeData, which includes Attribute data
23036         used by ReflectionOnly methods.
23037
23038         * reflection.h:  mono_reflection_get_custom_attrs_data and
23039          mono_custom_attrs_data_construct added (functions exposed).
23040
23041          * icall.c: Added mono_reflection_get_custom_attrs_data
23042          as icall.
23043         
23044 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
23045
23046         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
23047         lupus's request.
23048
23049 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
23050
23051         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
23052
23053         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
23054         dynamic DllImportAttribute.
23055
23056         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
23057         dynamic DllImportAttribute.
23058
23059         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
23060         Fixes #75162.
23061
23062 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23063
23064         * threads.c: avoid segfault when an unstarted thread is aborted.
23065
23066 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
23067
23068         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
23069         Returns the name and version of the runtime for reporting.
23070
23071 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23072
23073         * appdomain.c: bump corlib version.
23074         * object-internals.h: new field in MonoReflectionAssembly.
23075
23076 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23077
23078         * object-internals.h: Carlos forgot to add this field.
23079
23080 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23081
23082         * icall.c: Added create_version to create instances
23083         of Version of MonoReflectionAssemblyName. This change helps
23084         the AssemblyName tests to keep running fine.
23085         
23086 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
23087   
23088         * object.c (mono_method_return_message_restore): A somehow less
23089         intrusive fix for #75138.
23090
23091 2005-06-03  Raja R Harinath  <rharinath@novell.com>
23092
23093         * object.c (mono_method_return_message_restore): Fix computation
23094         of expected number of out args.
23095
23096 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23097
23098         * reflection.c (mono_image_get_method_info): Fix the case when the
23099         charset is empty.
23100
23101 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
23102
23103         * object.c: Added missing null check in
23104           mono_method_return_message_restore.
23105
23106 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23107
23108         * reflection.c (mono_image_get_method_info): Handle the case when
23109         dllentry is empty.
23110
23111 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
23112
23113         * object.c: When creating the vtable for a proxy, take into account
23114         all inherited interfaces, not only the ones registered in
23115         iclass->interfaces. This fixs bug #74996.
23116         Also, in mono_method_return_message_restore, verify that the array
23117         of out args has the expected lengh.
23118
23119 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23120
23121         * socket-io.c: update the timeout in Poll when the call is interrupte.
23122
23123 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23124
23125         * socket-io.c: support abort/suspend in Select_internal after last
23126         change.
23127
23128 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23129
23130         * threadpool.c: remove warning.
23131
23132 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23133
23134         * icall.c:
23135         * socket-io.[ch]: Select_internal uses poll() now when available, thus
23136         removing the 1024 limit from select(). Runtime part of the fix for
23137         bug #71203.
23138
23139 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23140
23141         * socket-io.c: when resolving the addresses for the same
23142         host returned by gethostname(), get the local IPs from the interface
23143         list. Loopback addresses are discarded if the are interfaces up with
23144         non-loopback ones. Fixes bug #63265.
23145
23146 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
23147
23148         * appdomain.c, verify.c, object-internals.h, reflection.c:
23149         bumped corlib number to 36, and added new extra_flags field
23150         to ReflectionMethodBuilder and friends.  Fixes #75060.
23151
23152 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
23153
23154         * gc.c: register a new weak link only if the object is non-null
23155         (fixes bug#75047).
23156
23157 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23158
23159         * culture-info.h : short time pattern too.
23160
23161 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23162
23163         * culture-info.h : expand long time pattern string length.
23164
23165 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23166
23167         * culture-info-table.h : update (more French date format; #72788).
23168
23169 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
23170
23171         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
23172         the method is static. Fixes #75029.
23173
23174 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
23175
23176         * reflection.c: Update the table_idx field of method builders after
23177         saving the module, since it can change. This is a workaround for
23178         bug #74914. 
23179
23180 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23181
23182         * culture-info-table.h : update (additional French date format).
23183
23184 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
23185
23186         * icall.c (ves_icall_type_Equals): Revert last change.
23187         
23188         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
23189
23190         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
23191
23192 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
23193
23194         * class-internals.h: Added executioncontext_class field to 
23195         MonoDefaults structure.
23196         * domain.c: Cache System.Threading.ExecutionContext class in 
23197         mono_defaults.
23198         * object.c: Capture the ExecutionContext for asynchroneous calls in
23199          mono_async_result_new.
23200         * object-internals.h: Added execution_context and original_context 
23201         fields to MonoAsyncResult. Added execution_context to MonoThread.
23202         * security-manager.c|.h: Added mono_get_context_capture_method to 
23203         return the capture method (if required by the security manager or by
23204         the framework version used).
23205         * threadpool.c: Apply capture (if present) ExecutionContext in 
23206         mono_async_invoke and revert to original context after it completes.
23207
23208 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
23209
23210         * culture-info-table.h : updated (real hacky solution for zh-CHT).
23211
23212 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
23213
23214         * culture-info-table.h : zh-CHT related workaround.
23215
23216 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23217
23218         * marshal.c (emit_marshal_custom): Add some error checking and call the
23219         methods in the ICustomMarshaler interface. Fixes #74875.
23220         
23221         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
23222         native->managed wrappers.
23223
23224 2005-05-12  Martin Baulig  <martin@ximian.com>
23225
23226         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
23227         here and use the loader lock.
23228
23229         * mono-debug.c: Properly lock when the debugger is not attached.
23230         (mono_debug_init): Release the initial lock if we're not running
23231         in the debugger.
23232
23233 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23234
23235         * marshal.c (emit_marshal_custom): Pass through NULL values without
23236         calling the custom marshalling routines.
23237
23238         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23239         conversion in structures. Fixes #74882.
23240
23241 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23242
23243         * culture-info-table.h : zh-* cultures were missing.
23244
23245 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23246
23247         * threads.c: Added a new event background_change_event which is signaled
23248         when a thread changes its background mode.
23249         Moved here several checks previously done in managed code. The checks
23250         require the thread lock, and using the thread lock in managed code
23251         can result in deadlocks.
23252         Merged Start_internal and Thread_internal into a single method. Now 
23253         Thread_internal does all work of creating and starting a thread.
23254         Added icalls for setting and getting the state of the object. Moved from
23255         managed code to avoid locking there.
23256         Added wait_for_tids_or_state_change() which is called instad of
23257         wait_for_tids when waiting for non-backround threads to end. This method
23258         will return if one of the threads ends or the background_change_event
23259         is signaled.
23260         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23261         the background mode. This method signals the background_change_event
23262         event.
23263         * icall.c:
23264         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23265         removed Start_internal.
23266         
23267 2005-05-11  Martin Baulig  <martin@ximian.com>
23268
23269         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23270         to order of some fields to get proper alignment on 64-bit machines.
23271
23272 2005-05-11  Martin Baulig  <martin@ximian.com>
23273
23274         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23275         changes as they're broken and completely fuck up the debugger.
23276
23277         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23278
23279 2005-05-10  Martin Baulig  <martin@ximian.com>
23280
23281         * reflection.c (mono_reflection_generic_class_initialize): Don't
23282         call mono_class_setup_parent() here.
23283
23284 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23285
23286         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23287         send/receive timeout use an integer in milliseconds. We were using a
23288         struct timeval.
23289
23290 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23291
23292         * locales.c:
23293         (internal_get_cultures): reserve the first slot of the array for the
23294         InvariantCulture, which will be filled in managed code.
23295
23296 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23297
23298         * reflection.c (mono_image_fill_module_table): Initialize the
23299         GENERATION field as well.
23300
23301 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23302
23303         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23304         Monitor.Enter on the object.
23305
23306 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23307
23308         * threads.c: Enable the wait for running threads when exiting.
23309         * icall.c: Suspend all threads before exiting.
23310
23311 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23312
23313         * assembly.c (mono_assembly_load_reference): Fix warning.
23314
23315 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23316
23317         * threadpool.c: changed the default number of threads per cpu. From now
23318         on, the default will be 20 + (5 * number of cpus) instead of 50.
23319
23320 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23321
23322         * loader.c (mono_method_get_signature_full): Add locking here.
23323
23324 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23325
23326         * appdomain.c: Moved methods for parsing and freeing assembly
23327         names to assembly.c.
23328         * assembly.c, domain-internals.h: Created public methods for parsing
23329         assembly names. Fixed mono_assembly_load_with_partial_name:
23330         it now finds the best match, taking into account the version,
23331         token and culture specified in the partial name. Also return
23332         the latest version if no version information is specified.
23333
23334 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23335
23336         * threadpool.c: replace check for SocketAsyncCall class.
23337
23338 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23339
23340         * threadpool-internals.h:
23341         * Makefile.am: added threadpool-internals.h
23342
23343         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23344         that happen in threadpool threads (tested on MS).
23345         (mono_thread_pool_remove_socket): new function that dispatch any pending
23346         AIO call on a socket that is closing. By now only epoll really needs it,
23347         as select/poll wake up when the socket closes.
23348
23349
23350         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23351
23352 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23355
23356 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23357
23358         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23359
23360 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23361
23362         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23363         has an abort request, convert it into a suspend request.
23364
23365 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23366
23367         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23368         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23369         is not supported yet.
23370
23371 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23372
23373         * image.c: register assemblies loaded from data (bundles) in the loaded
23374         assemblies hash. Fixes bug #74772.
23375
23376 2005-04-29  Martin Baulig  <martin@ximian.com>
23377
23378         * class.c (mono_type_get_name_recurse): Update to the new naming
23379         schema from the latest .NET 2.x beta2.
23380         (mono_class_setup_vtable_general): If we're a generic instance,
23381         copy the vtable from our generic type definition and inflate all
23382         the methods in it.
23383
23384         * loader.c (find_method): Update to the new naming schema from the
23385         latest .NET 2.x beta2.
23386
23387 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23388
23389         * class.c (mono_class_init): Add a mono_loader_unlock to the
23390         #74734 fix.
23391
23392 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23393
23394         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23395         suspend_all_other_threads () call for the time being, since it can hang.
23396
23397         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23398         the background threads to exit, since it can also hang.
23399
23400         * class.c (mono_class_init): Applied patch from Ankit Jain 
23401         (radical@gmail.com). Avoid pending init errors when a field refers
23402         to a nested class using a typeref. Fixes #74734.
23403
23404         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23405         this for dynamic modules.
23406
23407 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23408
23409         * threads.c: don't wait for threads that are in the process of aborting
23410         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23411         and waiting for background threads to finish. This makes xsp and
23412         mod-mono-server exit without random length delays and/or hangs.
23413
23414 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23415
23416         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23417
23418 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23419
23420         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23421         dynamic types to prevent infinite loops. Fixes #74727.
23422
23423         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23424         ..._is_assignable_to.
23425
23426 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23427
23428         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23429
23430 2005-04-25  Martin Baulig  <martin@ximian.com>
23431
23432         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23433
23434         * domain.c
23435         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23436
23437         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23438
23439         * reflection.c (build_compressed_metadata): Set metadata header
23440         version to 2.0.
23441
23442 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23443
23444         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23445         number into an integral and a decimal part. Fixes #70473.
23446
23447         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23448
23449 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23450
23451         * culture-info-table.h : reflected the latest locale-builder output.
23452
23453 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23454
23455         * threadpool.c: check for SuspendRequested too when deciding if
23456         mono_thread_interruption_checkpoint should be called.
23457
23458 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23459
23460         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23461         * threads.c: remove interruption_mutex and use Interlocked instead. When
23462         suspending all the threads, wait for all the suspended events at once.
23463         If we're shutting down and get an APC that is going to be queued,
23464         call mono_thread_execute_interruption immediately, as the thread might
23465         be sleeping on a pthread condition or mutex.
23466
23467         * icall.c: call mono_runtime_set_shutting_down before suspending the
23468         threads.
23469
23470         Fixes bug #74693. And now xsp is happier when exiting.
23471
23472 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23473
23474         * loader.c (mono_stack_walk): Fix #74690.
23475
23476 2005-04-22  Martin Baulig  <martin@ximian.com>
23477
23478         * mono-debug.h (MonoDebugMethodJitInfo): Added
23479         `MonoDebugMethodJitInfo *jit'.
23480
23481         * mono-debug.c (mono_debug_read_method): Cache the
23482         MonoDebugMethodJitInfo in `address->jit'.
23483         (mono_debug_free_method_jit_info): New public method.
23484
23485 2005-04-22  Martin Baulig  <martin@ximian.com>
23486
23487         * class.c (mono_class_is_assignable_from): Disallow
23488         type parameter -> interface.
23489
23490 2005-04-21  Dick Porter  <dick@ximian.com>
23491
23492         * threads.c (mono_thread_create): Turn an assertion into an error.
23493
23494 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23497         
23498         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23499         Fix some gcc 4.0 warnings.
23500
23501 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23502
23503         * file-io.c: fix alt dir separator char on unix systems
23504         and cleanup (fixes bug #71214).
23505
23506 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23507
23508         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23509         a call to a remote domain, since the method may be an
23510         interface method in the client domain. This fixes bug #74192.
23511
23512 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23513
23514         * threadpool.c: recv/send are now performed before going back to managed
23515         code to save one transition.
23516
23517 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23518
23519         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23520
23521         * metadata/threadpool.c: removed hack to workaround the bug above.
23522
23523         Fixes bug #74618.
23524
23525 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23526
23527         * reflection.c reflection.h: Fix handling of parameter defaults in
23528         dynamic methods. Also fixes handling of parameter attributes.
23529         Fixes #74609.
23530
23531         * mono-debug.c (mono_debug_close_image): Fix warning.
23532
23533 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23534
23535         * socket-io.h: replaced old unused field with new 'blocking'.
23536         * threadpool.c: restore socket blocking state on windows(tm).
23537
23538 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23539
23540         * icall.c: don't return the codebase in the AssemblyName[] returned by
23541         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23542         * object-internals.h: Removed FIXME (fields were presents) and fixed
23543         versioncompat declaration.
23544
23545 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23546
23547         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23548         not closed, so don't cleanup when it happens.
23549
23550 2005-04-13  Chris Toshok  <toshok@ximian.com>
23551
23552         * mono-debug-debugger.h: change prototype for
23553         mono_debugger_lookup_type.
23554
23555         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23556         this function, although it should probably be named
23557         mono_debugger_init_type.
23558
23559 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23560
23561         * threadpool.c: fix non-AIO case.
23562
23563 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23564
23565         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23566         the built-in profiler to measure just JIT compilation times.
23567
23568 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23569
23570         * threadpool.c: the epollfd might be closed by another thread at
23571         any time, so ignore EBADF at treat it as a "we're closing" sign.
23572
23573 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23574
23575         * threadpool.c: release the semaphores with a count equals to the number
23576         of working threads in both IO and regular pools. Fixed typo that messed
23577         up the count of IO pool threads. Don't initialize the pipe handles if
23578         we're using epoll.
23579
23580 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23581
23582         * threadpool.c: some systems don't like a NULL when deleting the socket
23583         from epoll.
23584
23585 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23586
23587         * threadpool.c: fix semaphore allocation.
23588
23589 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23590
23591         * threadpool.c: added epoll() based implementation for asynchronous IO
23592         that is used instead of the default poll() when available.
23593         It can be disabled by setting MONO_DISABLE_AIO.
23594
23595 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23596
23597         * threadpool.c: windows needs 'closesocket' and instead of returning
23598         0 when the stream is closed while in select, it returns -1. Fixes bug
23599         #74573.
23600
23601 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23602
23603         * class.c (class_compute_field_layout): Fix the regression caused by
23604         the previous try.
23605
23606 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23607
23608         * threadpool.c: separate pool for socket async. IO.
23609         * threadpool.h: mono_max_worker_threads is not a global any more.
23610
23611 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23612
23613         * class.c (class_compute_field_layout): Fix #74549.
23614
23615 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23616
23617         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23618         use 2 connected sockets instead.
23619
23620 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23621
23622         * mono-config.c: Add new entry point for mkbundle
23623         mono_config_parse_memory. 
23624
23625 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23626
23627         * threadpool.c: removed another unused function.
23628
23629 2005-04-08  Ankit Jain  <radical@corewars.org>
23630
23631         * reflection.c (get_default_param_value_blobs): Add 'types'
23632         parameter to get the types encoded in the constant table.
23633         (mono_param_get_objects): Use the type from the constant table,
23634         not the type of the parameter, when creating default values.
23635         Handle null default values correctly.
23636
23637 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23638
23639         * file-io.c:
23640         * file-io.h:
23641         * threadpool.c:
23642         * threadpool.h:
23643         * icall.c:
23644         * socket-io.c: removed dead code for async IO.
23645
23646 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23647
23648         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23649
23650         * threadpool.c: intercept socket async. calls and pass them to a thread
23651         that is polling and dispatching the job items to the threadpool as
23652         socket become ready. Fixes bugs #71217, #71933.
23653
23654         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23655         between char and short/ushort arrays.
23656
23657         * socket-io.c: remove dead code.
23658
23659 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23660
23661         * locales.c,
23662           icall.c : removed InternalToUpper_Comp() and
23663           InternalToLower_Comp().
23664
23665 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23666
23667         * char-conversions.h : The tables were incorrectly generated. Should
23668           be generated against invariant culture.
23669
23670 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23671
23672         * object.c (mono_runtime_invoke_array): Fix return value when 
23673         passing pre-created valuetype objects to ctors.
23674
23675         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23676         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23677         Fixes #74338.
23678
23679 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23680
23681         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23682         only used with --security and hides the wrong corlib version error.
23683
23684 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23685
23686         * class.c: Changed mono_class_name_from_token so that types
23687         outside of a namespace don't have an initial period.  Improved
23688         the g_warning message used in _mono_class_get when loading
23689         fails.
23690         * assembly.c: In mono_assembly_load_reference, when an assembly
23691         can't be found, "No such file or directory" is misleading and
23692         unhelpful because a few paths were checked for the presence of
23693         the assembly.  When that happens (ENOENT), display a nicer
23694         message indicating the directories that were searched.  In all
23695         cases, the warning is made easier to read for non-hackers.
23696
23697 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23698
23699         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23700         project/solution.
23701         * appdomain.h|domain.c: Removed inline from functions.
23702         * appdomain.c: Reduced warnings when compiling on windows.
23703         * icall.c: Fixed output_debug declaration to gunichar2*.
23704         * mono-config.c: Reduced warnings when compiling on windows.
23705         * rand.c: Added missing "windows.h". Added missing return value.
23706         * rawbuffer.c: Added missing winsock2.h for windows.
23707         * sysmath.h: Added mono-compiler.h header to allow/ease 
23708         compilation with non-GCC compilers.
23709         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23710         Removed cast warnings.
23711
23712         Adapted from the work of J Lothian (for VC6).
23713
23714 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23715
23716         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23717         from default_path.
23718
23719 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23720
23721         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23722         the 2.0 profile.
23723
23724 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23725
23726         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23727         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23728         stuff, and it would probably use $(prefix)/share rather than
23729         $(prefix)/lib.
23730
23731 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23732
23733         * console-io.c: added 2 includes that might be missing.
23734
23735 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23736
23737         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23738         profile.
23739
23740         * reflection.c (create_custom_attr): Allocate the params array using
23741         alloca so it gets GC tracking.
23742
23743 2005-03-23  Chris Toshok  <toshok@ximian.com>
23744
23745         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23746         out some spew.
23747
23748 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23749
23750         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23751         changes to pick up any changes in prefix, etc.
23752
23753 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23754
23755         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23756         
23757         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23758         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23759
23760 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23761
23762         * class-internals.h object-internals.h class.c reflection.c: Extend the
23763         mono_lookup_dynamic_token () function to return the class of the
23764         token as well. 
23765
23766         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23767         well. Fixes #73848.
23768
23769 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23770
23771         * security-manager.c: Skip inheritance checks for intra-corlib
23772         class inheritance and method overrides. This skips a lot of checks
23773         and (anyway) permissions cannot work until corlib is loaded.
23774
23775 2005-03-23  Martin Baulig  <martin@ximian.com>
23776
23777         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23778         MONO_TYPE_GENERICINST.  
23779
23780 2005-03-23  Martin Baulig  <martin@ximian.com>
23781
23782         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23783
23784 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23785
23786         * class.c: added locking comments to some functions.
23787         Cache the interface offsets arrays (saves about 20 KB
23788         of runtime memory in a typical app).
23789         Reduce the time overhead in mono_class_setup_supertypes ().
23790
23791 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23792
23793         * icall.c: speedup and fix leaks in GetMethodsByName and
23794         GetPropertiesByName.
23795
23796 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23797
23798         * reflection.c: some locking fixes.
23799
23800 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23801
23802         * metadata.c: added missing break in case statement.
23803
23804 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23805
23806         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23807         typedbyref return values. Fixes #73941.
23808
23809 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23810
23811         * security-manager.c|h: Added demandunmanaged method and 
23812         suppressunmanagedcodesecurity class to MonoSecurityManager.
23813         Renamed aptc class to allowpartiallytrustedcallers.
23814
23815 2005-03-17  Martin Baulig  <martin@ximian.com>
23816
23817         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23818
23819 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23820
23821         * file-io.c: disabled file async. IO using aio_*. It uses the
23822         threadpool now. Workaround for bug #73718.
23823
23824 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23825
23826         * assembly.h, mono-config.c: added code to deal with bundled configs
23827         for bundled assemblies.
23828
23829 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23830
23831         * *.c, private.h: cleanup, removing old private.h header file.
23832
23833 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23836         and throw_on_unmappable_char attributes.
23837
23838 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23839
23840         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23841         _ProcessName_internal.
23842
23843 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23844
23845         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23846         #73631.
23847
23848         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23849         are no longer used.
23850
23851 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23852
23853         * object.c (compute_class_bitmap): Add support for generics. Fixes
23854         #73527.
23855
23856 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23857
23858         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23859
23860 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23861
23862         * filewatcher.c: commented out the code for windows watcher, as we don't
23863         use it (we use the managed implementation instead).
23864
23865 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23866
23867         * object-internals.h (MonoThread): Remove 'unused1' field.
23868
23869         * appdomain.c: Bump corlib version.
23870
23871         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23872
23873         * reflection.c (mono_reflection_create_runtime_class): Remove the
23874         AssemblyBuilder.Save optimization since it causes too many problems.
23875
23876 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23877
23878         * exception.c|h: Added mono_get_exception_reflection_type_load to
23879         create a ReflectionTypeLoadException object.
23880         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23881         to return NULL is a InheritanceDemand fails during reflection. Updated
23882         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23883         ReflectionTypeLoadException if an InheritanceDemand fails during 
23884         reflection. Added icall mapping for GetLinkDemandSecurity.
23885         * security-manager.c|h: Added ves_icall_System_Security_
23886         SecurityManager_GetLinkDemandSecurity internal call to return the
23887         class and methods permissions set for a LinkDemand. Removed unused
23888         fields in MonoSecurityManager.
23889
23890 2005-03-10  Martin Baulig  <martin@ximian.com>
23891
23892         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23893         it's a generic instance.
23894
23895 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * reflection.c (mono_get_object_from_blob): Applied patch from
23898         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23899
23900         * class.c (mono_class_is_assignable_from): Another try at fixing 
23901         #73469 without breaking anything.
23902
23903 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * class.c: (mono_class_is_assignable_from): Revert the last changes
23906         since they don't work with generics.
23907         
23908         * class.c (mono_class_is_assignable_from): Fix build bustage.
23909
23910         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23911         the managed IsAssignableFrom method. Fixes #73469.
23912
23913         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23914         function.
23915
23916 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23917
23918         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23919         memory when the remoting callback does not sets the out arguments.
23920         Fixes #73007.
23921
23922         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23923         by mistake.
23924
23925         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23926
23927         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23928
23929         * appdomain.c: Bump corlib version.
23930
23931 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23932
23933         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23934         function.
23935
23936         * threads.c (mono_thread_attach): Detect threads which are not started
23937         by the GC pthread wrappers.
23938
23939 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23940
23941         * icall.c: Added new icall for RNG.
23942         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23943         single handle on Linux to access /dev/urandom and fix #73183.
23944
23945 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23946
23947         * object.c: setting the new vtable in a transparent proxy object must
23948         not change the GC descriptor.
23949
23950 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23951
23952         * object.c: fixed compilation without GCJ support.
23953         * reflection.c: for runtime-created types ensure klass->has_references
23954         is correct (bug #73215).
23955
23956 2005-03-02  Martin Baulig  <martin@ximian.com>
23957
23958         * class.c (mono_class_is_assignable_from): Make this work if
23959         `oklass' is a generic instance; fixes #72831.
23960
23961 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23962
23963         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23964         with hasthis set.
23965         
23966         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23967
23968         * marshal.c: Reorganize native->managed marshalling code to also use
23969         the emit_marshal_... functions.
23970
23971 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23972
23973         * object.c: typed allocs have issues with bitmap sizes > 30,
23974         so check for max_set >= 30.
23975
23976 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23977
23978         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23979         managed code. Fixes #73012.
23980
23981         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23982
23983         * metadata.c reflection.c: Load/Emit elem_mult as well.
23984         
23985         * metadata.h (MonoMarshalSpec): Add comment.
23986
23987         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23988
23989         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23990         num_elem to -1 if not given.
23991
23992         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23993
23994         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23995         given values.
23996
23997 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23998
23999         * null-gc.c (mono_gc_free_fixed): Was not compilable.
24000
24001 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * reflection.c (encode_marshal_blob): Encode param_num field as well.
24004
24005         * object-internals.h (MonoReflectionMarshal): Add param_num field.
24006
24007 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
24008
24009         * object.c: generalized the reference bitmap creation
24010         and added hooks for the new GC.
24011         * class-internals.c: removed the gc_bitmap field from MonoClass.
24012
24013 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24014
24015         * domain.c: help the compiler to produce better code
24016         in mono_jit_info_table_find ().
24017
24018 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24019
24020         * object.c: make all allocations look typed.
24021
24022 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24023
24024         * socket-io.c: load Mono.Posix if it's not loaded already
24025         (fixes bug#73033).
24026
24027 2005-02-24  Martin Baulig  <martin@ximian.com>
24028
24029         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
24030         * reflection.c (dup_type): Likewise.
24031
24032 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
24033
24034         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
24035         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
24036
24037 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24038
24039         * domain.c, threads.c, object-internals.h: make the critical thread
24040         local vars use the fast access mode (even when we're compiled in
24041         a lib). Provide accessors to be used by the jit during codegen.
24042
24043 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
24044
24045         * appdomain.c: Changed hook functios behavior to include
24046         support for the reflection only assemblies. Some icalls were changed
24047         to support the mentioned assemblies too. Signatures of static methods
24048         try_assembly_resolve and real_load now have an additional parameter:
24049         refonly.
24050
24051         * assembly.c: General changes to mono_assembly_ methods to support
24052         reflection only api. Functions mono_assembly_open, mono_assembly_load,
24053         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
24054         suffix, to support an additional gbool parameter to specify whether
24055         the assembli is reflection only or not. Created some new hook functions 
24056         to add support for reflection only assemblies. Signatures of static 
24057         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
24058         have now an additional parameter: refonly.
24059
24060         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
24061         indicating whether the assembly is reflection only or not.
24062
24063         * exception.c: Add mono_get_exception_invalid_operation.
24064
24065         * icall.c: Throw an InvalidOperationException when trying to invoke
24066         a property/method/event, or trying to set/get the value of a field.
24067         Also add an icall to retrieve the ref_only flag to the
24068         MonoReflectionAssembly.
24069
24070 2005-02-23  Chris Toshok  <toshok@ximian.com>
24071
24072         Part of fix for #72827.
24073         * mono-debug.c (mono_debug_add_method): add lexical block data to
24074         the info we write.  Kind of a hack at the moment - we copy the
24075         lexical block info from the MonoDebugMethodInfo to the
24076         MonoDebugMethodJitInfo here, before writing it.
24077         (mono_debug_read_method): read the lexical block info.
24078
24079         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
24080
24081         * debug-mono-symfile.h: add lexical block support.
24082
24083         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
24084         support.
24085
24086 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24087
24088         * loader.c (mono_lookup_pinvoke_call): Fix warning.
24089
24090         * object.c (mono_runtime_free_method): Call mono_free_method () and
24091         put the TODOs there.
24092
24093         * loader.c (mono_free_method): Free up most memory allocated for 
24094         dynamic methods.
24095
24096 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24097
24098         * reflection.c: properly flag a Type argument to a
24099         named custom attr value (bug #72248).
24100
24101 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24102
24103         * reflection.c: reduce code duplication in named custom
24104         attribute encoding.
24105
24106 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
24107
24108         * reflection.c: properly encode custom attrs of type object
24109         (bug #72649).
24110
24111 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24112
24113         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
24114
24115 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
24116
24117         * socket-io.c: load System.dll if it's not loaded already
24118         (bug #72850 and #70477).
24119
24120 2005-02-21  Martin Baulig  <martin@ximian.com>
24121
24122         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
24123         generic instances.
24124
24125 2005-02-21  Martin Baulig  <martin@ximian.com>
24126
24127         * reflection.c (mono_image_build_metadata): We also need to
24128         "fixup" the MethodImpl table after we computed the final method
24129         indices.  Call fixup_methodimpl() to do that.
24130         (fixup_methodimpl): New private method.
24131
24132 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24133
24134         * assembly.c: special case mscorlib.dll (bug#72536),
24135         patch from Carlos Alberto Cortez.
24136
24137 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
24138
24139         * threads-types.h threads.c: Fix build bustage.
24140
24141         * threads.c: Use a union for long<->double conversions.
24142
24143         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
24144         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
24145
24146         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
24147         containing the checkpoint call with NOT_TAKEN.
24148         
24149         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
24150         checkpoint before pushing the arguments, so they won't have to be
24151         spilled to stack.
24152
24153 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24154
24155         * domain.c, assembly.c, domain-internals.h: make some data
24156         const and relocation-free.
24157
24158 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
24159
24160         * object.c, appdomain.c, class-internals.h: introduce the
24161         MonoClassRuntimeInfo structure to hold the info needed to
24162         use a class at runtime. Made mono_class_vtable() lock-free
24163         for all the appdomains.
24164
24165 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
24166
24167         * metadata-internals.h, image.c: introduce a per-image mempool to
24168         be used for memory that has the same lifetime as the image.
24169
24170 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
24171
24172         * domain.c: In mono_init_internal(), instead of selecting the first
24173         runtime version supported by an executable, get a list of all
24174         supported versions and select the one for which an mscorlib exists
24175         (since even if the runtime supports a given version, it doesn't mean
24176         that the framework for that version is installed).
24177         Modified get_runtimes_from_exe to support this behavior.
24178         In supported_runtimes, added information about additional system
24179         assembly versions.
24180         
24181         * assembly.c: Added support for more than one system assembly version
24182         per runtime version. Updated the assembly list.
24183         In mono_assembly_remap_version, removed the initial version check,
24184         since we don't know to which version we need to compare until we
24185         get the version set on which the assembly is based.
24186         Moved the code for loading corlib into the new method
24187         mono_assembly_load_corlib(), so it can be used by the initialization
24188         code.
24189         
24190         * domain-internals.h: Updated data structures and added declaration
24191         for mono_assembly_load_corlib.
24192
24193 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24194
24195         * reflection.c (resolve_object): Fix the creation of the signature in 
24196         the SignatureHelper case.
24197
24198         * assembly.c (mono_assembly_remap_version): Fix binary search.
24199         
24200 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
24201  
24202         * class.c: Added inheritance check when a method is overloaded (from a
24203         virtual method or when implementing an interface) and when a class is
24204         inherited. Added functions to set a failure for a class and to 
24205         retreive the exception from a failure.
24206         * class-internals.h: Added fields to MonoClass to keep the exception
24207         information status for inheritance (or other exceptions) to be thrown
24208         later (i.e. not at load time).
24209         * object.c: Throw the inheritance SecurityException when a type is to 
24210         be created with either class or method inheritance violations.
24211         * reflection.c|h: Fix when getting declsec from a class. Removed 
24212         unrequired code for class. Improved sanity in parameter naming.
24213         * security-manager.c|h: Added functions to check for class and method
24214         inheritance.
24215
24216 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
24219         and has_finalize in dynamic types as well.
24220
24221 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
24222
24223         * culture-info-table.h : fixed currency format for en-GB (and so on).
24224
24225 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
24226
24227         * gc.c: ensure the GC handles never have 0 as a value.
24228
24229 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24230
24231         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24232         a pointer to a struct to unmanaged code. Fixes #72625.
24233
24234 2005-02-16  Martin Baulig  <martin@ximian.com>
24235
24236         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24237
24238 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24239
24240         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24241
24242 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24245
24246         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24247         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24248         etc. Fixes #71471.
24249
24250         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24251
24252         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24253
24254 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24255
24256         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24257         changes to make the current context a field in MonoThread.
24258
24259 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24260
24261         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24262         the last change.
24263         
24264         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24265         extracted from mono_marshal_get_native_wrapper.
24266
24267         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24268         to create wrappers around native functions.
24269
24270         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24271         delegates for arbitrary function pointers. Fixes #71472.
24272
24273 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24274
24275         * threads.c: cleaned up the code a little.
24276
24277 2005-02-15  Martin Baulig  <martin@ximian.com>
24278
24279         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24280         the data table.
24281
24282         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24283         allocate larger chunks if needed.
24284
24285 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24286
24287         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24288         in by mistake.
24289
24290 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24291
24292         * domain.c: keep the domains in an array and ensure the domain ids
24293         are kept small, so they can be used as indexes to domain-specific data
24294         with a small memory overhead.
24295
24296 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24297
24298         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24299
24300 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24301
24302         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24303
24304 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24305
24306         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24307
24308         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24309         values.
24310
24311         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24312         
24313 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24314
24315         * domain-internals.h: add the hashtable here.
24316
24317         * class-internals.h: Remove `info' from MonoMethod
24318
24319         * domain.c: Add a new hashtable, jit_trampoline_hash
24320
24321 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24322
24323         * object.c: don't set the value of static fields
24324         (fixes bug#72494).
24325
24326 2005-02-11  Martin Baulig  <martin@ximian.com>
24327
24328         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24329         (mono_debug_add_method): Silently ignore the method if it's too big.
24330         (mono_debug_add_type): Likewise.
24331
24332 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24333
24334         * threads.c, appdomain.c: remove #ifdefs from the code.
24335
24336 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24337
24338         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24339         common security informations. This allows us to stay in unmanaged code
24340         when doing LinkDemand and it's special cases (except for the first 
24341         time for initialization). The flags a very much used with --security.
24342         * reflection.c|h: Added code to get declarative security attributes 
24343         for LinkDemand and InheritanceDemand. This required to refactor the
24344         existing code for Demand.
24345         * security-manager.c|h: Added new method fields for the special cases
24346         of LinkDemand.
24347
24348 2005-02-10  Martin Baulig  <martin@ximian.com>
24349
24350         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24351         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24352
24353 2005-02-10  Martin Baulig  <martin@ximian.com>
24354
24355         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24356         debugging code; this is almost a complete rewrite.
24357
24358         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24359
24360 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24361
24362         * domain.c, object.h: expose mono_string_equal () and 
24363         mono_string_hash ().
24364         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24365         it's implemented in managed code.
24366
24367 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24368
24369         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24370         lo leak objects between appdomains.
24371
24372 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24373
24374         * assembly.c: old compilers compilation fix from 
24375         robertj@gmx.net (Robert Jordan).
24376
24377 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24378
24379         * class-internals.h: Little reminder for the future.
24380
24381         * debug-helpers.c: Fix up wrapper_type_names
24382
24383 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24384
24385         * image.c, metadata-internals.h: when loading an image from a file,
24386         mmap all of it and use the same codepaths as when using a
24387         in-memory image: the code is simpler and we use less memory
24388         (both writable and readonly).
24389
24390 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24391
24392         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24393         API to alloc runtime data structures that need to be tracked by the
24394         GC and contain pointers.
24395         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24396         make the code more readable and eventually use a different GC.
24397
24398 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24399
24400         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24401         for out arguments.
24402         
24403 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24404
24405         * object.c: In release_type_locks(), don't release the cctor lock
24406         if it has already been released. This fixes a crash in the
24407         thread5 test.
24408
24409 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24410
24411         * gc.c, marshal.c, icall.c: register a delegate for finalization
24412         only when the native function pointer has been allocated for it.
24413
24414 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24415
24416         * object.c: cleaned up some code, allocate objects that are
24417         pointer free with the atomic malloc variant. Allocate memory
24418         for static data from the mempool if it's pointer-free.
24419         Allocate the bounds array at the end of the array data, when needed.
24420         * object-internals.h, object.h: move a private function in a private
24421         header.
24422         * class.c: handle missing case in tracking references in fields.
24423
24424 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24425
24426         * class.c, class-internals.h: keep track if a type has
24427         reference fields in either the instance or static fields.
24428
24429 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24430
24431         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24432         and renamed to MonoRuntimeInfo. Added fields to store the expected
24433         framework assembly version. Changed mono_get_framework_version and
24434         mono_get_runtime_version for a single mono_get_runtime_info method.
24435         
24436         * assembly.c: Added method to remap system assembly versions to the
24437         current executing runtime version. Removed old mapping code.
24438         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24439         
24440         * icall.c, reflection.c: Track api changes.
24441
24442 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24443
24444         * loader.c (method_from_memberref): Improve error reporting,
24445         produce the class name instead of the typeref/typedef index. 
24446
24447 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24448
24449         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24450
24451 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24452
24453         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24454         stdcall and charset name mangling.  Reorganize the code and add
24455         some tracing stuff.
24456
24457 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24458
24459         * monodiet.c: More iters!
24460
24461         * marshal.c: Iter usage.
24462
24463         * icall.c: Iter usage.
24464
24465         * object.c: Use iters.
24466
24467         * debug-helpers.c: More iters
24468
24469 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24470
24471         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24472         under win32.
24473
24474 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24475
24476         * mono-debug-debugger.c: use iters
24477
24478         * class.c, class-internals.h: mono_class_setup_events is static
24479         now
24480
24481         * All callers: use iters
24482
24483 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24484
24485         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24486         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24487
24488 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24489
24490         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24491
24492         * marshal.h: Add prototypes for ldfld/stfld_remote.
24493
24494         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24495         this is called during startup.
24496         
24497 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24498
24499         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24500         MonoThreadsSync struct private in monitor.c. Changed the way
24501         MonoThreadsSync is allocated so it's faster and there is no
24502         need to keep track of it with a finalizer and it uses less memory.
24503         This also finally allows us to allocate mono objects as ptrfree when
24504         there are no reference fields.
24505
24506 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24507
24508         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24509         disappearing link to the GC interface and use them to simplify
24510         the gchandles code.
24511
24512 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24513
24514         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24515         stfld_remote which call mono_load/store_field_new. This allows methods
24516         calling ldfld/stfld wrappers to be AOTed.
24517
24518         * console-io.c: Include sys/filio.h under solaris.
24519         
24520         * console-io.c: Include curses.h if needed correctly.
24521
24522 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24523         
24524         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24525         method->klass as well.
24526
24527         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24528
24529         * class.c (mono_class_init): Switch on lazy initialization of 
24530         methods.
24531
24532         * class.c (mono_class_get_finalizer): Handle the case when the 
24533         finalizer is inherited.
24534
24535 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24536
24537         * console-io.c: <curses.h> is needed by term.h on solaris.
24538
24539 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24540
24541         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24542         mono_class_setup_properties where possible. Remove this ftn from
24543         the header file, and make it static.
24544
24545 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24546
24547         * loader.c: Add missing setup_... call.
24548
24549         * class.c: Add missing setup_... calls.
24550
24551         * class.c (mono_class_init): Switch on lazy initialization of 
24552         the generic vtable.
24553         
24554         * class.c (mono_class_init): Fix generics broken by the recent changes.
24555
24556         * monodiet.c (handle_type): Add missing setup_... calls.
24557
24558         * class.c: Back out garbage in previous patch.
24559         
24560         * class.c: Add missing setup_... calls.
24561
24562         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24563         mono_class_setup_methods () if possible.
24564
24565         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24566
24567         * class-internals.h (MonoCachedClassInfo): New structure.
24568
24569         * class.c: Initialize properties and events fields of MonoClass lazily.
24570
24571         * class.c: Add infrastructure for lazily initializing the methods and
24572         vtable fields of MonoClass. Not yet used.
24573
24574         * class.c (mono_class_get_finalizer): New helper function.
24575
24576         * class.c: Add infrastructure for loading some class related data from
24577         an AOT file.
24578
24579         * object.c: Add infrastructure for initializing the vtable from data
24580         in the AOT file.
24581
24582         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24583
24584         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24585         appropriate initialization function before accessing parts of the
24586         MonoClass structure.
24587
24588         * marshal.c: Fix warnings.
24589         
24590         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24591
24592         * mono-debug-debugger.c (get_exception_message): Use 
24593         mono_class_get_method_from_name_flags ().
24594
24595 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24596
24597         * reflection.c, appdomain.c: Replace a few manual searches that
24598         Zoltan missed. (Paolo approved this part of my initial patch).
24599
24600 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24601
24602         * profiler.c: disable recording statistical events at report time.
24603
24604 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24605
24606         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24607         to byteswap arrays of enum values, too (bug #72080).
24608
24609 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24610
24611         * appdomain.c (set_domain_search_path): Allow this to be called if
24612         domain->setup is not yet set.
24613
24614         * loader.c (mono_method_get_index): New helper function.
24615
24616         * loader.c reflection.c: Use mono_method_get_index ().
24617
24618         * class.c (mono_class_get_method_from_name_flags): New helper method.
24619
24620         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24621         this.
24622
24623         * class.c (mono_class_get_cctor): New helper method.
24624
24625         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24626         mono_class_get_method () to look up methods.
24627
24628 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24629
24630         * console-io.c: Fix the build, this should work on Windows.
24631
24632 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24633
24634         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24635         be set to null to keep things valid
24636
24637 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24638
24639         * icall.c: added Console 2.0 icalls.
24640         * Makefile.am: added console-io.[ch]
24641         * console-io.[ch]: internal calls for Console 2.0 API.
24642
24643 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24644
24645         * class.c: make sure we consider all the interfaces
24646         when calculating max_interface_id (bug found by
24647         Jeroen Frijters running ikvm).
24648
24649 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24650
24651         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24652         valuetype fields to null.
24653
24654         * object.c (set_value): Ditto. Fixes #71669.    
24655
24656 2005-01-31  Martin Baulig  <martin@ximian.com>
24657
24658         * metadata.c (mono_metadata_has_generic_params): New public
24659         function; checks whether something is a generic method.
24660
24661 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24662
24663         * appdomain.c: fix infinite recursion when adding assemblies.
24664
24665 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24666
24667         * object.c: Fix small typo to return all items for Environment.
24668         GetCommandLineArgs.
24669
24670 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24671
24672         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24673         reflection.c: more domain and assembly-unload related fixes
24674         and memory leaks plugs.
24675
24676 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24677
24678         * 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.
24679
24680 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24681
24682         * loader.c (mono_method_signature): Make this method lazy
24683         (mono_get_method_from_token): Don't computate the signature here.
24684
24685         Doing this saves quite a bit of memory. I got 90 kb on starting up
24686         monodoc. It should also save some disk reads on startup.
24687
24688         * *: MonoMethod->signature might be NULL now. You *MUST* use
24689         mono_method_signature.
24690
24691 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24692
24693         * object.c (mono_runtime_get_main_args): Return an array from the
24694         current domain here. Fixes #71938.
24695
24696 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24697
24698         * monitor.c: formatting changes to comply with the
24699         mono coding style and remove #ifdefs from the code.
24700
24701 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24702
24703         * metadata.c, private.h: remove some unneeded data
24704         and use a more compact representation for table schemas.
24705
24706 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24707
24708         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24709         to get a better distribution in hash tables.
24710         * *.c: use mono_aligned_addr_hash() where appropriate.
24711         * assembly.c: make var static.
24712
24713 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24714
24715         * domain-internals.h: Put MonoJitInfo on a diet.
24716
24717         * domain.c: Fix a warning.
24718
24719 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24720
24721         * gc.c: rework the gc handles code to reuse handles
24722         when freed.
24723
24724 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24725
24726         * domain.c: fixed long standing bug in mono_string_equal() which
24727         was brought to light with the ldstr changes.
24728
24729 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24730
24731         * reflection.c: Remove warning by adding missing include for marshal.h
24732
24733 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24734
24735         * domain.c, object.c: change the ldstr_table to hold
24736         MonoString* as keys: makes the runtime isinterned lookup
24737         faster and simplifies memory management.
24738
24739 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24740  
24741         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24742         possible to add imperative security checks before calling the icall.
24743         * reflection.c: Return security attributes on the original MonoMethod
24744         (and not the wrapped one). This fix permissions on icalls.
24745
24746 2005-01-25  Dick Porter  <dick@ximian.com>
24747
24748         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24749         the check for mktime() support actually test the mktime() return
24750         value.  "Fixes" bug 71682, though the output is still different to
24751         MS.
24752
24753 2005-01-25  Martin Baulig  <martin@ximian.com>
24754
24755         * class.c (mono_class_is_assignable_from): Make this work for
24756         generic instances.
24757
24758 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24759
24760         * marshal.c (mono_string_utf8_to_builder)
24761         (mono_string_builder_to_utf16): We might not have ownership of the
24762         string. In thise case, we need to create a new buffer.
24763
24764         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24765         be null, in which case, use the default capacity.
24766
24767 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24768
24769         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24770         GC events to the profiler.
24771
24772 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24773
24774         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24775         if you don't want the GC to run.
24776
24777 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24778
24779         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24780         start providing a GC API and keeping different implementations in
24781         their own file.
24782         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24783
24784 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24785
24786         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24787         mmap rather than allocating a huge buffer.
24788         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24789         above.
24790
24791 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24792
24793         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24794         and CheckExecutionRights.
24795         * reflection.c|h: Keep the index of the declarative security to be 
24796         used, instead of the pointer, when AOT compiler is used. Also add 
24797         class initialization when requesting demands.
24798         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24799         CheckExecutionRights. Both properties are now FALSE by default, and
24800         unmodifiable, unless the --security option is used.
24801
24802 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24803
24804         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24805         reflection.c: properly refcount images and assemblies, many leaks fixed.
24806
24807 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24808
24809         * threadpool.c: increase the timeout for threads in the thread pool to
24810         10s.  Fixes bug #67159.
24811
24812 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24813
24814         * class-internals.h: Sun's compiler insists on explicit
24815         signed on bit fields to handle then correctly.
24816
24817 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24818
24819         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24820         Make the size of the array fit only the number of invalid path
24821         chars that we have.
24822
24823         * class.c (_mono_class_get): Improve the error reporting when a
24824         class referenced is not found, to assist debugging. 
24825
24826 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24827
24828         * threads.c: fix off-by-one error.
24829         * domain.c: free data allocated in the domain.
24830
24831 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * reflection.c (mono_method_body_get_object): Fill out exception info
24834         as well.
24835
24836         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24837         structure.
24838         
24839 2005-01-19  Martin Baulig  <martin@ximian.com>
24840
24841         * loader.c (mono_get_method_constrained): Make this work again.
24842
24843 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24844
24845         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24846         guint16 to match the managed side.
24847
24848         * reflection.c (mono_reflection_body_get_object): Fill out local
24849         variables array.
24850
24851         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24852         as well.
24853
24854         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24855         'local_var_sig_token'.
24856
24857 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24858
24859         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24860         System.Drawing.
24861
24862         * reflection.c (mono_method_body_get_object): Handle abstract and
24863         runtime methods.
24864
24865 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24866
24867         * marshal.c, loader.c, class-internals.h, reflection.c:
24868         store the emthod data for a wrapper in an array instead of a list.
24869
24870 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24871
24872         * marshal.c: change the code to allocate memory more
24873         conservatively for method wrappers.
24874
24875 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24876
24877         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24878         fields from MonoClass to the marshal info structure where they belong.
24879
24880 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24881
24882         * class.c, object.c, class-internals.h, marshal.c: rearrange
24883         some fields and tweak some types to lower memory usage.
24884
24885 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24886
24887         * threads.c (signal_thread_state_change): Handle the case when the
24888         target thread is the current thread.
24889
24890         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24891
24892         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24893         emit_ptr_to_object_conv. 
24894
24895         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24896         marshalling. Fixes #71352.
24897
24898 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24899
24900         * metadata.h, blob.h: move table enum to blob.h so it can be included
24901         in any header.
24902         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24903         cut the size of MonoImage/MonoDynamicImage.
24904
24905 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24906
24907         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24908
24909 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24910
24911         * reflection.c, reflection.h, icall.c: add a function to check
24912         if an attribute type is defined for a metadata object.
24913
24914 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24915
24916         * object-internals.h: Added some needed fields from StringBuilder class.
24917         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24918
24919 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24920
24921         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24922         threads before shutting down the runtime.
24923
24924         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24925
24926 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24927
24928         * object-internal.h, threads.c: implement stacksize and 
24929         parameterized thread start functionality (requires
24930         matching corlib). Marked broken code for later removal.
24931
24932 2005-01-12  Martin Baulig  <martin@ximian.com>
24933
24934         * class-internals.h (MonoGenericClass): Moved the `initialized'
24935         flag to MonoDynamicGenericClass, removed `init_pending'.
24936         (MonoGenericInst): Added `is_reference' flag.
24937
24938 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24939
24940         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24941         inside the MSDOS header. Fixes #71201.
24942
24943         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24944         gc thread.
24945         (mono_domain_finalize): Ditto.
24946
24947 2005-01-12  Martin Baulig  <martin@ximian.com>
24948
24949         * class.c (mono_get_shared_generic_class): Use the cache for
24950         non-dynamic generic classes.
24951
24952         * class-internals.h (mono_class_create_generic_2): Removed
24953         function prototype, this function is now static inside class.c.
24954
24955         * class.c (mono_class_create_generic_2): Made this static, only
24956         call it from mono_class_init() and mono_class_setup_parent().
24957         (collect_implemented_interfaces_aux): Call mono_class_init() on
24958         the interfaces we collect.
24959         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24960
24961 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24962
24963         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24964         it a real thread handle.
24965
24966         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24967         MonoJitExceptionInfo, since each catch clause needs its own variable.
24968         
24969 2005-01-11  Dick Porter  <dick@ximian.com>
24970
24971         * image.c (mono_pe_file_open): New variant on mono_image_open()
24972         that does not set up the CLI metadata; used for FileVersionInfo so
24973         it can get the data for windows binaries too.
24974         
24975         * process.c (process_read_string_block): Don't read off the end of
24976         the StringTable block.
24977
24978         These both fix bug 70766.
24979
24980 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24981
24982         * gc.c: set some fields to NULL at GC cleanup time.
24983         * threads.c: if we quit the main thread, call exit ().
24984
24985 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24986
24987         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24988
24989 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24990
24991         * threads.h, threads.c, object.c: added accessor and settor for
24992         main_thread. Handle it specially when exiting from it: wait
24993         for other foreground threads to exit.
24994
24995 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24996
24997         * process.c, verify.c: remove some bloat.
24998
24999 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
25000
25001         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
25002         the calling convention to cdecl under win32.
25003
25004 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
25005
25006         * object.c (mono_object_get_size): New function to get the size of
25007         an object instance.
25008
25009         * profiler.c (simple_allocation): Use above.
25010
25011 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
25012
25013         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
25014         ves_icall_System_AppDomain_getRootDomain (as it's not required to
25015         get an appdomain by it's id and we can't assume the root's id is 0).
25016         * domain-internals.h: Change the function prototype to match.
25017         * icall.c: Change the icall table for AppDomain.
25018
25019 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
25020
25021         * locales.c (string_invariant_compare_char): Only compute
25022         GUnicodeTypes in the case where we need them.  Test for ordinality
25023         first and return if so.
25024
25025         From the commit:
25026
25027                 /*
25028                  * FIXME: here we must use the information from c1type and c2type
25029                  * to find out the proper collation, even on the InvariantCulture, the
25030                  * sorting is not done by computing the unicode values, but their
25031                  * actual sort order.
25032                  */
25033
25034 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
25035
25036         * loader.c: for P/Invoke methods, allow the "Internal" shared
25037         library name to refer to the calling process symbol namespace.
25038
25039 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
25040
25041         * Makefile.am: Add the security manager to the build.
25042         * security-manager.c|h: New. Initialization of the security manager.
25043
25044 2005-01-07  Dick Porter  <dick@ximian.com>
25045
25046         * threads.c: 
25047         * monitor.c: Update thread state during Monitor and WaitHandle
25048         waits.  Fixes bug 71031.
25049
25050 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
25051
25052         * reflection.c (property_encode_signature): Correctly handle when the
25053         property has no methods.
25054
25055 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
25056
25057         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
25058         
25059         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
25060         fields from mb, not rmb. Fixes #71017.
25061
25062         * marshal.c (emit_ptr_to_str_conv): Add support for 
25063         ByValTStr -> string conversion. Fixes #71015.
25064
25065         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
25066
25067         * mempool.c (mono_mempool_contains_addr): New helper function.
25068
25069 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25070
25071         * metadata.c (mono_metadata_compute_size): Fix size calculation of
25072         HasSematics encoded fields.
25073         
25074         * metadata.c (mono_type_to_unmanaged): Improve error message for 
25075         invalid string marshalling.
25076
25077         * metadata.c: Fix warnings.
25078         
25079 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
25080
25081         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
25082         profiler support.
25083
25084 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25085
25086         * domain.c object.c domain-internals.h: Revert part of r38077 since the
25087         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
25088         tests.
25089
25090 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
25091
25092         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
25093         so methods containing these can be AOTed.
25094
25095 2005-01-03  Martin Baulig  <martin@ximian.com>
25096
25097         * loader.c (find_method): Removed the hack for generic instances.
25098         (method_from_memberref): If our parent is a generic instance, pass
25099         its generic type definition to find_method() and then inflate the
25100         method.
25101         (mono_get_method_constrained): Pass the generic type definition to
25102         find_method() and inflate the method later.
25103
25104         * class-internals.h (MonoStats): Added `generic_class_count'.
25105
25106         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
25107         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
25108
25109         * reflection.c (mono_custom_attrs_from_params): Don't ignore
25110         generic type definitions.
25111
25112 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
25113
25114         * loader.c icall.c: Fix warnings.
25115
25116 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
25117
25118         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
25119         blittable types. Fixes #70864.
25120
25121 2004-12-29  Martin Baulig  <martin@ximian.com>
25122
25123         * icall.c
25124         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
25125
25126         * reflection.c (mono_method_get_object): Create a
25127         "System.Reflection.MonoGenericMethod" for inflated methods; don't
25128         call mono_get_inflated_method().
25129
25130         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
25131
25132 2004-12-27  Martin Baulig  <martin@ximian.com>
25133
25134         * class-internals.h (MonoMethod): Added `is_inflated' flag.
25135         (MonoMethodInflated): Added `inflated' field.
25136
25137         * class.c (mono_class_inflate_generic_method): Don't really
25138         inflate the method here; just set the `is_inflated' flag in the
25139         MonoMethod.
25140         (mono_class_get_inflated_method): Actually inflate the method here
25141         if it's not already inflated; we use the MonoMethodInflated's new
25142         `inflated' field as a cache.
25143
25144 2004-12-26  Martin Baulig  <martin@ximian.com>
25145
25146         * class.c
25147         (inflate_generic_class): Moved some code out of inflate_generic_type().
25148         (mono_class_inflate_generic_method): If we're already inflated,
25149         inflate the context and use the declaring method; ie. make sure
25150         the declaring method of an inflated method is always the generic
25151         method definition.
25152         (mono_class_create_from_typedef): Create
25153         `class->generic_container->context->gclass'.
25154
25155 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
25156
25157         * metadata-internals.h, marshal.c, reflection.c: More
25158         MonoGHashTable->GHashTable.
25159
25160         * domain-internals.h, class.c: Change MonoGHashTable's into
25161         GHashTables for some cases where no gc stuff is used
25162
25163         All users: update apis
25164
25165 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
25166
25167         * metadata.c (builtin_types): Make this `const'. Makes this get
25168         put into the shareable section.
25169         (mono_metadata_init): Casts to make gcc happy.
25170
25171 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
25172
25173         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
25174
25175 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
25176
25177         * icall.c: Added an internal call to retrieve the position and length
25178         of assembly-level declarative security attributes (RequestMinimum, 
25179         RequestOptional and RequestRefuse). This is used by the Assembly class
25180         to re-create the corresponding permission sets.
25181
25182 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
25183
25184         * marshal.c: fix the stelemref wrapper to be type correct
25185         (and faster).
25186
25187 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
25188
25189         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
25190         to do key & 0x7fffffff. Hashtable already does this. It just
25191         results in longer code.
25192
25193 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
25194
25195         * appdomain.c: Bump corlib version.
25196         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
25197         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
25198         * reflection.c|h: Add functions to get declarative security infos
25199         (blob position and length) for assemblies, classes and methods.
25200
25201 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
25202
25203         * reflection.c: sort the constant table (bug #70693).
25204
25205 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
25206
25207         * object-internals.h, threads.c, domain.c: add accessors for
25208         the MonoThread and MonoDomain tls keys.
25209
25210 2004-12-18  Martin Baulig  <martin@ximian.com>
25211
25212         * class.c (inflate_generic_type): If we're inflating a generic
25213         instance, set `ngclass->context->container = context->container';
25214         ie. the container we inflated into.
25215
25216         * metadata.c (mono_metadata_parse_generic_param): Reflect above
25217         inflate_generic_type() changes.
25218
25219 2004-12-17  Martin Baulig  <martin@ximian.com>
25220
25221         * class-internals.h
25222         (MonoGenericClass): Replaced `MonoType *generic_type' with
25223         `MonoClass *generic_class'.  Removed `dynamic_info'; if
25224         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
25225         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
25226
25227 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25228
25229         * exception.c (mono_exception_from_token): New helper function.
25230
25231 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25232
25233         * assembly.c (mono_assembly_load_with_partial_name): Call 
25234         mono_assembly_loaded before invoking the preload hooks. Fixes
25235         #70564.
25236
25237         * object-internals.h (MonoThread): Change culture_info and 
25238         ui_culture_info into an array.
25239
25240         * threads.c: Cache culture info objects from more than one appdomain.
25241
25242         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25243         current UI culture.
25244
25245 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25246
25247         * threads.h threads.c appdomain.c: Clear the culture_info field of
25248         all threads during unloading if they point to an object in the dying
25249         appdomain.
25250
25251 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25252
25253         * culture-info.h (TextInfoEntry): New struct
25254         * object-internals.h: sync with managed
25255         * locales.c: fill the `text_info_data' field
25256         * culture-info-tables.h: update
25257
25258 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25259
25260         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25261         collector.
25262
25263 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25264
25265         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25266         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25267
25268 2004-12-12  Martin Baulig  <martin@ximian.com>
25269
25270         * mono-debug-debugger.c (write_type): If we're an enum and the
25271         builtin types have already been initialized, call mono_class_init().
25272
25273 2004-12-11  Martin Baulig  <martin@ximian.com>
25274
25275         * metadata.c (mono_metadata_load_generic_params): Added
25276         `MonoGenericContainer *parent_container' argument; automatically
25277         compute `container->is_method'; pass the correct owner to
25278         get_constraints().      
25279
25280         * reflection.c (compare_genericparam): Sort the GenericParam table
25281         according to increasing owners. 
25282
25283 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25284
25285         * profiler.c: allow disabling the default profiler.
25286
25287 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25288
25289         * decimal.c, icall.c: allow disabling System.Decimal support.
25290
25291 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25292
25293         * reflection.c: Add support for null attribute arguments.
25294
25295 2004-12-09  Martin Baulig  <martin@ximian.com>
25296
25297         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25298         names to get rid of compiler warnings.
25299
25300 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25301
25302         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25303         mono_marshal_load_type_info (). Fixes #69625.
25304         (mono_marshal_get_ptr_to_struct): Likewise.
25305
25306 2004-12-08  Martin Baulig  <martin@ximian.com>
25307
25308         * mono-debug.h: Bumped version number to 47.
25309
25310         * mono-debug-debugger.c
25311         (mono_debugger_event_handler, mono_debugger_event): Take two
25312         guint64 arguments insteed of a gpointer and a guint32.  
25313
25314 2004-12-08  Martin Baulig  <martin@ximian.com>
25315
25316         * debug-mono-symfile.h
25317         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25318         `address' to `native_offset'.
25319
25320 2004-12-08  Martin Baulig  <martin@ximian.com>
25321
25322         * class.c (mono_class_create_from_typespec): Only inflate if we
25323         either have `context->gclass' or `context->gmethod'.
25324
25325 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25326
25327         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25328
25329         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25330
25331         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25332
25333         * reflection.c (mono_assembly_get_object): Remove the workaround put
25334         in for the release.
25335         
25336         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25337
25338         * appdomain.c: Bump corlib version.
25339
25340         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25341         be visible in other appdomains.
25342
25343 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25344
25345         * threads.c: Interlocked inc and dec for longs were messed up,
25346         use a KISS based impl for this. Fixes 70234
25347
25348 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25349
25350         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25351
25352 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25353
25354         * icall.c: fix to follow policy not to allow struct
25355         arguments in icalls.
25356
25357 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25358
25359         * process.c: make the patch that handles spaces in file paths work
25360         on mono/windows too.
25361
25362 2004-12-06  Martin Baulig  <martin@ximian.com>
25363
25364         * class.c (mono_class_create_generic): Call
25365         mono_class_setup_supertypes() if we're dynamic.
25366         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25367
25368 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25369
25370         * object-internals.h: Add new fields to MonoThread.
25371
25372         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25373
25374         * icall.c threads-types.h threads.c: Add new icalls.
25375
25376         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25377
25378         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25379         managed side.
25380
25381         * appdomain.c: Bump corlib version.
25382
25383         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25384         internal assemblies. Fixes #69181.
25385
25386 2004-12-05  Martin Baulig  <martin@ximian.com>
25387
25388         * class.c (mono_class_inflate_generic_signature): Make this a
25389         no-op if `context' is NULL or we don't have any type parameters;
25390         also copy `sentinelpos'.        
25391
25392 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25393
25394         * image.c: Add unbox_wrapper_cache.
25395
25396         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25397
25398         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25399         function generator.
25400         
25401         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25402         Fixes #70173.
25403
25404         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25405         
25406 2004-12-04  Martin Baulig  <martin@ximian.com>
25407
25408         * loader.c (mono_method_get_signature_full): New public function;
25409         like mono_method_get_signature(), but with an additional
25410         `MonoGenericContext *' argument.
25411
25412         * class.c (mono_class_inflate_generic_signature): Formerly known
25413         as inflate_generic_signature(); make this public.
25414
25415 2004-12-04  Martin Baulig  <martin@ximian.com>
25416
25417         * metadata.c
25418         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25419         instead of a `MonoGenericContainer *'.  
25420         (mono_metadata_parse_array_full): Likewise.
25421         (mono_metadata_parse_signature_full): Likewise.
25422         (mono_metadata_parse_method_signature_full): Likewise.
25423         (mono_metadata_parse_generic_inst): Likewise.
25424         (mono_metadata_parse_generic_param): Likewise.
25425         (mono_metadata_parse_mh_full): Likewise.
25426         (mono_type_create_from_typespec_full): Likewise.
25427
25428 2004-12-03  Martin Baulig  <martin@ximian.com>
25429
25430         * class-internals.h (MonoGenericContainer): Replaced the
25431         `MonoGenericContext * pointer with a `MonoGenericContext'
25432         structure and made it the first element.
25433
25434 2004-12-03  Martin Baulig  <martin@ximian.com>
25435
25436         * class.c
25437         (inflate_generic_type): Set the `context->container' when creating
25438         a new MonoGenericContext.
25439         (mono_class_inflate_generic_method): Likewise.
25440         (mono_class_create_from_typespec): Just use `context->container'
25441         to get the container.
25442
25443         * loader.c (method_from_methodspec): Set `context->parent' from
25444         `context->container' - and if that's a method container, use its
25445         parent.  Also set the `context->container' when creating a new
25446         MonoGenericContext.
25447         (mono_get_method_from_token): Use just `context->container' to get
25448         the container.
25449
25450         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25451         `gclass->context->container'.
25452
25453         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25454         the `context->container' when creating a new MonoGenericContext.
25455
25456 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25457
25458         * reflection.c (compare_genericparam): Sort params with identical
25459         owner by their number. Fixes gen-111 on sparc.
25460
25461 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25462
25463         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25464         around the domain changes.
25465
25466         * appdomain.c (mono_domain_unload): Handle the case when the thread
25467         calling Unload is itself being aborted during unloading. Fixes #70022.
25468
25469         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25470
25471         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25472         checkpoint_func as an icall so it gets a wrapper.
25473         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25474         in the cross-appdomain wrappers too.
25475
25476         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25477
25478         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25479
25480         * reflection.c: Fix some memory leaks.
25481         
25482 2004-12-02  Martin Baulig  <martin@ximian.com>
25483
25484         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25485
25486         * metadata.c (generic_class_cache): New static hashtable.
25487         (mono_metadata_lookup_generic_class): New public method.
25488
25489 2004-12-02  Martin Baulig  <martin@ximian.com>
25490
25491         * class.c (mono_class_create_from_typedef): Call
25492         mono_class_setup_parent() and mono_class_create_mono_type() before
25493         parsing the interfaces.
25494
25495 2004-12-02  Martin Baulig  <martin@ximian.com>
25496
25497         * metadata.c (generic_inst_cache): New static hashtable.
25498         (mono_metadata_lookup_generic_inst): New public function.
25499         (mono_metadata_inflate_generic_inst): New public function.
25500         (mono_metadata_parse_generic_inst): New public function.
25501         (do_mono_metadata_parse_generic_class): Use the new
25502         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25503         since this'll also use the cache.
25504
25505         * reflection.c (mono_reflection_bind_generic_method_parameters):
25506         Use mono_metadata_lookup_generic_inst() to use the new cache.
25507
25508         * class.c (inflate_mono_type): Use
25509         mono_metadata_inflate_generic_inst() to inflate a generic
25510         instance; this'll also use the new cache.
25511
25512         * loader.c (method_from_methodspec): Use
25513         mono_metadata_parse_generic_inst() and
25514         mono_metadata_inflate_generic_inst() rather than parsing it
25515         manually, so we can use the new cache.
25516
25517 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25518
25519         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25520         the wait times out.
25521
25522 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25523
25524         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25525         iter->args based on whether parameters are passed in registers (i.e.
25526         MONO_ARCH_REGPARMS is defined)
25527
25528 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25529
25530         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25531         the exception message. Fixes #70070.
25532         (method_from_methodspec): Fix warnings.
25533
25534 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25535
25536         * process.c: (complete_path) return the path quoted
25537
25538 2004-12-01  Martin Baulig  <martin@ximian.com>
25539
25540         * class-internals.h (MonoGenericInst): New structure.
25541         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25542         `is_open' with `MonoGenericInst *inst'.
25543         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25544         `is_open' with `MonoGenericInst *inst'.
25545
25546 2004-11-30  Martin Baulig  <martin@ximian.com>
25547
25548         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25549
25550         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25551         to `generic_class_cache'.
25552
25553         * metadata.c
25554         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25555         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25556         (mono_generic_inst_is_valuetype): Renamed to
25557         mono_generic_class_is_valuetype().
25558
25559         * class-internals.h
25560         (MonoGenericInst): Renamed to MonoGenericClass.
25561         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25562         (MonoClass): Renamed `generic_inst' to `generic_class'.
25563         (MonoGenericContext): Renamed `ginst' to `gclass'.
25564
25565         * object-internals.h
25566         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25567
25568         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25569         mono_reflection_generic_class_initialize().
25570
25571         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25572         now known as "System.Reflection.MonoGenericClass".
25573         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25574
25575 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25576
25577         * class-internals.h: Added a flag field to MonoClass to cache the
25578         declarative security attributes actions associated with the class.
25579         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25580         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25581         applicable to the JITted method.
25582         * reflection.c|h: Added functions to extract (as flags) which security
25583         actions are available (declaratively) for a method, class or assembly.
25584         * metadata.c|h: Added functions to search the declarative security
25585         table in the metadata.
25586         
25587 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25588
25589         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25590         EXPORTEDTYPES are already in the class name cache, so there is no
25591         need to add extra code here to look at them. Just removes a bit of
25592         cruft.
25593
25594         (ves_icall_System_Environment_get_TickCount): No need for #if
25595         WINDOWS. We already have the code in io-layer.
25596
25597 2004-11-28  Martin Baulig  <martin@ximian.com>
25598
25599         * loader.c
25600         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25601         Fixes gen-112.cs.
25602
25603 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25604
25605         * assembly.c (do_mono_assembly_open): Instead of having a
25606         conditional WITH_BUNDLE, incorporate support for bundles here, by
25607         having a global `bundles' variable holding a pointer to the actual
25608         bundles. 
25609
25610         (mono_register_bundled_assemblies): New API call used by the
25611         bundle code. 
25612
25613         See mkbundle.1 for details.
25614         
25615 2004-11-27  Martin Baulig  <martin@ximian.com>
25616
25617         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25618         the vtable for generic methods.
25619
25620 2004-11-26  Martin Baulig  <martin@ximian.com>
25621
25622         * metadata.c
25623         (mono_metadata_generic_method_hash): New public function.
25624         (mono_metadata_generic_method_equal): Likewise.
25625
25626         * class-internals.h
25627         (MonoGenericContainer): Added `GHashTable *method_hash'.
25628
25629         * reflection.c (ReflectionMethodBuilder): Added
25630         `MonoGenericContainer *generic_container'.
25631         (reflection_methodbuilder_to_mono_method): Don't create a new
25632         MonoGenericContainer each time we're called.
25633         (mono_reflection_bind_generic_method_parameters): Use
25634         `container->method_hash' to cache the results so we don't create a
25635         different method if we're called several times with the same
25636         arguments.
25637
25638         * loader.c (method_from_methodspec): Use the new
25639         `container->method_hash' here, too.
25640
25641 2004-11-26  Martin Baulig  <martin@ximian.com>
25642
25643         * class.c (inflate_generic_signature): Correctly compute
25644         `res->has_type_parameters'.
25645         (mono_class_vtable): Use the `has_type_parameters' flag to
25646         determine whether we're a generic method.
25647
25648         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25649
25650 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25651
25652         * object.c (mono_runtime_run_main): Fix a small memory leak.
25653
25654 2004-11-25  Martin Baulig  <martin@ximian.com>
25655
25656         * class.c (set_generic_param_owner): Fixed the loop.
25657
25658 2004-11-25  Martin Baulig  <martin@ximian.com>
25659
25660         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25661         generic methods.
25662
25663 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25664
25665         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25666         names. Fixes #69787.
25667
25668 2004-11-24  Martin Baulig  <martin@ximian.com>
25669
25670         * class.c (mono_class_create_generic_2): If we don't have a
25671         `ginst->parent', inflate `gklass->parent' to get our parent.
25672
25673 2004-11-24  Martin Baulig  <martin@ximian.com>
25674
25675         * reflection.c (compare_genericparam): Correctly sort the
25676         GenericParam table; fixes #69779.
25677
25678 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25679
25680         * reflection.c: When writing a PE file, don't create a huge
25681         buffer in memory. Just write the arrays we have to the file.
25682         This reduces memory usage.
25683
25684         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25685         globally.
25686
25687 2004-11-17  Martin Baulig  <martin@ximian.com>
25688
25689         * class.c (mono_class_init): Don't setup `class->parent' for
25690         dynamic instances; moved this to mono_class_generic_2().
25691         (mono_class_create_generic): Also set `klass->inited' for dynamic
25692         generic instances.
25693         (mono_class_create_generic_2): Don't do anything for dynamic
25694         generic instances.  Set `klass->parent' here and also call
25695         mono_class_setup_parent() here. 
25696
25697         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25698         `MonoType *parent' argument; set `ginst->parent' before calling
25699         mono_class_create_generic_2(), so we set the correct parent.
25700
25701 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25702
25703         * reflection.c: allow getting attributes from ModuleBuilder
25704         (used by ikvm).
25705
25706 2004-11-17  Martin Baulig  <martin@ximian.com>
25707
25708         * class.c (mono_class_create_from_typedef): If a type parameter is
25709         inherited from an outer class, set its owner to that class.
25710
25711 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25712
25713         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25714           for (int*) written size. This fixes bug #69592.
25715
25716 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25717
25718         * icall.c: Added IsAuthenticodePresnet internal call.
25719         * image.c|h: New function that check a MonoImage for an Authenticode
25720         signature in the certificate PE data directory.
25721         * security.c|h: New internal call to ask the runtime if an 
25722         Authenticode signature seems referenced in the PE header.
25723
25724 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25725
25726         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25727
25728         * reflection.c (mono_image_create_pefile): Free the assembly streams
25729         after writing out the assembly file.
25730
25731         * object.c (mono_runtime_run_main): Fix small memory leak.
25732
25733         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25734         property access modifiers. Fixes #69389.
25735
25736 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25737
25738         * domain.c, object.c, object-internals.h, domain-internals.h,
25739         object.h, marshal.c: keep dynamic code info per domain.
25740
25741 2004-11-15  Martin Baulig  <martin@ximian.com>
25742
25743         * class.c (mono_type_get_name_recurse): Put type arguments in
25744         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25745         see bug #68387.
25746
25747 2004-11-15  Martin Baulig  <martin@ximian.com>
25748
25749         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25750         (mono_class_setup_vtable): When computing `the_cname' for a
25751         generic instance, don't include the namespace since we'd otherwise
25752         add it twice.
25753
25754 2004-11-15  Martin Baulig  <martin@ximian.com>
25755
25756         * class.c (mono_class_create_generic): Changed return type to void.
25757         (mono_class_create_generic_2): New public function; setup
25758         `class->method', `class->field' and `class->interfaces' here
25759         instead of in mono_class_init().
25760
25761         * class.h (mono_class_create_generic): Moved to class-internals.h.
25762
25763 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25764
25765         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25766         rather than writing to memory, write to this file. Right now,
25767         we are just writting into a buffer, and copying that. However
25768         we can avoid the buffer later.
25769
25770         (mono_dynamic_stream_reset): new function
25771
25772         * icall.c, object-internals.h: update for the above.
25773
25774 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25775
25776         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25777         have been using gc'd memory. First it is slower, unlikely
25778         the comment in the source code said, secondly, it increases
25779         our footprint to do it in the gc.
25780
25781         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25782         the method so that it does not have to copy to managed code.
25783
25784 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25785
25786         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25787
25788 2004-11-12  Martin Baulig  <martin@localhost>
25789
25790         * reflection.c (mono_image_create_token): Allow generic method
25791         definitions here, since they may appear in an `.override'; see
25792         gen-98/gen-99 for an example.
25793
25794 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25795
25796         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25797         #69365.
25798
25799         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25800         descriptive.
25801
25802 2004-11-11  Martin Baulig  <martin@ximian.com>
25803
25804         * class.c (mono_class_setup_vtable): In an explicit interface
25805         implementation, the method name now includes the arity.
25806
25807 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25808
25809         * object.c (mono_array_full_copy): Fix warning.
25810
25811 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25812
25813         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25814         mono_class_get_method_from_name() instead.
25815         
25816         * class-internals.h: Added two new types of wrappers. 
25817         Added MonoRemotingTarget enum. Added new trampoline function type, which
25818         takes an additional MonoRemotingTarget value as parameter, so it is
25819         possible to request a trampoline for a specific target.
25820         
25821         * class.c: Added new mono_class_get_method_from_name() method.
25822         
25823         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25824         general remoting sinks and one specific for cross domain calls.
25825         
25826         * debug-helpers.c: Added new wrapper names.
25827         
25828         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25829         of a remote class.
25830         
25831         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25832         
25833         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25834         with several other methods (mono_marshal_get_xappdomain_dispatch,
25835         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25836         and others) can generate a fast remoting wrapper for cross domain calls.
25837         More information can be found in docs/remoting.
25838         Other changes: Removed mono_find_method_by_name, and used
25839         mono_class_get_method_from_name instead.
25840         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25841         is stored in the remoting invoke hashtable.
25842         
25843         * marshal.h: published the new method for getting the xdomain wrapper,
25844         and also added a method for getting the adequate wrapper for a given
25845         method and target.
25846         
25847         * object-internals.h, object.c: Added a couple of methods for capying and
25848         cloning arrays.
25849         Modified mono_install_remoting_trampoline, which takes the new remoting
25850         trampoline that has a remoting target as parameter.
25851         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25852         will return the most suitable vtable for the target.
25853         Added mono_remote_class_vtable, which returns the vtable of a remote class
25854         (which can be the normal remoting vtable or the xdomain vtable).
25855         
25856         * threads.c: the xdomain invoke and dispatch wrappers must also be
25857         protected against interruptions.
25858
25859 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25860
25861         * icall.c: use memmove in BlockCopyInternal when the source and
25862         destination arrays are the same.
25863
25864 2004-11-09  Martin Baulig  <martin@ximian.com>
25865
25866         * class-internals.h (MonoGenericContainer): Removed `method' and
25867         `signature', replaced them with `is_method' and `is_signature'
25868         flags.  Added `context'.
25869
25870         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25871         instead of a `MonoGenericContainer *'.
25872
25873         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25874         for dynamic type parameters.
25875         (mono_metadata_load_generic_params): Setup `container->context'.
25876
25877         * reflection.c (mono_reflection_setup_generic_class): Setup
25878         `tb->generic_container->context'.
25879         (do_mono_reflection_bind_generic_parameters): Use
25880         mono_class_inflate_generic_type() to correctly inflate types,
25881         rather than using our own hack just for MONO_TYPE_VAR.
25882
25883 2004-11-09  Martin Baulig  <martin@ximian.com>
25884
25885         * class.c (mono_class_inflate_generic_method): Small fix; don't
25886         crash here.
25887
25888         * icall.c
25889         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25890         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25891         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25892         (ves_icall_Type_BindGenericParameters): Likewise.
25893         (ves_icall_Type_get_IsGenericInstance): Likewise.
25894         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25895         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25896         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25897         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25898
25899 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25900
25901         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25902         assembly versions and public key tokens. Fixes #69113.
25903
25904 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25905
25906         * metadata.c: fix bug introduced with the type cache changes
25907         on 2004-11-06.
25908
25909 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25910
25911         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25912         the MonoClass pointer instead of the token in exception clauses.
25913         * reflection.c: updates for the above and make the code not depend
25914         on the structure of MonoExceptionClause.
25915
25916 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25917
25918         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25919         Add support for dynamic assemblies. Fixes #69114.
25920
25921         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25922
25923 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25924
25925         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25926         since most only those methods use it. the code member of
25927         MonoMethodPInvoke was dead, so that can be removed too. Also,
25928         remove inline_count (again, not used), and move slot so that it
25929         can share bits with some other flags. This saves 8 bytes in the
25930         structure and gives us about 50 kb back for mcs helloworld.cs
25931
25932         * *.[ch]: Do naming changes for the above.
25933
25934         * loader.c (mono_method_get_header): Lazily init the header
25935         on first access.
25936         (mono_get_method_from_token): don't init the header here
25937         (mono_free_method): the header may never be allocated
25938
25939         Overall, this saves 150 kb of unmanaged allocations
25940         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25941         memory at runtime.
25942         
25943         * loader.c, loader.h (mono_method_get_header): new accessor.
25944
25945         * *.[ch]: use the above method. Prepares us to lazily load
25946         the header.
25947
25948         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25949         three warnings, which are actual bugs (see 69206).
25950
25951         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25952         unused. Saves a cool 4 bytes / method.
25953
25954 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25955
25956         * metadata.c (builtin_types): Add types for System.Object here.
25957         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25958         for a class or valuetype from klass->this_arg or klass->byval_arg.
25959
25960         On mcs for a hello world, this gets us down from 21836 MonoType's
25961         to 14560.
25962
25963         (mono_metadata_free_type): Account for the above change.
25964
25965 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25966
25967         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25968         exception instead of asserting if name is null.
25969         (ves_icall_System_AppDomain_GetData): Ditto.
25970
25971 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25972
25973         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25974         EnumBuilder.
25975
25976         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25977         Return NULL when the domain does not have entry_assembly set.
25978
25979         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25980         Add a 'resource_modules' argument.
25981         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25982
25983         * reflection.c (mono_reflection_create_runtime_class): Move setting
25984         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25985         for enums too.
25986
25987         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25988         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25989         Throw an ArgumentNullException if 'ptr' is null.
25990
25991         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25992         assemblies here. Fixes #69020.
25993
25994 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25995
25996         * reflection.c (build_compressed_metadata): Fix the previous patch for
25997         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25998         the stack.
25999
26000 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
26001
26002         * assembly.c (mono_assembly_names_equal): Allow a match if one of
26003         the cultures is false. Fixes #69090.
26004
26005         * reflection.c (build_compressed_metadata): Fix invalid memory read 
26006         detected by valgrind.
26007         
26008         * reflection.c (mono_reflection_get_type): Avoid triggering a 
26009         TypeResolve multiple times for the same type. Fixes #65577.
26010
26011 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
26012
26013         * marshal.c: Avoid using ldftn to call managed functions. It is
26014         much slower than just a call.
26015
26016         * reflection.c (mono_module_get_object): free the basename we
26017         allocate here from glib.
26018         
26019         * reflection.c (ensure_runtime_vtable): make sure to free
26020         overrides.  Also, we were allocating an array of MonoMethod not an
26021         array of MonoMethod*.
26022
26023         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
26024
26025         * image.c (mono_image_close): free image->guid here.
26026
26027 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
26028
26029         * reflection.c: Fix some spec conformance issues with the PE file
26030         structures so mcs compiled apps run on the Net 2.0 beta.
26031
26032 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
26033
26034         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
26035         Implement this. Fixes #67264.
26036
26037         * debug-helpers.h debug-helpers.c marshal.c: Move 
26038         mono_find_method_by_name to debug-helpers.c.
26039
26040 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
26041
26042         * object.c (mono_release_type_locks): type_initialization_hash is
26043         a GHashTable.
26044
26045         * reflection.c object.c object-internals.h: Fix warnings.
26046
26047         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
26048         without accessors. Fixes #61561.
26049
26050         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
26051         application base from the root domain if not set. Fixes #65641.
26052         (mono_runtime_init): Fix warning.
26053
26054 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26055
26056         * appdomain.c: call mono_thread_pool_init.
26057         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
26058         of worker threads based on the number of CPUs and the environment
26059         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
26060         for non-windows (windows) systems.
26061
26062 2004-10-27  Chris Toshok  <toshok@ximian.com>
26063
26064         * mono-debug-debugger.c (write_class): don't call mono_class_init
26065         here, as even with the check for (!klass->init_pending), we get
26066         into a situation where we're hitting cycles in class
26067         initialization.  Fixes #68816.
26068
26069 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
26070
26071         * image.c: Avoid overwriting values in the loaded_images_hash when an
26072         assembly is loaded multiple times. Fixes #61152.
26073
26074         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
26075         so multiple satellite assemblies for the same name can be loaded.
26076         Fixes #68259.
26077
26078         * mono_domain_assembly_preload: Actually return the loaded assembly, 
26079         not NULL.
26080
26081         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
26082         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
26083
26084         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
26085         pending finalizers are not invoked after the appdomain has been 
26086         unloaded. Fixes #67862.
26087
26088 2004-10-22  Martin Baulig  <martin@ximian.com>
26089
26090         * mono-debug-debugger.c
26091         (mono_debugger_runtime_invoke): Don't box valuetypes.
26092
26093 2004-10-22  Chris Toshok  <toshok@ximian.com>
26094
26095         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
26096         don't hide private methods.
26097
26098 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
26099
26100         * icall.c: Allows the runtime to "share" (when known) the public key
26101         token of an assembly. This avoid the need to recalculate the token 
26102         (from the public key) in managed code.
26103
26104 2004-10-21  Chris Toshok  <toshok@ximian.com>
26105
26106         * debug-helpers.c (append_class_name): argh, revert last patch.
26107         
26108 2004-10-21  Chris Toshok  <toshok@ximian.com>
26109
26110         * debug-helpers.c (append_class_name): use '+' as the delimiter,
26111         not '/', so that it matches what the debugger uses to look up
26112         methods.
26113
26114 2004-10-21  Martin Baulig  <martin@ximian.com>
26115
26116         * mono-debug-debugger.c (mono_debugger_throw_exception): New
26117         public method; this is called each time an exception is thrown and
26118         allows the debugger to use exception catch points.
26119
26120 2004-10-21  Martin Baulig  <martin@ximian.com>
26121
26122         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
26123         the stack pointer and the exception object in some struct and pass
26124         that to the debugger.
26125
26126 2004-10-21  Chris Toshok  <toshok@ximian.com>
26127
26128         * mono-debug-debugger.c (do_write_class): add instance/static
26129         event support.  We don't expose "raise" or "other" yet.
26130         (event_is_static): new method.
26131
26132 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
26133
26134         * mono-debug-debugger.c
26135         (mono_debugger_handle_exception): Remove
26136         bogus return value for fussy compilers.
26137
26138 2004-10-20  Martin Baulig  <martin@ximian.com>
26139
26140         * mono-debug-debugger.c
26141         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
26142         (mono_debugger_handled_exception): Likewise.
26143
26144 2004-10-20  Martin Baulig  <martin@ximian.com>
26145
26146         * mono-debug-debugger.h (MonoDebuggerEvent): Added
26147         MONO_DEBUGGER_EVENT_EXCEPTION.
26148
26149         * mono-debug-debugger.c (mono_debugger_handle_exception): New
26150         public function to send the debugger a notification for an
26151         exception and inform it about a catch/finally clause.
26152
26153 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
26154
26155         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
26156         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
26157         fix 2.95 build. 
26158
26159         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
26160
26161 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
26162
26163         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
26164         marshalled as [In,Out]. Fixes #58325.
26165
26166 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
26167
26168         * reflection.c (mono_method_body_get_object): Implement some fields.
26169
26170 2004-10-12  Martin Baulig  <martin@ximian.com>
26171
26172         * reflection.c (mono_reflection_bind_generic_parameters): Small
26173         fix, correctly retrieve our parent from a generic instance.
26174
26175 2004-10-12  Martin Baulig  <martin@ximian.com>
26176
26177         * metadata.c (mono_metadata_generic_param_equal): We always have
26178         an owner.
26179
26180         * class.c
26181         (mono_class_from_generic_parameter): We need to have an owner.
26182         (my_mono_class_from_generic_parameter): Likewise.
26183
26184         * reflection.c (mono_reflection_setup_generic_class): Renamed to
26185         mono_reflection_create_generic_class() and added a new
26186         mono_reflection_setup_generic_class().  
26187         (mono_reflection_initialize_generic_param): If we're a nested
26188         generic type and inherited from the containing class, set our
26189         owner to the outer class.
26190
26191 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
26192
26193         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
26194
26195         * reflection.c (mono_method_body_get_object): New function to create
26196         a MethodBody object.
26197
26198         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
26199
26200 2004-10-11  Martin Baulig  <martin@ximian.com>
26201
26202         * metadata.c (_mono_metadata_type_equal): Renamed to
26203         do_mono_metadata_type_equal() and made static.
26204
26205 2004-10-11  Martin Baulig  <martin@ximian.com>
26206
26207         * appdomain.c: Bump corlib version number to 28.
26208
26209 2004-10-10  Martin Baulig  <martin@ximian.com>
26210
26211         * class-internals.h
26212         (MonoGenericInst): Added `MonoGenericContainer *container'.
26213         (MonoGenericMethod): Likewise.
26214         (MonoGenericContext): Likewise.
26215         (MonoGenericParam): Added `MonoGenericContainer *owner'.
26216
26217         * metadata.c
26218         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
26219         (do_mono_metadata_parse_generic_inst): Likewise.
26220         (mono_metadata_parse_type_full): New public method.  This is the actual
26221         mono_metadata_parse_type() implementation - with an additional
26222         `MonoGenericContainer *' argument.
26223         (mono_metadata_parse_array_full): Likewise.
26224         (mono_metadata_parse_signature_full): Likewise.
26225         (mono_metadata_parse_method_signature_full): Likewise.
26226         (mono_metadata_parse_mh_full): Likewise.
26227         (mono_type_create_from_typespec): Likewise.
26228         (mono_metadata_interfaces_from_typedef_full): New public method;
26229         this is similar to the other _full() methods, but we take a
26230         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26231         (mono_metadata_parse_generic_param): Take an additional
26232         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26233         from that container.
26234         (mono_metadata_generic_param_equal): New static method to compare
26235         two type parameters.
26236         (_mono_metadata_type_equal): New static method; takes an
26237         additional `gboolean signature_only' argument - if true, we don't
26238         compare the owners of generic parameters.
26239         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26240         with a TRUE argument - do a signature-only comparision.
26241
26242         * loader.c: Use the new _full() methods and pass the
26243         MonoGenericContainer to them.
26244
26245         * object-internals.h (MonoReflectionTypeBuilder): Added
26246         `MonoGenericContainer *generic_container' field.
26247         (MonoReflectionMethodBuilder): Likewise.
26248
26249 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26250
26251         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26252         case initial images of dynamic assemblies.
26253
26254         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26255
26256         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26257
26258         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26259         length of event->other array.
26260         (typebuilder_setup_events): Ditto.
26261
26262         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26263         'assembly_by_name' and add an 'assemblies' list.
26264
26265         * assembly.h assembly.c: Add a new search hook for determining whenever
26266         an assembly is already loaded. Use this instead of searching in the
26267         loaded_assemblies list.
26268
26269         * domain.c appdomain.c: Implement the new search hook so loaded 
26270         assemblies are now scoped by appdomain. Fixes #67727.
26271
26272 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26273
26274         * threads.c (mono_thread_attach): Initialize synch_lock field so
26275         mono_thread_detach works again.
26276
26277         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26278         'lib' too. Fixes #63130.
26279
26280 2004-10-06  Jackson Harper  <jackson@ximian.com>
26281
26282         * culture-info-tables.h: regenerated.
26283
26284 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26285
26286         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26287         implemented by other interfaces in the result. Fixes #65764.
26288         
26289         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26290         Handle unloadable modules without crashing.
26291
26292         * image.c (load_modules): Revert the previous patch since modules must
26293         have a fixed index inside the array.
26294         
26295         * image.c (load_modules): Don't include native modules in the modules
26296         array.
26297
26298 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26299
26300         * reflection.h: Add param_defaults field.
26301
26302         * reflection.c: Add support for parameter defaults in dynamic methods.
26303         Fixes #64595.
26304
26305         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26306         an empty string when a type has no namespace. Fixes #64230.
26307
26308 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26309
26310         * tabledefs.h: Added "internal" security actions to support non-CAS
26311         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26312         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26313
26314 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26315
26316         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26317         constructor of abstract class. Fixes #61689.
26318
26319 2004-10-04  Martin Baulig  <martin@ximian.com>
26320
26321         * class-internals.h (MonoGenericContainer): New type.
26322         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26323         `MonoGenericContainer *generic_container'.
26324         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26325         `MonoGenericContainer *generic_container'.
26326
26327         * metadata.c (mono_metadata_load_generic_params): Return a
26328         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26329         removed the `num' argument.
26330
26331 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26332
26333         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26334         for dynamic images.
26335
26336         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26337         machine fields.
26338
26339         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26340
26341         * reflection.c: Save pe_kind and machine values into the generated
26342         image file.
26343
26344         * appdomain.c: Bump corlib version number.
26345
26346         * object-internals.h: Reorganize layout of LocalBuilder.
26347
26348         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26349         New helper function.
26350
26351         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26352         created MonoType for dynamic types. Fixes #66180.
26353
26354 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26355
26356         * threadpool.c: the ares hashtable needs a critical section around it.
26357         this prevents some nasty segfaults
26358
26359 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26360
26361         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26362         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26363         bug 67324).
26364         
26365 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26366
26367         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26368         
26369 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26370
26371         * image.c: Always canonicalize image file names, to avoid loading
26372         the same assembly twice when referenced using a relative path.
26373
26374 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26375
26376         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26377
26378         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26379
26380         * marshal.c: Fix warnings.
26381
26382 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26383
26384         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26385         attempting to marshal the delegate_trampoline as the method_addr.
26386         This patch has a static hashtable of marshalled delegates so that 
26387         we can map delegate_trampoline addresses back to delegates.  This
26388         allows a delegate passed to managed code to be passed back into native
26389         code.  Fixes #67039
26390
26391 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26392
26393         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26394
26395         * reflection.c (method_encode_code): Align method headers properly.
26396         Fixes #66025.
26397
26398 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26399
26400         * marshal.c: In the runtime invoke wrapper, reset the abort
26401         exception if it is cached. This avoids the automatic rethrowal of 
26402         the exception after the catch of the wrapper. Also check for pending
26403         interruptions before calling the managed method. This is done using
26404         the new method emit_thread_force_interrupt_checkpoint, since the
26405         normal checkpoint method is ignored when running the invoke wrapper.
26406         * object.c: If the abort exception is rethrown, set the abort_exc
26407         field of the thread, so it will be rethrown aftere every catch.
26408         * threadpool.c: Only run an interruption checkpoint if what has been
26409         requested is a stop of the thread (aborts will be ignored).
26410         * threads.c: By default, a thread will now never be interrumped while
26411         running the runtime invoke wrapper (this ensures that runtime_invoke
26412         will always return to the caller if an exception pointer is provided).
26413         There is a new special method mono_thread_force_interruption_checkpoint()
26414         to force an interruption checkpoint even if running a protected
26415         wrapper, which is used by the same runtime invoke wrapper to do a check
26416         at a safe point.
26417
26418 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26419
26420         * object.c, object-internals.h: Implemented mono_release_type_locks,
26421         which releases the cctor locks held by a thread.
26422         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26423         by a thread. Added mono_thread_exit() method to be used to safely stop
26424         a thread.
26425
26426 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26427
26428         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26429         Move null check before dereference.  Avoid indexing beyond the end
26430         of the 'modules' array.
26431
26432 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26433
26434         * metadata-internals.h (MonoImage): Add module_count field.
26435         * image.c (load_modules): Set image->module_count.
26436         (mono_image_load_file_for_image): Use image->module_count.
26437         * reflection.c (mono_image_load_module): Append to image->modules array 
26438         of dynamic assembly.
26439         (mono_module_get_object): Fix loop to actually increment index.
26440         Use image->module_count.
26441         * assembly.c (mono_assembly_load_references): Use image->module_count.
26442         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26443         Likewise.
26444
26445 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26446
26447         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26448         Avoid assert on generic types.
26449
26450 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26451
26452         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26453
26454         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26455
26456         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26457         function to convert a MarshalSpec structure to its managed counterpart.
26458
26459         * reflection.c: Fix warnings.
26460         
26461         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26462         field.
26463
26464         * icall.c (mono_create_icall_signature): Fix build.
26465
26466 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26467
26468         * icall.c: Add MakePointType icall.
26469
26470         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26471         warnings.
26472
26473 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26474
26475         * threadpool.c: reuse allocated slots in the queue.
26476
26477 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26478
26479         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26480
26481         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26482
26483         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26484         previous change.
26485
26486         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26487         ThrowOnUnmappableChar.
26488
26489         * icall.c (ves_icall_Type_GetPacking): New icall.
26490
26491 2004-09-24  Martin Baulig  <martin@ximian.com>
26492
26493         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26494
26495 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26496
26497         * appdomain.c:
26498         (mono_domain_set): allow setting a domain that is being unloaded.
26499         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26500         being unloaded.
26501
26502 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26503
26504         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26505         the GetCustomAttributes icall.
26506
26507 2004-09-23  Martin Baulig  <martin@ximian.com>
26508
26509         * object-internals.h (MonoReflectionGenericParam): Replaced
26510         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26511         with `guint32 attrs'.
26512
26513 2004-09-23  Martin Baulig  <martin@ximian.com>
26514
26515         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26516
26517 2004-09-23  Martin Baulig  <martin@ximian.com>
26518
26519         * object-internals.h (GenericParameterAttributes): New enum.
26520
26521 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26522
26523         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26524         
26525         * class.c (init_events): Fill out event->other field.
26526
26527         * class.c: Fix warnings.
26528
26529         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26530
26531 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26532
26533         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26534         walk which doesn't supply the IL offset.
26535
26536 2004-09-22  Martin Baulig  <martin@ximian.com>
26537
26538         * reflection.c (mono_reflection_setup_internal_class): If we're
26539         System.ValueType, System.Object or System.Enum, set
26540         `klass->instance_size' and create the vtable.
26541         (mono_reflection_create_internal_class): If we're an enum type,
26542         get the base class from our current corlib.
26543
26544 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26545
26546         * reflection.h (MonoResolveTokenError): New type.
26547
26548         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26549         icall.
26550
26551         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26552
26553 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26554
26555         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26556         Support also calling constructors, but only for already allocated objects.
26557
26558 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26559
26560         * reflection.c (type_get_qualified_name): If the klass is null
26561         return the typename to avoid a NullRefEx.
26562         (encode_cattr_value): Get the qualified name of the boxed type,
26563         not the underlying enumtype.  Fixes #62984.
26564
26565 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26566
26567         * marshal.c: Fix problems with previous checkin.
26568
26569 2004-09-21    <vargaz@freemail.hu>
26570
26571         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26572         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26573
26574         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26575
26576 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26577
26578         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26579         should only return a type for pointers, arrays, and passbyref types.
26580         Fixes bug #63841.
26581
26582 2004-09-21  Martin Baulig  <martin@ximian.com>
26583
26584         * domain.c (mono_debugger_check_runtime_version): New public
26585         function.
26586
26587         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26588
26589 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26590
26591         * reflection.c: Added missing sort to the declarative security 
26592         attributes table. MS implementation stops seeing the attributes if the
26593         token number regress in the table (as shown by ildasm and permview).
26594
26595 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26596
26597         * object-internals.h (MonoReflectionModule): Add 'token' field.
26598         
26599         * reflection.c (mono_reflection_get_token): Add support for Module
26600         and Assembly.
26601         (mono_module_get_object): Set 'token' field.
26602         (mono_module_file_get_object): Set 'token' field.
26603
26604         * icall.c: Add new Assembly and Module icalls.
26605
26606         * appdomain.c: Bump corlib version.
26607
26608 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26609
26610         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26611         tokens of metadata objects.
26612
26613         * reflection.h reflection.c (mono_reflection_get_token): New function
26614         to obtain the token of a metadata object.
26615
26616         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26617
26618 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26619
26620         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26621         
26622         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26623
26624 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26625
26626         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26627         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26628         AssemblyBuilder to access the permissions set in the class lib.
26629         * reflection.c: Added security attributes encoding step in 
26630         mono_image_build_metadata.
26631         * tabledefs.h: Added new security actions defined in 2.0:
26632         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26633
26634 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26635
26636         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26637         macro parameter.
26638
26639 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26640  
26641         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26642           finalized. There where random SIGSEVs at program termination, when
26643           an object being finalized was trying to do a string comparison and
26644           the current culture was already finalized.
26645  
26646 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26647
26648         * threads.c: call thread_cleanup before finishing the thread if we get
26649         there.
26650
26651 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26652
26653         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26654         assemblies from the parent. Fixes #65665.
26655
26656 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26657
26658         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26659         modifiers.
26660
26661 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26662
26663         * reflection.h: add prototype for mono_get_dbnull_object
26664         * reflection.c: add prototypes for get_default_param_value_blobs 
26665         and mono_get_object_from_blob for fussier compilers
26666
26667 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26668  
26669         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26670         false deadlock checks in class initialization.
26671  
26672 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26673
26674         * image.c (mono_image_addref): Fix comment.
26675
26676         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26677         possible.
26678
26679 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26680
26681         * reflection.c (mono_param_get_objects): Modified to return
26682         ParameterInfo.DefaultValue object.
26683
26684         (get_default_param_value_blobs):
26685         (mono_get_object_from_blob):
26686         (mono_get_dbnull_object): New helper routines. 
26687
26688         * object.c (mono_get_constant_value_from_blob): New helper routine
26689         carved out from get_default_field_value ()
26690
26691         * object-internals.h (mono_get_constant_value_from_blob): Added
26692         function declaration.
26693
26694 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26695
26696         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26697         referenced assemblies. Fixes #62135.
26698
26699         * exception.h exception.c (mono_get_exception_file_not_found2): New
26700         helper function.
26701
26702 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26703
26704         * class.h class.c: Add mono_type_get_underlying_type ().
26705
26706 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26707
26708         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26709         Fix GetTypes() to support dynamically created assemblies.
26710
26711 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26712
26713         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26714         
26715         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26716         previous patch.
26717
26718         * reflection.h reflection.c loader.c: Allow dynamic construction of
26719         pinvoke methods. Fixes #65571.
26720         
26721         * reflection.c (mono_reflection_get_type): Revert previous change since
26722         it causes regressions.
26723
26724 2004-09-08  Martin Baulig  <martin@ximian.com>
26725
26726         * class.c (class_compute_field_layout): Don't call
26727         mono_class_layout_fields() for open generic instances.
26728
26729 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26730         * threads.c appdomain.c: fix typo in GC macro
26731
26732 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26733
26734         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26735         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26736
26737 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26738
26739         * image.c (mono_image_close): Applied patch from 
26740         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26741         assembly is loaded multiple times from data.
26742         
26743         * image.c (mono_image_open): Fix warning.
26744
26745 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26746
26747         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26748         once. Fixes #58334.
26749         
26750         * reflection.c (mono_reflection_create_runtime_class): Initialize
26751         klass->nested_classes. Fixes #61224.
26752
26753 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26754
26755         * threads.c: sched_yield() on exit, to allow threads to quit.
26756
26757 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26758
26759         * object.c (mono_unhandled_exception): Remove leftover debug code.
26760
26761 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26762
26763         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26764
26765 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26766
26767         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26768         
26769         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26770
26771 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26772
26773         * marshal.c (emit_marshal_array): Null terminate string arrays.
26774         
26775         * marshal.c (raise_auto_layout_exception): Fix warning.
26776
26777         * reflection.c (mono_param_get_objects): Initialize the default value
26778         with DBNull.Value, not null. Fixes #62123.
26779
26780 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26781
26782         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26783         throw an exception with a cute explanation.
26784
26785 2004-09-06  Dick Porter  <dick@ximian.com>
26786
26787         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26788         Close the new process's thread handle, as we don't use it.  The
26789         handle stays around forever otherwise.
26790
26791 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26792
26793         * object.c (arith_overflow): Fix warning.
26794
26795         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26796         calling conventions in method refs. Fixes #65352.
26797
26798         * reflection.c: Fix warnings.
26799
26800 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26801
26802         * icall.c: Add a new icall for Array.Clear
26803
26804 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26805
26806         * object.c: When allocating an array, we have to throw
26807         an overflow exception if any of the lengths are < 0.
26808
26809 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26810
26811         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26812         properly. Also move implementation of string array marshalling to 
26813         managed code. Fixes #42316.
26814
26815 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26816
26817         * assembly.c: provide more information when loading an assembly fails.
26818
26819 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26820
26821         * filewatcher.c: don't expect the development fam package to be
26822         installed.
26823
26824 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26825
26826         * marshal.c: Make a copy of the signature cookie since it will be
26827         freed by the caller.
26828         
26829         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26830
26831         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26832
26833         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26834         marshal specs.
26835
26836         * marshal.c: More refactoring.
26837         
26838         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26839         smaller functions.
26840
26841 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26842
26843         * object.c: In mono_message_invoke, fill the output parameter array after
26844           calling the managed method (it was done before the call). This fixes
26845           bug #59299.
26846
26847 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26848
26849         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26850         as well.
26851
26852 2004-09-02  Martin Baulig  <martin@ximian.com>
26853
26854         * class.c (mono_class_instance_size): Don't allow generic type
26855         definitions or open generic instances.
26856         (mono_class_array_element_size): If we're a value type, call
26857         mono_class_instance_size() on the original class.
26858
26859         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26860         handle generic instances.
26861
26862         * mono-debug-debugger.c (write_type): Handle generic instances
26863         like classes.
26864
26865 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26866
26867         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26868         the allocation request fails. Fixes #65089.
26869
26870         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26871         
26872         * object.c (mono_runtime_free_method): New function to free a dynamic
26873         method.
26874
26875         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26876         delegate trampoline.
26877
26878         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26879         with hasthis as dynamic,
26880
26881         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26882
26883         * domain.c (mono_jit_info_table_remove): New function to remove an
26884         entry from the jit info table.
26885
26886         * class-internals.h (MonoMethod): Add 'dynamic' field.
26887
26888         * loader.c: Fix warnings.
26889
26890 2004-09-01  Martin Baulig  <martin@ximian.com>
26891
26892         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26893         instead of mono_debugger_lock() because the latter one is a no-op
26894         unless running in the debugger.
26895
26896 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26897
26898         * class.c (class_compute_field_layout): Classes with auto-layout or
26899         reference fields are not blittable.
26900         
26901 2004-09-01  Dick Porter  <dick@ximian.com>
26902
26903         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26904         mono_image_get_filename() to get the assembly location.
26905
26906         * icall.c:
26907         * metadata.h: Fix compile warnings
26908
26909 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26910
26911         * class.c (class_compute_field_layout): System.Object is blittable.
26912
26913         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26914         as in/out. Fixes #59909.
26915
26916 2004-09-01  Martin Baulig  <martin@ximian.com>
26917
26918         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26919         mono_metadata_generic_inst_is_valuetype() if we're a generic
26920         instance to check whether our underlying type is a reference type.
26921
26922 2004-09-01  Martin Baulig  <martin@ximian.com>
26923
26924         * metadata.c (mono_type_size): If we're a generic instance, call
26925         mono_class_value_size() for value types.
26926
26927 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26928
26929         * marshal.c: Implement more custom marshalling functionality. Fixes
26930         #64915.
26931
26932 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26933
26934         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26935
26936 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26937
26938         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26939
26940         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26941
26942         * icall.c: Fix some warnings.
26943
26944         * threads.c (abort_appdomain_thread): Fix unref errors.
26945         (mono_thread_current): Fix THREAD_DEBUG define.
26946
26947 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26948
26949         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26950
26951         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26952
26953 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26954
26955         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26956         string arrays.
26957
26958 2004-08-28  Martin Baulig  <martin@ximian.com>
26959
26960         * metadata.c
26961         (mono_metadata_generic_inst_is_valuetype): New public function.
26962
26963         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26964         mono_metadata_generic_inst_is_valuetype() if we're a generic
26965         instance to check whether our underlying type is a valuetype.
26966
26967 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26968
26969         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26970         #63768.
26971
26972 2004-08-25  Martin Baulig  <martin@ximian.com>
26973
26974         * loader.c (mono_get_method_from_token): Abstract methods can also
26975         be generic and thus have type parameters.
26976
26977         * metadata-internals.h
26978         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26979
26980         * reflection.c (mono_image_get_generic_param_info): Don't create a
26981         metadata row, just add an entry to the `gen_params' array.
26982         (build_compressed_metadata): Sort the `gen_params' array and then
26983         actually create the metadata.
26984
26985 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26986
26987         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26988
26989 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26990
26991         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26992
26993 2004-08-24  Martin Baulig  <martin@ximian.com>
26994
26995         * class.cs (mono_class_is_subclass_of): Like an interface, a
26996         generic instance also derives from System.Object.
26997
26998 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26999
27000         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
27001         custom modifiers to be in any order. Fixes #61990.
27002
27003 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
27004
27005         * object.c: Register mono_object_new_fast icall.
27006         
27007         * object.c (mono_class_get_allocation_ftn): Return to calling
27008         mono_object_new_fast, since it seems faster to compute the object 
27009         size in unmanaged code than passing it as a parameter.
27010
27011         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
27012
27013         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
27014         this function with Boehm as the oom handler, so we don't have to check
27015         the result of GC_malloc.
27016
27017         * object.c: Remove checks for oom.
27018
27019         * object.h object.c (mono_class_get_allocation_ftn): New function to
27020         return the icall which can be used to allocate an instance of a given
27021         class. 
27022
27023         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
27024
27025         * class-internals.h: Add 'enabled' field.
27026
27027 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
27028
27029         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
27030
27031 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
27032         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
27033         value 0x0010.
27034
27035 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
27036
27037         * appdomain.c: use the Tls function for appdomain too,
27038         at Zoltan's request. Actually return in mono_context_get
27039
27040         * appdomain.c, profiler.c, threads.c: use __thread
27041
27042 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
27043
27044         * appdomain.c threads.c: Call GC_CreateThread on windows.
27045
27046         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
27047         multiple libraries since this don't work on windows.
27048
27049 2004-08-18  Martin Baulig  <martin@ximian.com>
27050
27051         * class-internals.h
27052         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
27053         MonoMethodHeader.
27054
27055         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
27056         MonoMethodNormal since we also need it for abstract and interface
27057         methods.
27058
27059         * reflection.c
27060         (build_compressed_metadata): Sort the GenericParam table.
27061         (mono_image_create_token): Added `gboolean create_methodspec'
27062         argument; this is false when generating a MethodImpl token.
27063         (reflection_methodbuilder_to_mono_method): Abstract and interface
27064         methods may also have generic parameters.
27065
27066 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
27067
27068         * appdomain.c: thread local alloc
27069
27070 2004-08-17  Martin Baulig  <martin@ximian.com>
27071
27072         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
27073
27074         * icall.c
27075         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
27076         argument.
27077
27078         * class.c (mono_type_get_full_name): New public function.
27079         (mono_type_get_name): Don't include the type arguments.
27080
27081 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
27082
27083         * Makefile.am: Build static versions of libmetadata and libmonoruntime
27084         for inclusion into the mono executable.
27085
27086 2004-08-16  Martin Baulig  <martin@ximian.com>
27087
27088         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
27089         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
27090
27091 2004-08-14  Martin Baulig  <martin@ximian.com>
27092
27093         * class.c (dup_type): Also copy the `byref' field.
27094
27095 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
27096
27097         * reflection.c (create_dynamic_mono_image): Revert the last change 
27098         since it breaks bootstrap.
27099
27100 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
27101
27102         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
27103
27104         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
27105         not free them with g_free.
27106
27107 2004-08-11  Martin Baulig  <martin@ximian.com>
27108
27109         * reflection.c (mono_reflection_setup_internal_class): Also call
27110         mono_class_setup_mono_type() if we already have a `tb->type.type'.
27111
27112 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
27113
27114         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
27115         called during default (first) AppDomain creation. Keep track of
27116         Evidence when loading assemblies.
27117
27118 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27119
27120         * opcodes.c, opcodes.h: reduce runtime relocations.
27121
27122 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
27123
27124         * culture-info.h, locales.c: fixes and chages to sue the new
27125         optimized format of the locale data.
27126         * culture-info-tables.h: regenerated.
27127
27128 2004-08-06  Geoff Norton <gnorton@customerdna.com>
27129         
27130         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
27131
27132 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
27133
27134         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
27135         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
27136         * domain-internals.h: icall declaration.
27137         * icall.c: icall registration.
27138         * object-internals.h: New fields in MonoAssembly for CAS.
27139
27140 2004-08-05  Duncan Mak  <duncan@ximian.com>
27141
27142         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
27143         CEE_LDELEM_ANY.
27144
27145 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27146
27147         * reflection.c: fix to deal with object[] arrays in custom ctors
27148         (bug #62550).
27149
27150 2004-08-05  Martin Baulig  <martin@ximian.com>
27151
27152         * class.c (mono_class_array_element_size): Added support for
27153         generic instances and correctly handle "recursive" types.
27154
27155 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
27156
27157         * assembly.c: Fix warnings.
27158
27159 2004-08-04  Martin Baulig  <martin@ximian.com>
27160
27161         * class.c
27162         (mono_type_get_name_recurse): Added `gboolean include_arity'
27163         argument specifying whether or not we should include the generic
27164         arity in the type name.
27165         (_mono_type_get_name): New static function.
27166         (mono_class_setup_vtable): If we're a generic instance, don't
27167         include the generic arity in the names of explicit method
27168         implementations.        
27169
27170 2004-08-03  Martin Baulig  <martin@ximian.com>
27171
27172         * class.c (mono_type_get_name_recurse): Enclose the generic type
27173         arguments in `<', '>'.
27174
27175 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27176
27177         * gc.c: make GC warning messages use the trace API, they are just
27178         noise to most of the users.
27179
27180 2004-08-03  Martin Baulig  <martin@ximian.com>
27181
27182         * debug-mono-symfile.c (read_string): Correctly read the string.
27183
27184 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
27185
27186         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
27187         
27188         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
27189         icalls.
27190         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
27191
27192 2004-07-30  Martin Baulig  <martin@ximian.com>
27193
27194         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
27195         Reflect latest symbol writer changes.   
27196
27197 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27198
27199         * object.c: always create an object if null is passed
27200         to Invoke() where a valuetype is expected.
27201
27202 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
27203
27204         * marshal.c (mono_marshal_init): make managed
27205         signatures match native ones better for 64bits.
27206
27207 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27208
27209         * appdomain.c: hack to build correctly the private bin path on windows.
27210         Fixes bug #61991.
27211
27212 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
27213
27214         * assembly.c: Load mscorlib from the correct framework directory
27215           (mono/<version>/mscorlib.dll).
27216         * appdomain.h: Added prototypes for new functions.
27217         * internals.h: Added some prototypes.
27218         * domain.c: When initializing the runtime, get from the executable and
27219           the configuration files the runtime version that the app supports.
27220           Added support methods for reading app.exe.config. Added list of versions
27221           supported by the JIT. Added two new methods: mono_init_from_assembly,
27222           which initializes the runtime and determines the required version from
27223           the provided exe file, and mono_init_version, which initializes
27224           the runtime using the provided version.
27225         * icall.c: Get machine.config from version-specific directory.
27226         * reflection.c: When generating an image, embed the version number
27227           of the current runtime.
27228
27229 2004-07-28  Dick Porter  <dick@ximian.com>
27230
27231         * socket-io.c
27232         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27233         returned sockaddr size before creating the remote address object.
27234         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27235         61608.
27236
27237 2004-07-28  Dick Porter  <dick@ximian.com>
27238
27239         * locales.c (string_invariant_compare_char): Fix invariant char
27240         compares between upper and lower cases.  Fixes bug 61458.
27241
27242 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27243         
27244         * marshal.c: actually cache stelem.ref wrappers.
27245         
27246 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27247
27248         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27249         sections and remove the mono_cli_rva_map () function.
27250
27251 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27252
27253         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27254         by Geoff Norton (<gnorton@customerdna.com>).
27255
27256 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27257
27258         * class.c: fix class loads for pointer types (typeof(int) !=
27259         typeof(int*)).
27260
27261 2004-07-27  Martin Baulig  <martin@ximian.com>
27262
27263         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27264         reading the debugging information from an external ".mdb" file.
27265
27266 2004-07-24  Martin Baulig  <martin@ximian.com>
27267
27268         * reflection.c (mono_image_get_type_info): Only write a class
27269         layout entry if we actually have a size or a packing size.
27270
27271 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27272
27273         * reflection.c (type_get_fully_qualified_name): 
27274         insert cast to get type checking of ?: with non-gcc compilers
27275
27276 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27277
27278         * rand.c: use g_getenv for both lookups of
27279         MONO_EGD_SOCKET
27280
27281 2004-07-17  Martin Baulig  <martin@ximian.com>
27282
27283         * reflection.c (mono_reflection_bind_generic_method_parameters):
27284         Set `gmethod->reflection_info'.
27285
27286 2004-07-17  Martin Baulig  <martin@ximian.com>
27287
27288         * class.c (mono_class_create_from_typedef): Insert the newly
27289         created class into the hash table before computing the interfaces
27290         since we could be called recursively.
27291
27292 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27293
27294         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27295         function to implement stelem.ref in managed code
27296         * class-internals.h, debug-helpers.c: a new wrapper type
27297         for the above.
27298
27299 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27300
27301         * gc.c: allow GC handles to work even when no GC is compiled in.
27302         Fix part of bug #61134 (GetAddrOfPinnedObject).
27303
27304 2004-07-13  Peter Williams  <peter@newton.cx>
27305  
27306         * process.c (complete_path): Make sure we don't attempt to execute
27307         directories.
27308  
27309 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27310
27311         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27312           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27313           and will add/subtract the hour if needed
27314
27315 2004-07-12  Martin Baulig  <martin@ximian.com>
27316
27317         * reflection.c (mono_field_get_object): If we have
27318         `field->generic_info', take the attributes from
27319         `field->generic_info->generic_type'.    
27320
27321 2004-07-12  Martin Baulig  <martin@ximian.com>
27322
27323         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27324         This function must be called before initializing the runtime.
27325         (mono_debug_init_1): New function; call this after initializing
27326         the runtime, but before loading the assembly.  It tells the
27327         debugger to load corlib and the builtin types.
27328
27329         * mono-debug-debugger.c: Did some larger changes in the debugging
27330         code; support recursive class declarations, make sure we actually
27331         add all classes.
27332
27333 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27334
27335         * debug-helpers.c: undo my previous patch and fixed the real issue in
27336         ../mini/exceptions-x86.c
27337
27338 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27339
27340         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27341         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27342         called from other .cctors.
27343
27344 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27345
27346         * loader.c: Removed the mono_loader_wine_init hack now that we are
27347         doing a managed version of Windows.Forms.
27348
27349 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27350
27351         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27352         threadpool.c, threads.c: remove static data from rootset.
27353
27354 2004-07-09  Dick Porter  <dick@ximian.com>
27355
27356         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27357         Don't do any more processing if the matched length was 0.  It was
27358         increasing the size of the string before.  Fixes bug 61167.
27359
27360 2004-07-09  Dick Porter  <dick@ximian.com>
27361
27362         * socket-io.h:
27363         * socket-io.c
27364         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27365         Add support for SO_PEERCRED if its available.
27366
27367 2004-07-09  Peter Bartok <pbartok@novell.com>
27368         * loader.c: winelib.exe.so error message is now only displayed if
27369         MONO_DEBUG is set. To help us avoid questions when people are trying
27370         out the new Managed.Windows.Forms.
27371
27372 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27373
27374         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27375         for isinst and castclass wrappers.
27376
27377         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27378         to libmetadata from the JIT, so they could be used by the marshalling
27379         code and the interpreter.
27380
27381         * marshal.c: Register marshalling related JIT icalls here instead of
27382         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27383         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27384
27385         * metadata.h: Remove unneeded marshalling conversions.
27386
27387         * opcodes.c: Update for new opcodes.
27388         
27389 2004-07-08  Martin Baulig  <martin@ximian.com>
27390
27391         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27392         (mono_debug_get_domain_data): Make this function static.
27393
27394 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27395
27396         * gc.c, object.h: add nice GC handle API for embedders.
27397
27398 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27399
27400         * reflection.c: more changes for the new api
27401
27402         * object.c: When we reflect on a field w/ a constant value, it
27403         will not have a memory location, so we must access metadata. Also,
27404         allow easier reading of strings so that we can read them from
27405         the constant data.
27406
27407         * class.c (mono_class_layout_fields): no need for literal fields here.
27408
27409         * class-internals.h: api changes for const fields
27410
27411         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27412
27413 2004-07-06  Martin Baulig  <martin@ximian.com>
27414
27415         * mono-debug.h: Increment version number to 44.
27416
27417         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27418         now a gpointer, rewrote this whole method.
27419
27420         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27421         function.  Add information about the wrapper in a new "misc table".
27422
27423         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27424         for the new misc table.
27425
27426 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27427
27428         * metadata-internals.h image.c: Add a cache for helper signatures.
27429
27430         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27431
27432 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27433
27434         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27435         delegates from a delegate. Fixes #61033.
27436         
27437         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27438         marshalling of stringbuilder arrays. Fixes #59900.
27439
27440 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27441
27442         * icall.c: Add EnumBuilder:setup_enum_type icall.
27443
27444 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27445
27446         * icall.c: Added a new icall for the property version of
27447         OffsetOfStringData.
27448
27449 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27450
27451         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27452         it has a constant size across platforms.
27453
27454         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27455         stack trace.
27456
27457 2004-06-29  Martin Baulig  <martin@ximian.com>
27458
27459         * mono-debug.c (mono_debug_add_method): Protect the whole function
27460         in mono_debugger_lock(), not just parts of it.
27461
27462 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27463
27464         * reflection.c: make sure padding bytes in heaps are zeroed.
27465
27466 2004-06-24  David Waite  <mass@akuma.org>
27467
27468         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27469         image.c, loader.c, locales.c, marshal.c, metadata.c,
27470         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27471         string-icalls.c, threads.c: change to C90-style comments from C99 /
27472         C++ -style
27473
27474 2004-06-24  Dick Porter  <dick@ximian.com>
27475
27476         * threads.c
27477         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27478         return createdNew.  Fixes bug 60412.
27479
27480         * threads-types.h: 
27481         * icall.c: Add createdNew parameter to CreateMutex icall
27482
27483 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27484
27485         * reflection.c, object-internals.h: save default value in params.
27486
27487 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27488
27489         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27490         no need to build a new path combining that with the application base.
27491         Fixes bug #60442.
27492
27493 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27494
27495         * reflection.c: fixed minor standard compliance issues.
27496
27497 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27498
27499         * reflection.c: fixed issue with encoding some custom attributes
27500         (arrays in properties and fields, bug #60411).
27501
27502 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27503
27504         * reflection.c: fix start address when copying the public key token.
27505
27506 2004-06-23  Martin Baulig  <martin@ximian.com>
27507
27508         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27509         the `exc' object in a static object to put it into the GC's root set.
27510
27511 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27512
27513         * reflection.c: make mono_reflection_setup_internal_class ()
27514         callable a second time to setup a new parent class.
27515
27516 2004-06-23  Dick Porter  <dick@ximian.com>
27517
27518         * threads.c: Check for WAIT_IO_COMPLETION return values.
27519
27520 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27521
27522         * appdomain.c: Removed the g_free on the public key token. Now copy 
27523         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27524         * assembly.c: Added public key token string value when loading 
27525         assemblies. Fix bug #60439.
27526         * icall.c: Added missing informations (like public key) in 
27527         GetReferencedAssemblies. Fix #60519.
27528         * image.h: Changed definition for public key token from const char*
27529         public_tok_value to guchar public_key_token [17];
27530         * reflection.c: Updated for changes to public key token.
27531
27532 2004-06-22  Lluis Sanchez Gual
27533
27534         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27535         for the field in base classes.
27536
27537 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27538
27539         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27540         mark headers as not supported, they are installed only for use by the
27541         debugger.
27542
27543 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27544
27545         * *.c, *.h: avoid namespace pollution in public headers.
27546
27547 2004-06-21  Martin Baulig  <martin@ximian.com>
27548
27549         * exception.c (mono_get_exception_security): It's in
27550         "System.Security", not in "System".
27551
27552         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27553         the exception classes.
27554
27555 2004-06-21  Martin Baulig  <martin@ximian.com>
27556
27557         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27558         Protect the exception object from being finalized.
27559
27560 2004-06-21  Martin Baulig  <martin@ximian.com>
27561
27562         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27563         public function.
27564
27565 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27566
27567         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27568         if it was not loaded before. Fix parts of #60439.
27569
27570 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27571
27572         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27573         code that was broken since Ben's change: wrappers are now
27574         dependent on the method signature only again.
27575
27576 2004-06-21  Martin Baulig  <martin@ximian.com>
27577
27578         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27579         added interface support.
27580
27581 2004-06-21  Martin Baulig  <martin@ximian.com>
27582
27583         * class.c (mono_vtable_get_static_field_data): New public method.
27584
27585 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27586
27587         * filewatcher.c : Windows build fix to be compliant with API changes.
27588
27589 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27590
27591         * class.h, class.c: more accessors.
27592         * metadata.h, metadata.c: prepare for hiding MonoType and
27593         MonoMethodSignature: people should use the accessors from now on
27594         outside of the tree.
27595
27596 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27597
27598         * *.c, *.h: more API cleanups.
27599
27600 2004-06-18  Jackson Harper  <jackson@ximian.com>
27601
27602         * assembly.c: Trace loading assemblies.
27603         * loader.c: Trace loading native libraries.
27604         * mono-config.c: Trace loading config files.
27605         
27606 2004-06-18  Dick Porter  <dick@ximian.com>
27607
27608         * locales.c: Tell ICU the lengths of strings, it can cope with
27609         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27610
27611 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27612
27613         * image.c: swapped name/filename;
27614
27615 2004-06-18  Martin Baulig  <martin@ximian.com>
27616
27617         * mono-debug-debugger.c (write_class): Write the parent class at
27618         the end of the header.
27619
27620 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27621
27622         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27623
27624 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27625
27626         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27627         (bundle_obj): New conditional define.
27628         (BUILT_SOURCES): Remove.
27629         ($(bundle_srcs)): Make parallel-make safe.
27630         (libmonoruntime_la_LIBADD): Make unconditional.
27631         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27632         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27633
27634 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27635
27636         * culture-info-tables.h: It was inconsistent with the latest
27637           supp info files.
27638
27639 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27640
27641         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27642         be loaded.
27643
27644         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27645         with gcc 2.95.
27646
27647 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27648
27649         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27650         cleaned up public header threads.h.
27651
27652 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27653
27654         * Makefile.am, *.c, *.h: more API cleanups.
27655
27656 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27657
27658         * Makefile.am: removed monosn from compilation.
27659         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27660         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27661         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27662         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27663         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27664         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27665
27666 2004-06-15  Jackson Harper  <jackson@ximian.com>
27667
27668         * assembly.c: Make locales lower case when searching the GAC for
27669         assemblies. gacutil will always make locales lowercase when
27670         installing so this effectively makes them case insensitive.
27671         
27672 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27673
27674         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27675         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27676           parameter which allows to choose whether the wait can be interrupted or 
27677           not. Also added the method mono_monitor_enter(), which locks the monitor
27678           using an infinite wait and without allowing interruption.
27679           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27680           interrupted.
27681         * object.h: Added new fields in MonoThread. suspend_event holds the event
27682           used to susped/resume the thread. synch_lock is the lock object to use for
27683           modifying the thread state.
27684         * threads.c: Use the new synch_lock object for locking, instead of "this",
27685           which can generate deadlocks.
27686           Moved thread state change in Thread.Sleep and Thread.Join from managed
27687           to unmanaged code. This avoids a deadlock when the thread was suspended
27688           just after acquiring the thread lock.
27689           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27690           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27691           which is not fully implemented in the io-layer.
27692         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27693
27694 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27695
27696         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27697         threads-types.h: more API cleanups.
27698
27699 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27700
27701         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27702         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27703         threadpool.c, threads.c: first pass at the exported API cleanup.
27704
27705 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27706
27707         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27708
27709 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27710
27711         * icall.c: added internalGetHome.
27712
27713 2004-06-14  Dick Porter  <dick@ximian.com>
27714
27715         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27716         possible to return successfully when '.' or '..' were the only
27717         entries in a directory, but were skipped.  The MonoIOStat was not
27718         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27719         Fixes bug 59574.
27720
27721 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27722
27723         * reflection.c: make binaries run on .Net 1.1 by default.
27724
27725 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27726
27727         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27728
27729 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27730
27731         * marshal.c: keep track of struct size with explicit layout
27732         (bug #59979).
27733
27734 2004-06-12  Martin Baulig  <martin@ximian.com>
27735
27736         * mono-debug-debugger.c: Comment out a debugging g_message().
27737
27738 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27739
27740         * reflection.c, reflection.h: do not free custom attrs that are cached.
27741         * icall.c: use braces to make code clearer.
27742
27743 2004-06-11  Martin Baulig  <martin@ximian.com>
27744
27745         * class.h (MonoInflatedField): New type.
27746         (MonoClassField): Replaced `MonoType *generic_type' with
27747         `MonoInflatedField *generic_info'.
27748
27749         * icall.c
27750         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27751
27752 2004-06-11  Martin Baulig  <martin@ximian.com>
27753
27754         * reflection.c (mono_image_create_method_token): Correctly encode
27755         varargs methods.
27756
27757 2004-06-11  Martin Baulig  <martin@ximian.com>
27758
27759         * metadata.c (mono_metadata_parse_method_signature): When parsing
27760         a MethodDef which has VarArgs, also set sentinelpos if we don't
27761         have any parameters.
27762
27763 2004-06-11  Martin Baulig  <martin@ximian.com>
27764
27765         * verify.c (mono_method_verify): In CEE_CALL, use
27766         mono_method_get_signature() to get the method's signature, unless
27767         we're a PInvoke method.
27768
27769 2004-06-10  Jackson Harper  <jackson@ximian.com>
27770
27771         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27772         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27773         logical name as the supplied path is just a prefix to the gac not
27774         the direct path to it.
27775         
27776 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27777
27778         * reflection.c: make the token for a created method match
27779         the token of the MethodBuilder it was created from
27780         (IKVM requires this behaviour now).
27781
27782 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27783
27784         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27785         reflection.c, socket-io.c: leak fixes.
27786
27787 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27788
27789         * icall.c: handle sentinel pos in vararg methods in position different
27790         from 0.
27791
27792 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27793
27794         * culture-info-tables.h: freshly generated.
27795
27796 2004-06-09  Martin Baulig  <martin@ximian.com>
27797
27798         * loader.c (mono_get_method_constrained): Call `mono_class_init
27799         (constrained_class)'.   
27800
27801 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27802
27803         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27804         any methods. Fixes #59629.
27805
27806 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27807
27808         * culture-info-tables.h: reflecting locale-builder updates.
27809
27810 2004-06-08  Dick Porter  <dick@ximian.com>
27811
27812         * object.h:
27813         * locales.c: Fixed compile warnings, including a real bug in
27814         CompareInfo_internal_compare.
27815         
27816 2004-06-08  Dick Porter  <dick@ximian.com>
27817
27818         * locales.c
27819         (ves_icall_System_Globalization_CompareInfo_internal_index):
27820         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27821         Double-check the resuls of usearches, because ICU currently
27822         ignores most of the collator settings here.  Fixes bug 59720.
27823         
27824 2004-06-08  Dick Porter  <dick@ximian.com>
27825
27826         * locales.c
27827         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27828         Fix memory leak and segfault-causing typo.  No idea how this one
27829         lasted so long without being noticed.
27830
27831 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27832
27833         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27834         any methods. Fixes #59629.
27835
27836 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27837
27838         * assembly.c:
27839         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27840         own the critical section before). Removed dead code (that's done
27841         in the preload hook).
27842
27843         (mono_assembly_load_with_partial_name): call the preload hook.
27844
27845 2004-06-08  Martin Baulig  <martin@ximian.com>
27846
27847         * metadata.c (mono_metadata_signature_alloc): Default
27848         `sentinelpos' to -1.
27849
27850         * reflection.c (mono_image_get_array_token): Likewise.
27851
27852 2004-06-08  Martin Baulig  <martin@ximian.com>
27853
27854         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27855
27856         * metadata.c (mono_metadata_parse_method_signature): When parsing
27857         a MethodDef which has VarArgs, set sentinelpos.
27858
27859         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27860         `gint16' since we're using -1 for non-varargs methods.
27861
27862         * reflection.c
27863         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27864         (method_encode_signature): Added varargs support.
27865         (method_builder_encode_signature): Likewise.
27866         (mono_image_get_varargs_method_token): New static method.
27867         (mono_image_create_method_token): New public method; this is
27868         called via an icall instead of mono_image_create_token() when
27869         calling a varargs method.       
27870
27871 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27872
27873         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27874
27875 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27876
27877         * culture-info-tables.h : Reflecting the latest locale-builder that
27878           fixed empty array representation ({} to {0}).
27879
27880 2004-06-07  Jackson Harper  <jackson@ximian.com>
27881
27882         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27883         looking up extra gac paths. This allows MONO_GAC_PATH to act
27884         exactly like a prefix.
27885         
27886 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27887
27888         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27889         type name before modifying it. Fixes #59405.
27890
27891 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27892
27893         * culture-info.h: added fields for "all datetime patterns".
27894         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27895           _construct_datetime_format ()): fill xxx_patterns fields.
27896         * object.h: added fields for "all datetime patterns" to
27897           MonoDateTimeFormatInfo.
27898         * culture-info-tables.h: reflecting locale-builder updates.
27899
27900 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27901
27902         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27903         the event has no add and remove methods. Fixes #59629.
27904
27905 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27906
27907         * object.c: Fixed possible integer overflow when allocating large
27908         strings.
27909
27910 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27911
27912         * culture-info-tables.h: reflecting locale-builder updates.
27913
27914 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27915
27916         * culture-info-tables.h: reflecting locale-builder updates.
27917
27918 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27919
27920         * culture-info-tables.h: reflecting locale-builder updates.
27921
27922 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27923
27924         * threads.c: Made Thread.Sleep abortable.
27925
27926 2004-06-02  Martin Baulig  <martin@ximian.com>
27927
27928         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27929
27930         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27931
27932 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27933
27934         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27935
27936 2004-05-30  Jackson Harper  <jackson@ximian.com>
27937
27938         * reflection.c: Do not hardcode assembly versions or public key
27939         tokens anymore. All of this except the corlib section was dead
27940         code anyways.
27941         
27942 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27943
27944         * object.c (mono_runtime_invoke_array): Automatically create boxed
27945         objects for byref valuetypes if needed. Fixes #59300.
27946         
27947         * object.c (mono_method_return_message_restore): Handle 
27948         MONO_TYPE_OBJECT as well.
27949
27950 2004-05-28  Jackson Harper  <jackson@ximian.com>
27951
27952         * reflection.c: The modified type encoding was causing build
27953         problems. Reverted for now.
27954         
27955 2004-05-28  Jackson Harper  <jackson@ximian.com>
27956
27957         * reflection.c/h: Take an assembly ref so that we dont create
27958         fully qualified names when encoding types in the same assembly as
27959         the custom attribute being emitted.
27960         * appdomain.c: Increment version number.
27961         
27962 2004-05-26  Duncan Mak  <duncan@ximian.com>
27963
27964         * icall.c
27965         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27966         Set the full version number (major, minor, build, revision).
27967
27968 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27969
27970         * marshal.c (emit_struct_conv): increment src/dst after blit
27971         (mono_marshal_get_managed_wrapper,
27972         mono_marshal_get_native_wrapper): make sure we have marshalling
27973         info before marshalling params (info computation affects
27974         blittable)
27975
27976         * class.c (class_compute_field_layout): correctly deal with
27977         blittable
27978         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27979         value types (as per what windows dows by default)
27980         (mono_class_setup_mono_type): System.ValueType is blittable
27981         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27982         blittable
27983
27984         * marshal.c (mono_marshal_load_type_info): flag types  as
27985         non-blittable if the native layout doesn't match the managed
27986         layout
27987
27988 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27989
27990         * appdomain.c: don't add stuff in the private search path that is
27991         above the application base. If application base is not set, there's
27992         no private search path.
27993
27994 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27995
27996         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27997         byref struct arguments in native->managed marshalling.
27998
27999 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
28000
28001         * marshal.c (mono_marshal_get_runtime_invoke): correctly
28002         cache methods using signature (special case for methods
28003         that are value type or string class)
28004         
28005         * image.c (mono_image_close): clean up allocated GSList's
28006         in runtime_invoke_cache.
28007
28008 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28009
28010         * mono-config.c: set the correct path for mono_cfg_dir on windows when
28011         there's no MONO_CFG_DIR environment variable defined.
28012
28013 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28014
28015         * threads.c: windows version must be >= 0x0500 to include OpenThread.
28016
28017 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
28018
28019         * threadpool.c: Really wait for 500ms after the async call, even if the wait
28020           is interrumped.
28021         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
28022           before waiting for it, and call CloseHandle after the wait to unref it.
28023           This will make sure that handles are not disposed too early.
28024
28025 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28026
28027         * appdomain.c:
28028         * appdomain.h:
28029         * icall.c: removed
28030         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
28031         needed now.
28032
28033         * object.c: se the application_base only for the domain that runs
28034         Main. Fixes bug #59216,
28035
28036 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28037
28038         * appdomain.c:
28039         * object.c: only the domain in which Main is run have
28040         SetupInformation.ConfigurationFile set, so moved a few lines from
28041         appdomain.c to object.c.
28042
28043 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28044
28045         * appdomain.c: we tried to load [name].(dll|exe), but according
28046         to bug #57710, we must also try [culture]/[name].(dll|exe) and
28047         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
28048         There's a test case attached to bug #58922.
28049
28050 2004-05-27  Dick Porter  <dick@ximian.com>
28051
28052         * icall.c:
28053         * file-io.c: Implemented icalls for locking and unlocking regions
28054         in a file.
28055         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
28056         FALSE on error (fixes both compiler warning and real bug.)
28057
28058 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
28059
28060         * culture-info-tables.h: reflecting locale-builder updates.
28061
28062           (Added missing ChangeLog entry for 05/26)
28063
28064 2004-05-27  Jackson Harper  <jackson@ximian.com>
28065
28066         * locales.c: Fix some cut and paste errors.
28067         
28068 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28069
28070         * mono-config.c: set the correct path for config. directory on windows.
28071
28072 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28073
28074         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
28075           on win32.
28076
28077 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28078
28079         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
28080         from pinvoke functions.
28081         
28082         * marshal.c (mono_ftnptr_to_delegate): Implement this.
28083
28084 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28085
28086         * culture-info-tables.h: reflecting locale-builder updates.
28087
28088 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28089
28090         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
28091         #59086.
28092
28093 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
28094
28095         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
28096         * icall.c: Modified icalls for RNG.
28097         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
28098         Windows (CryptoAPI).
28099
28100 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28101
28102         * locales.c: Fix build.
28103
28104 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
28105
28106         * culture-info-tables.h: reflecting locale-builder updates.
28107
28108 2004-05-25  Jackson Harper  <jackson@ximian.com>
28109
28110         * locales.c: When creating the current culture use the $LANGs
28111         specific culture. So DateTimeFormat and NumberFormat entries are created.
28112         
28113 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28114
28115         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
28116         a char array as parameter.
28117
28118 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
28119
28120         * image.c: In mono_image_open(), always use an absolute path name to
28121           look for already loaded images.
28122
28123 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
28124
28125         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
28126         missing in the windows build (like older cygwin include files).
28127
28128 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
28129
28130         * icall.c: Fixed check for possible integer overflow in Buffer_
28131         BlockCopy icall. Replaced comments style // by /* */.
28132
28133 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
28134
28135         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
28136         
28137         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
28138         check after MONO_VTADDR. Fixes pinvoke2.exe.
28139
28140         * marshal.h marshal.c metadata.h: Add beginnings of support for
28141         ftnptr -> delegate marshalling.
28142
28143 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
28144
28145         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
28146         * threads.c: Fix warnings.
28147
28148 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
28149
28150         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
28151         * icall.c: Registered icalls for Suspend and Resume.
28152         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
28153           Thread.Abort.
28154         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
28155         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
28156         * process.c: Use WaitForSingleObjectEx.
28157         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
28158           checkpoints.
28159         * threads.c, threads.h: Make use of new Ex wait methods. Improved
28160           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
28161           for Suspend and Resume. Added new mono_thread_stop, used for stoping
28162           background threads. Added basic support for Abort in Windows.
28163           Start new threads using a managed delegate invoke wrapper. This wrapper
28164           has an interruption checkpoint that is needed since an interruption
28165           can be requested before the thread leaves the unmanaged code that starts 
28166           the thread.
28167         * marshal.c: Added interruption checkpoint after every native call, and
28168           also before managed calls for wrappers called from unmanaged code to
28169           go into managed code.
28170         * object.h: Added new field in MonoThread to keep track of interruption
28171           requests.
28172
28173 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
28174
28175         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
28176         calls.
28177
28178 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28179
28180         * appdomain.c:
28181         * assembly.c:
28182         * gc.c:
28183         * locales.c:
28184         * mono-config.c:
28185         * rand.c: getenv -> g_getenv (windows!)
28186
28187         * process.c: complete_path is also used on non-windows platforms.
28188
28189 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28190
28191         * icall.c: new signature for Process_Start.
28192
28193         * process.[ch]: new signature for Process_Start. If we're on windows
28194         and UseShellExecute is false, we have to search for the program by
28195         ourselves if we don't get a full path.
28196
28197 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
28198
28199         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
28200         marshalling and call CleanUpNativeData if needed. Fixes #58646.
28201
28202 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28203
28204         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
28205         Fixes bug #58373.
28206
28207 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28208
28209         * process.c: use double quotes to quote program name and arguments on
28210         windows. Fixes bug #58575.
28211
28212 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28213
28214         * file-io.c: don't return "." and ".." when using windows Find*File.
28215
28216 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
28217
28218         * marshal.c: Don't pass wrappers to message init because method 
28219         addressed used to lookup metadata. part of remoting[2|3] fix.
28220
28221 2004-05-15  Jackson Harper  <jackson@ximian.com>
28222
28223         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
28224         path is essentially the same as MONO_PATH except that it points to
28225         GACs instead of lib directories.
28226         * loader.h: The user gac is gone so we dont need function to
28227         enable/disable it.
28228         * mono-config.c: user gac option is now gone.
28229         
28230 2004-05-15  Jackson Harper  <jackson@ximian.com>
28231
28232         * culture-info.h: Make defines more consistent, add calendar data
28233         to the culture info table.
28234         * culture-info-tables.h: Add basic calendar data. Basically
28235         everyone gets default gregorian until all the data is
28236         updated.
28237         * locales.c: Use the new consistent defines. Set calendar data for
28238         culture info objects.
28239         * object.h: add a field for calendar data to CultureInfo
28240         
28241 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28242
28243         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28244         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28245         a signature.
28246         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28247         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28248         an extra param that is the pointer of the method to invoke. The IL for
28249         the invoke method is no longer specific to the method, but to the
28250         signature of the method. Thus, we can share the same code for multiple
28251         methods. This reduces the number of methods that have to be compiled.
28252
28253 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28254
28255         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28256
28257         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28258
28259         * icall.c: Optimize Buffer.BlockCopy.
28260
28261 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28262
28263         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28264         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28265         quote). Changed them to "MMMM yyyy".
28266
28267 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28268
28269         * rand.c
28270         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28271
28272 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28273
28274         * reflection.h: Updated after changes to managed structures.
28275
28276         * appdomain.c: Bump corlib version.
28277
28278 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28279
28280         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28281         windows.
28282
28283 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28284
28285         * Makefile.am: link to ../os/libmonoos.la on windows.
28286
28287         * assembly.c:
28288                 -If MONO_DEBUG, warn about non-existing directories in
28289                 MONO_PATH.
28290                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28291                 compile time variable.
28292                 -Removed init_default_path and call mono_set_rootdir from
28293                 libmonoos.a instead (windows only).
28294
28295         * assembly.h: declare mono_assembly_getrootdir().
28296
28297         * domain.c:
28298         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28299
28300         * loader.c: s/getenv/g_getenv/
28301
28302 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28303
28304         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28305
28306         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28307
28308         * metadata.h: Add new marshalling conversions.
28309
28310         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28311         function.
28312
28313         * reflection.c (mono_reflection_get_type): Lookup the type in all
28314         modules of a multi-module assembly. Fixes #58291.
28315
28316 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28317
28318         * threads.c: Before aborting a background, set the StopRequested
28319         state.  This avoids throwing the Abort exception.
28320         In mono_thread_manage, don't continue with the shutdown until all
28321         aborted threads have actually stopped.
28322
28323 2004-05-10  Jackson Harper  <jackson@ximian.com>
28324
28325         * locales.c: Remove the modifier from culture names.
28326         
28327 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28328
28329         * Makefile.am: monosn is not installed any more. It has been deprecated
28330         in favor of sn.
28331
28332 2004-05-07  Jackson Harper  <jackson@ximian.com>
28333
28334         * locales.c
28335         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28336         Fix array construction, add bailout if the length is 0.
28337
28338 2004-05-07  Dick Porter  <dick@ximian.com>
28339
28340         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28341         machine doesn't have a DNS entry.  Patch by Urs Muff
28342         (umuff@quark.com), fixes bug 57928.
28343
28344 2004-05-06  Jackson Harper  <jackson@ximian.com>
28345
28346         * reflection.c: Handle null PublicTokens properly. alloc mem for
28347         assembly names culture so we dont crash when freeing it.
28348         
28349 2004-05-06  Jackson Harper  <jackson@ximian.com>
28350
28351         * assembly.c: Check the usergac when loading with partial names.
28352         
28353 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28354
28355         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28356         does nothing for now (not required for Linux/Windows) but the class
28357         library can call it (and a newer or modified runtime could need it).
28358         * icall.c: Registred icall.
28359
28360 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28361
28362         * loader.c: prints a message on module loading error we set MONO_DEBUG
28363         environment variable.
28364
28365 2004-05-05  Jackson Harper  <jackson@ximian.com>
28366
28367         * appdomain.c: Handle PublicKeyToken=null properly.
28368         
28369 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28370
28371         * environment.c|h: Added icall ves_icall_System_Environment_
28372         GetOSVersionString to get the current OS version as a string.
28373         * icall.c: Registred icall.
28374
28375 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28376
28377         * object.c: in mono_object_get_virtual_method(), take into account that
28378         non-virtual methods don't have a slot in the vtable. Check needed when
28379         the object is a proxy.
28380
28381 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28382
28383         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28384         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28385
28386         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28387
28388         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28389         passed when a valuetype is expected.
28390
28391         * object.c (mono_unhandled_exception): Only set the exit code if the
28392         exception happens in the main thread. Fixes thread5.exe.
28393
28394         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28395         invalid names. Fixes #58047.
28396
28397 2004-05-03  Jackson Harper  <jackson@ximian.com>
28398
28399         * assembly.c: This line was committed accidently and is unneeded.
28400         
28401 2004-05-03  Jackson Harper  <jackson@ximian.com>
28402
28403         * icall.c: Add new icall for Assembly::LoadWithPartialName
28404         * assembly.c/.h: new function that probes the GAC to load partial
28405         assembly names by Paolo Molaro.
28406         
28407 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28408
28409         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28410         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28411         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28412         full type name.
28413
28414 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28415
28416         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28417         * reflection.c: fix bug when parsing a full type name and Version is not
28418         the last thing in the string.
28419
28420 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28421
28422         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28423         crashes when it is freed.
28424
28425 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28426
28427         * assembly.c: print the compat warning to stderr.
28428
28429 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28430
28431         * assembly.c (mono_assembly_load_references): Add a compatibility
28432         hack to run old applications that might be still referencing the
28433         3300-based assemblies, only do this for System.xxx.
28434
28435 2004-05-01  Jackson Harper  <jackson@ximian.com>
28436
28437         * appdomain.c: If the culture is neutral we set it to "".
28438         
28439 2004-04-29  Jackson Harper  <jackson@ximian.com>
28440
28441         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28442
28443 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28444  
28445         * string-icalls.c: added low overhead function for copying chars
28446         * icall.c: added needed icall for the above function
28447  
28448 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28449
28450         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28451         Environment.GetLogicalDrives.
28452
28453 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28454
28455         * rand.c: try and talk to egd or prngd
28456         for random bytes if opening devices fail.
28457
28458 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28459
28460         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28461         alignment for the type using the native alignment of its members 
28462         instead of using klass->min_align.
28463
28464         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28465
28466 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28467
28468         * file-io.c:
28469         * socket-io.c: added check for sys/aio.h.
28470
28471 2004-04-28  Dick Porter  <dick@ximian.com>
28472
28473         * threads.c: Don't abort a thread thats already aborting, when
28474         terminating everything.
28475
28476 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28477
28478         * icall.c: added 2 new async calls for Socket.
28479
28480         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28481         IO on *nix systems.
28482
28483         * threadpool.c: removed unused variable.
28484
28485 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28486
28487         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28488
28489 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28490
28491         * locales.c: put back string_invariant_tolower () and
28492         string_invariant_toupper ().
28493
28494 2004-04-26 David Waite <mass@akuma.org>
28495
28496         * file-io.h:
28497         * socket-io.h:
28498         * threads.h:
28499         * unicode.h: remove comma from end of enumeration declarations
28500
28501 2004-04-26 David Waite <mass@akuma.org>
28502
28503         * debug-mono-symfile.h:
28504         * decimal.c:
28505         * mono_debug.h:
28506         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28507
28508
28509 2004-04-26  Jackson Harper  <jackson@ximian.com>
28510
28511         * appdomain.c: Increment version number.
28512         
28513 2004-04-26  Jackson Harper  <jackson@ximian.com>
28514
28515         * appdomain.c: Set assembly references public token value when
28516         PublicKeyToken is specified, not the hash_value. Free public token
28517         values when free assembly name data. Previously the public key
28518         token was hex decoded, however we are using hex encoded public key
28519         tokens, so this is not neccasary.
28520         * assembly.c: Lookup assemblies in the gac if their public token
28521         value is set. Add function to allow enabling user gac
28522         lookups. Specify whether or not the assembly was loaded from the
28523         GAC. Compare full assembly names when checking the cache for
28524         assemblies (Temporarily disabled see comment in code). Remove
28525         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28526         specifies trace-loader they get extra info to stdout on the
28527         loading of assemblies.
28528         * image.h: Add a field for an assembly references public token
28529         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28530         whether an assembly has been loaded from the GAC.
28531         * image.c: Remove a corlib -> mscorlib name mapping.
28532         * loader.h: Add function to enable/disable the user gac.
28533         * mono-config.c: Check if the usergac is enabled in the config
28534         file.
28535         * icall.c: New icall to determine whether or not an assembly has
28536         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28537         * tabldefs.h: Add constant for assemblyref flag that specifies a
28538         full public key is used instead of a public token.
28539         * reflection.c: Remove mscorlib -> corlib mappings. Set
28540         PublicTokenValue instead of hash value. This value is a hex
28541         string so it does not need to be expanded.
28542
28543 2004-04-26  Martin Baulig  <martin@ximian.com>
28544
28545         * mono-debug-debugger.c (mono_debugger_initialize): Set
28546         `mono_debugger_initialized' before calling mono_debug_lock().
28547
28548 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28549
28550         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28551           InternalToUpper/InternalToLower.
28552         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28553           removed invariant culture shortcut.  This is now done in managed code.
28554         * locales.c: (string_invariant_toupper/tolower) removed.
28555
28556 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28557
28558         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28559         Added Poll internal call.
28560
28561         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28562         call for Poll. Select was too heavy for polling a single socket.
28563
28564         * threadpool.[ch]: added mono_threadpool_cleanup.
28565         * threads.c: use it. Don't use Thread_Abort on windows.
28566
28567 2004-04-23  Martin Baulig  <martin@ximian.com>
28568
28569         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28570
28571 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28572
28573         * icall.c: Registred new icalls for key pair protection and added an
28574         icall for Environment.GetFolderPath on Windows.
28575         * security.c|h: Added new icalls for key pair protection.
28576
28577 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28578
28579         * socket-io.c: don't display the non-supported family warning for known
28580         families. Now this is not displayed on windows when checking support
28581         for IPv4/IPv6.
28582
28583 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28584
28585         * class.c: don't display the layout warning for static fields.
28586
28587 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28588
28589         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28590         * locales.c, locales.h: Added new icalls for culture-specific
28591         Char.ToLower and Char.ToUpper.
28592
28593 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28594
28595         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28596         by David Waite.
28597
28598 2004-04-20  Martin Baulig  <martin@ximian.com>
28599
28600         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28601         of the type name before passing it to mono_reflection_type_from_name().
28602
28603 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28604
28605         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28606         encodings here. Fixes #56965.
28607
28608 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28609
28610         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28611         fix test on strstr result not that I can see anything that
28612         relies on the result.
28613
28614 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28615
28616         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28617         Fixes #57081.
28618
28619         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28620
28621         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28622         function to determine which marshalling to use for strings. Fixes
28623         #56965.
28624
28625         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28626
28627         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28628
28629 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28630
28631         * icall.c: #include mono-config.h
28632
28633 2004-04-15  Jackson Harper  <jackson@ximian.com>
28634
28635         * culture-info-tables.h: Fix date formats for en-US culture.
28636         
28637 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28638
28639         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28640         ThreadPool.SetMinThreads.
28641         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28642         ThreadPool.SetMinThreads.
28643
28644 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28645
28646         * mono-config.c: also load the .config file in the directory
28647         where the assembly was found.
28648
28649 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28650
28651         * assembly.c: load per-assembly config files.
28652         * icall.c: decrapified code to get the config dir and moved to
28653         mono-config.c.
28654         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28655         per-assembly config files. When doing a dll map lookup give precedence
28656         to the per-assembly data.
28657
28658 2004-04-14  Martin Baulig  <martin@ximian.com>
28659
28660         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28661         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28662         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28663
28664         * mono-debugger-debugger.c: While the debugger is locked, remember
28665         whether the symbol tables have changes and send one single
28666         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28667
28668 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28669
28670         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28671
28672         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28673         function.
28674
28675         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28676         account when marshalling string arrays. Fixes #56965.
28677
28678 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28679
28680         * icall.c: Add new icalls mapping for security.
28681         * security.c|h: Add internal calls for WindowsIdentity,
28682         WindowsImpersonationContext and WindowsPrincipal.
28683
28684 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28685
28686         * class.c: Added comment to ensure the System.MonoDummy class
28687         is removed when no longer necessary
28688
28689 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28690
28691         * appdomain.c: Pass arguments to the bootstraping exceptions to
28692         minimize JITed methods at boot
28693
28694         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28695         second string to be null.
28696
28697         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28698         Change the protocol to minimize the JIT methods at startup.  Now
28699         it Returns the internal codepage, if the value of "int_code_page"
28700         is 1 at entry, and we can not compute a suitable code page
28701         number, returns the code page as a string.
28702
28703 2004-04-13  Jackson Harper  <jackson@ximian.com>
28704
28705         * culture-info-tables.h: Fix number of decimal digits for all
28706         english locales.
28707
28708 2004-04-13  Jackson Harper  <jackson@ximian.com>
28709
28710         * icall.c: Clairfy out of sync error message. It is not always
28711         your corlib that is out of sync.
28712
28713 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28714
28715         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28716         properties when only the set accessor is overriden. Fixes #55874.
28717
28718 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28719
28720         * assembly.c (mono_assembly_load_references): Make this thread safe.
28721         Fixes #56327.
28722
28723 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28724
28725         * monosn.c: Add missing initialization calls.
28726
28727 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28728
28729         * locales.c:
28730         ves_icall_System_Globalization_CultureInfo_construct_number_format
28731         Fix g_assert so it compiles on fussier compilers re int/ptr
28732         mismatch
28733
28734 2004-04-08  Dick Porter  <dick@ximian.com>
28735
28736         * socket-io.h:
28737         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28738         53992.  Also rearrange the code so that the internal calls return
28739         an error value and exceptions are thrown from managed code.
28740
28741         * icall.c: Add type info to the socket icalls.
28742
28743 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28744
28745         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28746         owes me a beer.
28747
28748 2004-04-07  Martin Baulig  <martin@ximian.com>
28749
28750         * class.c (mono_class_from_generic_parameter): Don't default
28751         `klass->parent' to `mono_defaults.object_type'.
28752
28753 2004-04-07  Martin Baulig  <martin@ximian.com>
28754
28755         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28756         `param->pklass->reflection_info'.       
28757
28758 2004-04-07  Jackson Harper  <jackson@ximian.com>
28759
28760         * culture-info-tables.h: Fix date separator symbol.
28761         
28762 2004-04-07  Martin Baulig  <martin@ximian.com>
28763
28764         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28765         from System.Type to System.MonoType.
28766
28767 2004-04-07  Martin Baulig  <martin@ximian.com>
28768
28769         * reflection.h
28770         (MonoReflectionGenericParam): Added `has_reference_type' and
28771         `has_value_type' fields.
28772
28773         * reflection.c (mono_image_get_generic_param_info): Encode the
28774         correct flags if we have the `class' or `struct' constraint.
28775
28776 2004-04-07  Martin Baulig  <martin@ximian.com>
28777
28778         * reflection.h
28779         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28780
28781 2004-04-07  Jackson Harper  <jackson@ximian.com>
28782
28783         * appdomain.c: Revert extra patches, just wanted to bump the
28784         version number.
28785         
28786 2004-04-07  Jackson Harper  <jackson@ximian.com>
28787
28788         * Makefile.am: Add culture-info private headers.
28789         * icall.c: Add new icalls for contructing locales.
28790         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28791         * locales.h: Declare new culture info construction methods.
28792         * object.h: Add new fields used to avoid the CultureMap to
28793         MonoCultureInfo.
28794         * culture-info.h: Definition of structs used in the culture info
28795         tables.
28796         * culture-info-tables.h: Autogenerated tables that contain culture
28797         info data. This file was generated with the locale-builder tool.
28798         * appdomain.c: Incement corlib version number.
28799         
28800 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28801
28802         * appdomain.c: (mono_runtime_init) move mono_thread_init
28803         to before mono_object_new calls so critical sections
28804         are initialized before use.
28805
28806 2004-04-07  Martin Baulig  <martin@ximian.com>
28807
28808         * icall.c
28809         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28810         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28811         (ves_icall_MonoGenericParam_initialize): Removed.
28812         (monogenericparam_icalls): Removed.
28813         (generictypeparambuilder_icalls): Added new table for
28814         System.Reflection.Emit.GenericTypeParameterBuilder.
28815
28816         * reflection.c
28817         (mono_reflection_define_generic_parameter): Removed.
28818         (mono_reflection_initialize_generic_parameter): This is now called
28819         from GenericTypeParameterBuilder's .ctor.
28820
28821 2004-04-06  Martin Baulig  <martin@ximian.com>
28822
28823         * class.c (mono_class_init): Don't inflate nested classes in a
28824         generic instance.
28825         (mono_type_get_name_recurse): Include the generic arguments for
28826         generic instances and generic type declarations.
28827         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28828         (_mono_class_get_instantiation_name): Removed.
28829         (mono_class_create_generic): Always use `gklass->name' as our name.
28830
28831         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28832
28833         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28834         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28835         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28836         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28837         closed generic methods here.
28838
28839         * reflection.c
28840         (mono_reflection_generic_inst_get_nested_types): Removed.
28841         (inflate_mono_method): Copy the generic parameters from the
28842         MonoMethodHeader into out MonoGenericMethod.
28843
28844 2004-04-06  Martin Baulig  <martin@ximian.com>
28845
28846         * row-indexes.h
28847         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28848
28849         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28850
28851         * reflection.c (build_compressed_metadata): If we have any entries
28852         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28853         set the header version to 1.1.
28854
28855 2004-04-06  Martin Baulig  <martin@ximian.com>
28856
28857         * class.c (mono_class_init): If we're a generic instance,
28858         initialize our nested classes, too.
28859         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28860         suffix. 
28861
28862 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28863
28864         * process.c: quote the argument passed to the shell on windows.
28865
28866 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28867
28868         * threads.c (mono_alloc_special_static_data): Allow this to be
28869         called during startup.
28870
28871 2004-04-02  Martin Baulig  <martin@ximian.com>
28872
28873         * icall.c
28874         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28875
28876 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28877
28878         * icall.c: Fix build.
28879
28880 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28881
28882         * Makefile.am: Added security.c|h.
28883         * icall.c: Added icall for get_UserName;
28884         * security.c: New file for security related icalls. Added function
28885         get_UserName for System.Environment (fix #56144).
28886         * security.h: New. Header file for security.c
28887
28888 2004-04-02  Dick Porter  <dick@ximian.com>
28889
28890         * icall.c: Deleted the icalls that were obsoleted some time ago
28891         by the ICU string code, and which were mixed into the icall
28892         rearranging.  Fixes bug 55969.
28893
28894         * string-icalls.h: 
28895         * string-icalls.c: Deleted the code that those icalls reference.
28896
28897 2004-04-01  Martin Baulig  <martin@ximian.com>
28898
28899         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28900
28901         * class.c (mono_class_from_generic_parameter): Don't set 
28902         TYPE_ATTRIBUTE_INTERFACE.
28903         (my_mono_class_from_generic_parameter): Likewise.
28904
28905 2004-04-01  Martin Baulig  <martin@ximian.com>
28906
28907         * loader.c (find_method): Added an optional `MonoClass *ic'
28908         argument to search in a specific interface.
28909         (mono_get_method_constrained): New public function.
28910
28911 2004-04-01  Martin Baulig  <martin@ximian.com>
28912
28913         * reflection.c (mono_image_get_generic_field_token): Use the
28914         `handleref' cache here.
28915
28916 2004-04-01  Martin Baulig  <martin@ximian.com>
28917
28918         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28919
28920         * reflection.c (create_generic_typespec): Use the `typespec' hash
28921         here, not the `typeref' one.    
28922
28923 2004-04-01  Martin Baulig  <martin@ximian.com>
28924
28925         * class.c (mono_class_inflate_generic_type): Moved the
28926         functionality into a new static inflate_generic_type() which
28927         returns NULL if it didn't do anything.  Only increment the
28928         `mono_stats.inflated_type_count' if we actually inflated
28929         something.
28930         (mono_class_get_full): Check the classes type to see whether we
28931         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28932
28933 2004-04-01  Jackson Harper  <jackson@ximian.com>
28934
28935         * reflection.c: Set culture for assembly references.
28936         
28937 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28938
28939         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28940
28941 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28942
28943         * assembly.c:
28944         (do_mono_assembly_open): the critical section also covers
28945         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28946
28947 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28948
28949         * threads.c:
28950         (mono_manage_threads): abort the background threads when finishing.
28951         Fixes bug #47232.
28952
28953 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28954
28955         * gc.c: only close the done_event handle if there was no timeout.
28956         C-ified comments.
28957
28958 2004-03-30  Martin Baulig  <martin@ximian.com>
28959
28960         * icall.c (icall_entries): It's called "System.Activator", not
28961         "System.Activation".    
28962
28963 2004-03-30  Martin Baulig  <martin@ximian.com>
28964
28965         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28966         (mono_class_create_from_typespec): Likewise.
28967
28968 2004-03-30  Martin Baulig  <martin@ximian.com>
28969
28970         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28971         `has_ctor_constraint' and `initialized'.
28972
28973 2004-03-30  Martin Baulig  <martin@ximian.com>
28974
28975         * reflection.c (encode_new_constraint): New static function to add
28976         the constructor constraint attribute to a type parameter.
28977         (encode_constraints): Call encode_new_constraint() if necessary.
28978
28979         * reflection.h
28980         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28981
28982         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28983         
28984 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28985
28986         * reflection.c, icall.c: add support for pinning variables. 
28987
28988 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28989
28990         * marshal.c (mono_marshal_get_managed_wrapper):
28991         init bool local with zero rather than null.
28992
28993 2004-03-29  Martin Baulig  <martin@ximian.com>
28994
28995         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28996         the "official" behavior here.
28997         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28998
28999 2004-03-29  Martin Baulig  <martin@ximian.com>
29000
29001         * icall.c: Reflect latest API changes.
29002
29003 2004-03-29  Martin Baulig  <martin@ximian.com>
29004
29005         * loader.c (mono_get_method_from_token): Also call
29006         mono_metadata_load_generic_params () for abstract and interface
29007         methods; replace the type arguments in the method signature with
29008         the ones which are loaded from the metadata.
29009
29010 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
29011
29012         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
29013         of the lock is not the current thread. MS.NET don't do it, in spite of
29014         what the documentation says. See bug #56157.
29015
29016 2004-03-28  Martin Baulig  <martin@ximian.com>
29017
29018         * class.c (mono_class_init): Don't call init_properties() and
29019         init_events() for generic instances; set `prop->parent' when
29020         inflating properties.
29021
29022         * reflection.c (mono_generic_inst_get_object): Call
29023         `mono_class_init (ginst->klass)'.
29024         (mono_type_get_object): Only create a MonoGenericInst if your
29025         generic type is a TypeBuilder.
29026         (do_mono_reflection_bind_generic_parameters): Only set
29027         `ginst->is_dynamic' if our generic type is a TypeBuilder.
29028
29029 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
29030
29031         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
29032         Fixes #56091.
29033
29034 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29035
29036         * icall.c: added Kill_internal icall.
29037         * process.[ch]: added Kill_internal icall.
29038
29039 2004-03-25  Martin Baulig  <martin@ximian.com>
29040
29041         * class.h (MonoStats): Added `generic_instance_count',
29042         `inflated_method_count', `inflated_type_count' and
29043         `generics_metadata_size'.       
29044
29045 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29046
29047         * reflection.c: no warnings now.
29048
29049 2004-03-25  Martin Baulig  <martin@ximian.com>
29050
29051         * class.c (mono_class_get_full): New public function; does a
29052         mono_class_get(), but also takes a `MonoGenericContext *'.
29053
29054         * loader.c (mono_field_from_memberref): Renamed to
29055         `field_from_memberref', made static and added `MonoGenericContext *'
29056         argument.
29057         (mono_field_from_token): Added `MonoGenericInst *' argument.
29058         (method_from_memberef): Likewise.
29059         (mono_get_method_from_token): Likewise.
29060         (mono_get_method_full): New public function; does a
29061         mono_get_method(), but also takes a `MonoGenericContext *'.
29062
29063         * verify.c (mono_method_verify): Get the method's generic context
29064         and pass it to mono_field_from_token(), mono_get_method_full() and
29065         mono_class_get_full().
29066
29067 2004-03-25  Martin Baulig  <martin@ximian.com>
29068
29069         * class.c (mono_class_inflate_generic_type): Take a
29070         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
29071         `MonoGenericMethod *'.
29072
29073 2004-03-25  Martin Baulig  <martin@ximian.com>
29074
29075         * loader.h (MonoMethodInflated): Store the MonoGenericContext
29076         instead of the MonoGenericMethod here.
29077
29078 2004-03-25  Martin Baulig  <martin@ximian.com>
29079
29080         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
29081         each time we create a new MonoGenericInst, we also create a new
29082         context which points back to us.
29083
29084         * class.c (inflate_method): Use `ginst->context' instead of
29085         creating a new context.
29086
29087         * loader.c (method_from_memberref): Use
29088         `klass->generic_inst->context' instead of creating a new context.
29089
29090 2004-03-25  Martin Baulig  <martin@ximian.com>
29091
29092         * class.h (MonoGenericContext): New struct.
29093         (MonoGenericMethod): Removed `generic_inst'.
29094
29095         * class.c (mono_class_inflate_generic_method): Take a
29096         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
29097
29098 2004-03-25  Martin Baulig  <martin@ximian.com>
29099
29100         * loader.h (MonoMethodInflated): New typedef.
29101
29102         * metadata.h (MonoMethodSignature): Removed `gen_method', make
29103         `generic_param_count' consume just 30 bits, added `is_inflated'
29104         and `has_type_parameters' flags (one bit each).
29105
29106         * class.c (mono_class_inflate_generic_method): Create a
29107         MonoMethodInflated instead of a MonoMethodNormal and set
29108         `is_inflated' in the method signature.
29109
29110         * class.h (MonoGenericMethod): Removed `generic_method'.
29111
29112 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
29113
29114         * image.c: Make sure the name of a MonoImage is always an absolute path.
29115           This fixes bug #54415.
29116
29117 2004-03-24  Martin Baulig  <martin@ximian.com>
29118
29119         * class.c (mono_class_setup_vtable): If we're a generic instance,
29120         use our generic type's vtable size.
29121
29122 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
29123
29124         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
29125         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
29126         problems.
29127
29128 2004-03-23  Martin Baulig  <martin@ximian.com>
29129
29130         * class.h (MonoDynamicGenericInst): Added `int count_events' and
29131         `MonoEvent *events'.
29132
29133         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
29134         (typebuilder_icalls): Added "get_event_info"; calls
29135         mono_reflection_event_builder_get_event_info(). 
29136
29137         * reflection.c (mono_reflection_generic_inst_initialize): Added
29138         `MonoArray *events'.
29139         (mono_reflection_event_builder_get_event_info): New function.
29140
29141 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
29142
29143         * object.h: add mono_type_initialization_init
29144
29145         * object.c (mono_runtime_class_init): 
29146         implement class constructor synchronization rules
29147         to cope with threading issues.  
29148         add mono_type_initialization_init
29149
29150         * appdomain.c (mono_runtime_init): call 
29151         mono_type_initialization_init
29152
29153         * class.h: removing initializing field from MonoVTable
29154
29155 2004-03-23  Martin Baulig  <martin@ximian.com>
29156
29157         * class.c (my_mono_class_from_generic_parameter): Use
29158         `param->name' if it's not NULL. 
29159
29160 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
29161
29162         * class.c: do not insert non-virtual methods in the vtable.
29163         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
29164         that means the method is non-virtual. This never would have
29165         happened before.
29166
29167 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
29168
29169         * profiler.c: Added lock for accessing coverage_hash.
29170
29171 2004-03-22  Martin Baulig  <martin@ximian.com>
29172
29173         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
29174         `method->method->signature->generic_param_count != 0' to make it
29175         work for interface methods.
29176
29177 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29178
29179         * process.c: quote the string passed to the shell using g_shell_quote.
29180
29181 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29182
29183         * threads.c:
29184         (mono_threads_manage): don't remove the finalizer thread and self
29185         from the threads hash table so that mono_thread_manage can be called
29186         more than once.
29187
29188 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29189
29190         * process.c: quote the arguments when UseShellExecute is true. Fixes
29191         bug #55790.
29192
29193 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29194
29195         * threads.c: set mono_thread_detach as a cleanup routine for every
29196         thread. This way it's always executed upon thread termination, either
29197         aborted or finished normally. No more xsp hangs!
29198
29199 2004-03-17  Martin Baulig  <martin@ximian.com>
29200
29201         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
29202         `int count_nested' and a `MonoType **nested'.
29203
29204         * reflection.c (mono_reflection_bind_generic_parameters): Moved
29205         most of the functionality into a new static
29206         do_mono_reflection_bind_generic_parameters() and don't take a
29207         `MonoType *nested_in' argument any more.  Don't compute nested
29208         types here.
29209         (mono_reflection_generic_inst_get_nested_types): New public method
29210         to get nested types.
29211
29212         * class.c (mono_class_create_generic): Set `klass->nested_in' if
29213         we're a nested class.
29214
29215         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
29216         mono_reflection_generic_inst_get_nested_types() to compute the
29217         nested types.
29218
29219 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29220
29221         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
29222         descriptive error message under windows.
29223         
29224 2004-03-17  Martin Baulig  <martin@ximian.com>
29225
29226         * class.c (dup_type): Added `const MonoType *original' argument;
29227         copy the attrs from the original type.
29228
29229 2004-03-17  Martin Baulig  <martin@ximian.com>
29230
29231         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29232         `m->generic_inst_cache' here.
29233
29234 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29235
29236         * exception.h exception.c: Add stack_overflow_exception.
29237
29238 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29239
29240         * threadpool.c:
29241         (overlapped_callback): call SetEvent *after* invoking the callback.
29242         No need to call CloseHandle.
29243
29244 2004-03-16  Martin Baulig  <martin@ximian.com>
29245
29246         * reflection.c (mono_image_get_fieldref_token): Take a
29247         `MonoReflectionField *' instead of a `MonoClassField *' and a
29248         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29249
29250 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29251
29252         * appdomain.c: don't add the culture to the filename we're looking for
29253         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29254
29255 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29256
29257         * locales.c: don't ignore symbols when doing case insensitive compares.
29258         Thanks Dick! Fixes bug #54046.
29259
29260         * threads.c: surround 'threads' usage with enter/leave in
29261         mono_thread_manage.
29262
29263 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29264
29265         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29266         implicitly marshalled as [Out]. Fixes #55450.
29267
29268         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29269         an exception.
29270
29271 2004-03-16  Martin Baulig  <martin@ximian.com>
29272
29273         * class.c (mono_class_from_generic_parameter): Use the actual
29274         parameter name. 
29275
29276 2004-03-16  Martin Baulig  <martin@ximian.com>
29277
29278         * reflection.c (type_get_signature_size): New static function.
29279         Compues the size of the type in a method signature.
29280         (method_get_signature_size): New static function; calls
29281         type_get_signature_size() to compute the actual size of the
29282         method's signature.
29283         (method_encode_signature): Use method_get_signature_size() to get
29284         the signature's size rather than using `nparams * 10'.
29285
29286 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29287
29288         * file-io.h: define here WapiOverlapped on windows. I don't want the
29289         regular OVERLAPPED one.
29290
29291         * file-io.c:
29292         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29293         Disabling AIO on windows.
29294
29295 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29296
29297         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29298         bug #55385.
29299
29300 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29301
29302         * appdomain.c: upgraded corlib version.
29303
29304         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29305         and BeginWrite. Allow opening files for asynchrnous operations.
29306
29307         * file-io.h: new struct that maps FileStreamAsyncResult.
29308         * icall.c: added new icalls.
29309         * process.[ch]: support setting child process environment variables
29310         and use the SHELL or COMSPEC when UseShellExecute is true.
29311
29312         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29313         callback for async. IO is here and also BindHandle.
29314
29315         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29316         from here.
29317
29318 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29319
29320         * reflection.c (create_custom_attr): Allow len == 0.
29321
29322         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29323         computation on big-endian machines.
29324
29325 2004-03-13  Martin Baulig  <martin@ximian.com>
29326
29327         * class.h (MonoGenericInst): Added `int count_ifaces'.
29328
29329         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29330         `ginst->count_ifaces' instead `klass->interface_count' since we
29331         may get called before the vtable is created.
29332
29333         * loader.c (mono_method_get_param_names): If we're a generic
29334         instance, return and don't initialize the class.
29335
29336         * reflection.c (mono_reflection_setup_generic_class): Don't call
29337         ensure_runtime_vtable().
29338         (mono_reflection_bind_generic_parameters): Set
29339         `ginst->count_ifaces'.
29340
29341 2004-03-11  Jackson Harper <jackson@ximian.com>
29342
29343         * icall.c:
29344         * unicode.c:
29345         * unicode.h: Remove unused System.Char icalls.
29346         
29347 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29348
29349         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29350         code when we P/Invoke the first library in Windows.Forms, instead
29351         of when we first open the assembly.
29352
29353         * assembly.c: Drop the lookup from here.
29354
29355 2004-03-10  Martin Baulig  <martin@ximian.com>
29356
29357         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29358         class for properties, fields and events.  Finally fixes #54945.
29359
29360 2004-03-10  Martin Baulig  <martin@ximian.com>
29361
29362         * metadata.c (mono_metadata_class_equal): New static function;
29363         checks whether two generic instances or two generic parameters are
29364         equal.
29365         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29366         compare classes.        
29367
29368 2004-03-10  Martin Baulig  <martin@ximian.com>
29369
29370         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29371
29372         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29373         argument and write it into the `reflection_info' field.
29374
29375         * icall.c
29376         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29377         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29378
29379 2004-03-09  Jackson Harper  <jackson@ximian.com>
29380
29381         * char-conversions.h: use 8 bits for numeric data its all we need
29382         * icall.c: numeric data is only 8 bits now.
29383
29384 2004-03-09  Martin Baulig  <martin@ximian.com>
29385
29386         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29387
29388         * class.c (init_properties, init_events): Initialize the new
29389         `parent' field.
29390
29391         * reflection.c (typebuilder_setup_properties): Likewise.
29392         (typebuilder_setup_events): Likewise.
29393
29394         * reflection.h (MonoEventInfo): Replaced `parent with
29395         `declaring_type' and `reflected_type'.
29396
29397         * icall.c (ves_icall_get_property_info): Distinguish between
29398         declaring and reflected type.
29399         (ves_icall_get_event_info): Likewise.
29400
29401 2004-03-09  Martin Baulig  <martin@ximian.com>
29402
29403         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29404         (ves_icall_Type_GetField): Correctly set field->klass.
29405
29406 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29407
29408         * loader.h: Fix warning.
29409
29410 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29411
29412         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29413         library routine if present.  Notice that it will still continue
29414         executing even if its missing, for those working on the Gtk#
29415         edition of Windows.Forms.
29416
29417         * assembly.c (do_mono_assembly_open): If loading the
29418         System.Windows.Forms call mono_loader_wini_init.
29419
29420 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29421
29422         * class.h: Added MonoRemoteClass struct.
29423         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29424         function for MonoStrings.
29425         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29426         Added internal call for getting the proxy type.
29427         * marshal.c: Get the type of transparent proxies from its remote_class.
29428         Added methods that generate the IL for type checks and casts:
29429         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29430         mono_marshal_get_proxy_cancast.
29431         * marshal.h: Declaration of the previous new methods.
29432         * object.c: Added new moethods for creating and updating MonoRemoteClass
29433         instances: mono_remote_class, mono_upgrade_remote_class, 
29434         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29435         * verify.c: FIx transparent_proxy_fields layout.
29436         * appdomain.c: Bump corlib version.
29437
29438 2004-03-04  Jackson Harper  <jackson@ximian.com>
29439
29440         * icall.c: Add icall to access char conversion tables.
29441         * char-conversions.h: Character conversion tables.
29442         * Makefile.am: Add char-conversions.h private header file.
29443         
29444 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29445
29446         * appdomain.c (unload_thread_main): Increase unloading timeout to
29447         10 sec as a temporary workaround for Nant problems.
29448
29449 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29450
29451         * gc.c: Add checks for GC_enable and GC_disable.
29452
29453         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29454         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29455         (bug #54988).
29456         
29457 2004-02-27  Martin Baulig  <martin@ximian.com>
29458
29459         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29460         `MonoReflectionType *' instead of a `MonoType *'.
29461
29462 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29463
29464         * gc.c (run_finalize): Avoid finalizing the object representing the
29465         finalizer thread.
29466         (finalizer_thread): Fix warning.
29467
29468 2004-02-25  Martin Baulig  <martin@ximian.com>
29469
29470         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29471         argument for nested types.
29472         (mono_class_create_generic): Added support for nested generictypes.
29473
29474         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29475         `GList *nested'.
29476
29477         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29478
29479         * reflection.c (method_encode_signature): Increase the minimum
29480         value of `size' from 10 to 11.
29481         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29482         and `MonoType **types' arguments instead of the `MonoArray
29483         *types'; added `MonoType *nested_in'.  Recursively instantiate
29484         nested classes. 
29485
29486 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29487
29488         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29489         stack_overflow_ex members which are used by exception handling.
29490
29491         * appdomain.c (mono_runtime_init): Initialize the new members.
29492
29493         * gc.c (mono_gc_enable): New helper function.
29494         * gc.c (mono_gc_disable): New helper function.
29495
29496 2004-02-23  Martin Baulig  <martin@ximian.com>
29497
29498         * icall.c: I must have been really stupid - make it actually work
29499         this time ;-)
29500
29501 2004-02-23  Martin Baulig  <martin@ximian.com>
29502
29503         * loader.c (method_from_memberref): Only inflate the method if
29504         it's in another klass.
29505
29506 2004-02-23  Martin Baulig  <martin@ximian.com>
29507
29508         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29509         (mono_class_init): If we're a generic instance and an interface,
29510         compute `class->interface_id'; also create `class->interfaces'
29511         here and inflate them.
29512
29513         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29514         `ginst->is_open'.
29515         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29516
29517         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29518
29519 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29520
29521         * reflection.c (method_encode_code): Improved the error message
29522         generated by the exception.
29523
29524 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29525
29526         * icall.c: Martin did not do what he said in the ChangeLog for
29527         2004-02-18, but put back the changes for properties and events.
29528         Commenting those changes out again and adding comment to bug #54518.
29529         
29530         * process.c: removed warning.
29531
29532 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29533
29534         * marshal.c (emit_struct_conv): Print an error message instead of
29535         asserting when a type does not have the StructLayout attribute.
29536
29537 2004-02-20  Martin Baulig  <martin@ximian.com>
29538
29539         * reflection.c (mono_type_get_object): Also use the cache for
29540         generic instances.
29541         (mono_reflection_bind_generic_parameters): Always compute
29542         `ginst->ifaces'.        
29543
29544 2004-02-20  Martin Baulig  <martin@ximian.com>
29545
29546         * class.h (MonoGenericMethod): Removed `klass'.
29547
29548         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29549         *klass' argument.
29550
29551 2004-02-20  Martin Baulig  <martin@ximian.com>
29552
29553         * reflection.c (method_encode_methodspec): Actually use the
29554         uninflated signature for the memberref.
29555
29556 2004-02-20  Martin Baulig  <martin@ximian.com>
29557
29558         * class.h (MonoGenericMethod): Removed `declaring'.
29559
29560         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29561         is NULL, compute it here.
29562
29563 2004-02-20  Martin Baulig  <martin@ximian.com>
29564
29565         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29566
29567         * metadata.c (mono_metadata_generic_inst_hash): New method.
29568         (mono_metadata_generic_inst_equal): New method.
29569
29570         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29571         `klass->image->generic_inst_cache' cache to avoid creating
29572         duplicate MonoGenericInst's.
29573
29574         * class.c (mono_class_inflate_generic_type): Use the cache.
29575
29576 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29577
29578         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29579
29580 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29581
29582         * icall.c: added Socket.WSAIoctl icall.
29583
29584         * socket-io.[ch]: implemented
29585         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29586
29587 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29588
29589         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29590
29591 2004-02-18  Urs C Muff  <umuff@quark.com>
29592
29593         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29594         this work on PPC and other big-endian architectures.
29595
29596         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29597         fields with an underscore to make sure they're only accessed by
29598         the read32() macro.
29599
29600 2004-02-18  Martin Baulig  <martin@ximian.com>
29601
29602         * icall.c: Put the klass->refclass changes back for methods and
29603         fields, but not for properties and events.  We're currently not
29604         distinguishing between DeclaringType and ReflectedType for
29605         properties and events, that's what caused the regressions.
29606
29607 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29608
29609         * object.c:
29610         (mono_async_result_new): the handle can be NULL.
29611
29612         * threadpool.c: Use an event instead of a semaphore, don't initialize
29613         it until needed. This saves quite a few semaphores from being created
29614         when using the threadpool.
29615
29616 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29617
29618         * object.c (mono_string_is_interned_lookup): Fix interning of long
29619         strings. Fixes #54473.
29620
29621         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29622
29623         * icall.c: Revert the klass->refclass changes since they introduce
29624         regressions (bug #54518).
29625
29626 2004-02-18  Martin Baulig  <martin@ximian.com>
29627
29628         * class.c (mono_class_init): If we're a generic instance and don't
29629         come from a TypeBuilder, inflate our members here.
29630         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29631         (mono_class_create_generic): New public method.
29632         (mono_class_initialize_generic): Removed.
29633         (get_instantiation_name): Renamed to
29634         _mono_class_get_instantiation_name() and made it public.
29635
29636 2004-02-18  Martin Baulig  <martin@ximian.com>
29637
29638         * class.c (mono_class_inflate_generic_type): Clear the new
29639         instance's `nginst->klass' when inflating a generic instance.
29640         (mono_class_is_subclass_of): Added (basic) support for generic
29641         instances.
29642
29643 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29644
29645         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29646         MonoMempool to hold compiled native code.
29647
29648 2004-02-17  Martin Baulig  <martin@ximian.com>
29649
29650         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29651         `properties'.
29652
29653         * reflection.c (mono_reflection_generic_inst_initialize): Added
29654         `MonoArray *properties' argument.
29655
29656         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29657
29658 2004-02-17  Martin Baulig  <martin@ximian.com>
29659
29660         * icall.c (ves_icall_Type_GetFields): Renamed to
29661         ves_icall_Type_GetFields_internal() and added a
29662         `MonoReflectionType *rtype' argument; pass it to
29663         mono_field_get_object() to set the field's "reflected" type.
29664         (ves_icall_Type_GetConstructors): Likewise.
29665         (ves_icall_Type_GetEvents): Likewise.
29666         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29667         argument; pass it to mono_method_get_object() to set the method's
29668         "reflected" type.       
29669
29670 2004-02-17  Martin Baulig  <martin@ximian.com>
29671
29672         * class.h (MonoDynamicGenericInst): New type.
29673         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29674
29675         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29676         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29677         (ves_icall_MonoGenericInst_GetFields): New interncall.
29678
29679         * class.c (mono_class_from_generic): Don't call
29680         mono_class_initialize_generic() if this is a dynamic instance;
29681         ie. it's being created from a TypeBuilder.
29682         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29683         `class->byval_arg.type'.
29684
29685         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29686         to `inflate_method' and made static.
29687         (mono_reflection_inflate_field): Removed.
29688         (mono_reflection_generic_inst_initialize): New public method.
29689
29690         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29691         `ctors' and `fields'; added `initialized'.
29692
29693 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29694
29695         * debug-helpers.c (mono_method_full_name): Fix output for empty
29696         namespaces.
29697
29698 2004-02-12  Martin Baulig  <martin@ximian.com>
29699
29700         * class.h (MonoClassField): Added `MonoType *generic_type'.
29701
29702         * reflection.c (mono_image_get_fieldref_token): Added support for
29703         instantiated generic types.
29704         (field_encode_inflated_field): Removed.
29705         (mono_image_get_inflated_field_token): Removed.
29706         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29707
29708         * reflection.h (MonoReflectionInflatedField): Removed.
29709
29710 2004-02-12  Martin Baulig  <martin@ximian.com>
29711
29712         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29713         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29714
29715         * reflection.c (mono_image_get_methodspec_token): Take a
29716         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29717         (mono_image_create_token): Check whether we have a
29718         `method->signature->gen_method' and call
29719         mono_image_get_methodspec_token() if appropriate.
29720         (inflated_method_get_object): Removed.
29721         (mono_reflection_bind_generic_method_parameters): Return a
29722         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29723         (mono_reflection_inflate_method_or_ctor): Likewise.
29724
29725         * reflection.h (MonoReflectionInflatedMethod): Removed.
29726
29727 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29728
29729         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29730         for custom valuetype marshalling.
29731
29732         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29733
29734 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29735
29736         * icall.c: fixed WSAGetLastError_internal name.
29737
29738 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29739
29740         * threads.c (mono_thread_attach): Allow this to be called multiple
29741         times for a thread.
29742         
29743         * threads.c (build_wait_tids): Do not wait for ourselves.
29744
29745         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29746         appdomain list is empty.
29747
29748         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29749         memory returned by mono_string_builder_to_utf16, since it points into
29750         managed memory. Thanks to Bernie Solomon for noticing this.
29751
29752         * icall.c: Add AppDomainSetup icalls.
29753
29754         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29755
29756         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29757         types.
29758
29759         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29760         custom attributes to the method_aux struct. Also fix array indexes etc.
29761
29762         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29763         
29764 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29765
29766         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29767         (both static and runtime) and reduce startup time.
29768
29769 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29770
29771         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29772         AsAny marshalling conversion instead of crashing.
29773
29774         * marshal.c: Fix warnings.
29775
29776 2004-02-09  Martin Baulig  <martin@ximian.com>
29777
29778         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29779
29780         * reflection.h (MonoReflectionInflatedMethod): Removed the
29781         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29782
29783         * reflection.c (method_encode_methodspec): Removed the `method'
29784         argument; we get it from `gmethod->declaring'.
29785         (inflated_method_get_object): Removed the `declaring' argument.
29786
29787 2004-02-09  Martin Baulig  <martin@ximian.com>
29788
29789         * class.h (MonoGenericMethod): New type.
29790         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29791         `generic_method'.
29792
29793         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29794         a `MonoGenericMethod *gen_method' one.
29795
29796         * class.c (mono_class_inflate_generic_type): Take an additional
29797         `MonoGenericMethod * argument.  This is only non-NULL if we're
29798         inflating types for a generic method.   
29799         (mono_class_inflate_generic_signature): Renamed to
29800         inflate_generic_signature() and made static; take a
29801         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29802         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29803         instead of a `MonoGenericInst *' one.
29804         (mono_class_inflate_generic_method): Likewise.
29805
29806         * reflection.c (encode_generic_method_sig): Take a
29807         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29808         (method_encode_methodspec): Likewise.
29809         (inflated_method_get_object): Likewise. 
29810
29811         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29812         field with a `MonoGenericMethod *gmethod' one.  
29813
29814 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29815
29816         * class.h (mono_class_has_parent): add parens to expansion
29817         so you can ! this.
29818
29819 2004-02-08  Martin Baulig  <martin@ximian.com>
29820
29821         * image.h (MonoImage): Removed `generics_cache'.
29822
29823         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29824         instead of a `MonoType *' argument; removed the `inflate_methods'
29825         argument.  Don't inflate methods here.
29826
29827         * loader.c (find_method): If it's a generic instance, call
29828         mono_class_init() on the `sclass->generic_inst->generic_type'.
29829
29830         * metadata.c (mono_type_size): Make this work on uninitialized
29831         generic instances; call it on the `ginst->generic_type's class.
29832
29833         * reflection.c (mono_reflection_bind_generic_parameters): Call
29834         mono_class_from_generic() to create the `ginst->klass'.
29835
29836 2004-02-08  Martin Baulig  <martin@ximian.com>
29837
29838         * class.h (MonoClass): Changed type of `generic_inst' from
29839         `MonoType *' to `MonoGenericInst *'.
29840
29841 2004-02-08  Martin Baulig  <martin@ximian.com>
29842
29843         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29844         mono_type_get_object(), this is now creating a `MonoGenericInst'
29845         for MONO_TYPE_GENERICINST.
29846         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29847         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29848
29849         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29850         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29851         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29852         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29853         and reflected type.
29854
29855         * reflection.h (MonoReflectionInflatedMethod): Removed
29856         `declaring_type' and `reflected_type'.
29857
29858 2004-02-08  Martin Baulig  <martin@ximian.com>
29859
29860         * class.h (MonoGenericInst): Added `MonoType *parent' and
29861         `MonoType **ifaces'.
29862
29863         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29864         `parent' and `interfaces'.
29865
29866         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29867         `MonoType *' argument and return a `MonoType *'.
29868
29869         * icall.c
29870         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29871         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29872
29873 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29874
29875         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29876         valuetype marshalling.
29877
29878 2004-02-06  Martin Baulig  <martin@ximian.com>
29879
29880         * class.c
29881         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29882         (my_mono_class_from_generic_parameter): Likewise.
29883
29884 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29885
29886         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29887         contents of the symbol files lazily.
29888
29889         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29890
29891         * threads.h threads.c icall.c: New icalls for getting and setting the
29892         threads name.
29893
29894 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29895
29896         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29897         Raise an exception when the domain is not found.
29898
29899 2004-02-03  Martin Baulig  <martin@ximian.com>
29900
29901         * reflection.c (mono_image_get_methodspec_token): Use the
29902         uninflated signature; fixes gen-33.
29903
29904 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29905
29906         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29907         the finalizer code can use thread functionality.
29908
29909         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29910         the finalizer thread.
29911
29912         * threads.c: Make some functions more robust.
29913
29914         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29915
29916         * metadata.h: Add new marshalling conventions.
29917
29918         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29919         stringbuilder marshalling. Fixes #53700.
29920
29921         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29922
29923         * reflection.c (mono_image_get_type_info): Save declarative security
29924         info.
29925
29926         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29927         unmanaged fields as well.
29928
29929         * appdomain.c: Bump corlib version.
29930
29931 2004-02-01  Martin Baulig  <martin@ximian.com>
29932
29933         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29934         method type arguments.  
29935
29936 2004-01-30  Duncan Mak  <duncan@ximian.com>
29937
29938         * marshal.h: Add prototype for
29939         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29940         and
29941         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29942         fix the build.
29943
29944 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29945
29946         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29947         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29948
29949 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29950
29951         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29952         custom marshalling of valuetypes.
29953
29954         * marshal.c: Fix some warnings.
29955
29956 2004-01-29  Martin Baulig  <martin@ximian.com>
29957
29958         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29959         for generic method parameters.
29960
29961         * reflection.c (method_encode_methodspec): Write the uninflated
29962         signature into the methodspec table.
29963         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29964         is always the uninflated method.
29965         (reflection_methodbuilder_to_mono_method): Copy the generic
29966         parameters from the MethodBuilder into `header->gen_params'.
29967
29968 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29969
29970         * class.c (mono_class_from_generic_parameter): Fix warning.
29971
29972 2004-01-27  Martin Baulig  <martin@ximian.com>
29973
29974         * class.c (mono_class_from_generic_parameter): Don't create
29975         `klass->methods' here.  
29976
29977 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29978
29979         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29980         extension since it does not work with libraries named lib<FOO>.dll.so.
29981
29982 2004-01-25  Martin Baulig  <martin@ximian.com>
29983
29984         * class.c (mono_class_inflate_generic_type): Added support for
29985         MONO_TYPE_GENERICINST.
29986
29987         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29988         inflate methods on open constructed types.      
29989
29990 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29991
29992         * object.c: fire ProcessExit event in the root AppDomain after running
29993         Main. Fixes bug #53299.
29994
29995 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29996
29997         * socket-io.c: include the new socket-wrappers.h header.
29998         Use the wrappers instead of the unix socket functions to make the code
29999         more clear.
30000
30001 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
30002
30003         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
30004
30005         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
30006         Fixes #22532.
30007
30008 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
30009
30010         * reflection.c (mono_image_create_pefile): Handle the case when the
30011         entry point is not a MethodBuilder.
30012
30013         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
30014         field to ReflectionMethod since it is not allways a builder.
30015
30016         * reflection.c (type_get_fully_qualified_name): New helper function to
30017         return the fully qualified name of a type.
30018
30019         * reflection.c (encode_marshal_blob): Always emit the fully qualified
30020         type name for custom marshallers.
30021
30022         * reflection.c (mono_marshal_spec_from_builder): Ditto.
30023
30024         * class.c (mono_class_setup_vtable): If a parent class already 
30025         implements an interface, use the implementing methods from that class.
30026         Fixes #53148.
30027
30028 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30029
30030         * threadpool.c: just return instead of ExitThread to allow for thread
30031         clean up earlier.
30032
30033 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
30034
30035         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
30036         when closing resource modules.
30037
30038         * reflection.c (mono_image_create_pefile): Handle the case when the
30039         entry point is not a MethodBuilder.
30040
30041         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
30042         field to ReflectionMethod since it is not allways a builder.
30043
30044 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
30045
30046         * marshal.c (mono_marshal_get_managed_wrapper): 
30047         mono_marshal_alloc takes native int so CONV_I
30048         the arg for 64bits.
30049
30050 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
30051
30052         * reflection.c (fixup_cattrs): New function to fixup the methoddef
30053         tokens in the cattr table. Fixes #53108.
30054
30055 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30056
30057         * loader.c: don't trim ".dll" before looking up in the config file.
30058         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
30059
30060 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
30061
30062         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
30063         Return the module which contains the resource as well.
30064         (ves_icall_System_Reflection_Module_Close): New icall.
30065
30066         * appdomain.c: Bump corlib version number.
30067
30068         * image.c (mono_image_addref): New public function.
30069
30070         * assembly.c: Call mono_image_addref.
30071
30072         * reflection.c (mono_module_get_object): Increase reference count of 
30073         the image.
30074
30075         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
30076         Fixes #22532.
30077
30078         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
30079         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
30080         proper exceptions on DllImport problems.
30081
30082 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
30083
30084         * class.c, metadata.c: eliminate CSIZE macro.
30085
30086 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
30087
30088         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
30089         * object.h: Added async_callback field in MonoAsyncResult.
30090         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
30091         * verify.c: Added async_callback in MonoAsyncResult layout.
30092
30093 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
30094
30095         * reflection.c (mono_reflection_get_custom_attrs): Add support
30096         for Modules.
30097
30098 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30099
30100         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
30101         marshalling.
30102         (mono_marshal_method_from_wrapper): Add null pointer check.
30103
30104 2004-01-16  Martin Baulig  <martin@ximian.com>
30105
30106         * debug-mono-symfile.h: Set version number to 36 and reflect
30107         latest symbol writer changes.
30108
30109 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30110
30111         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
30112         multi-dimensional arrays.
30113         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
30114         (mono_class_from_mono_type): Use bounded_array_class_get.
30115         
30116         * class.c (mono_bounded_array_class_get): New function which takes
30117         a 'bounded' bool argument to distinguish vectors from one dimensional
30118         arrays.
30119
30120         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
30121         bounded_array_class_get if the array has bounds.
30122
30123         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30124         Search modules loaded using AssemblyBuilder:AddModule as well.
30125
30126 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30127
30128         * appdomain.c: increased corlib version.
30129         * filewatcher.c: removed g_print.
30130         * icall.c:
30131         (get_property_info): only allocate what is actually requested.
30132         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
30133
30134 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30135
30136         * Makefile.am: added filewatcher.[ch]
30137         * filewatcher.[ch]: FileSystemWatcher runtime support.
30138         * icall.c: added new FSW icalls.
30139
30140 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
30141
30142         * string-icalls.c: fix stringbuilder regression as suggested by
30143         Iain McCoy <iain@mccoy.id.au>.
30144
30145 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
30146
30147         * process.c (process_read_stringtable_block): Recognize '007f' as
30148         a language neutral stringtable block.
30149
30150 2004-01-12  Patrik Torstensson
30151
30152         * object.h (MonoStringBuilder) : Changed layout to support our
30153         new stringbuilder class.
30154         * marshal.c: Change marshalling to support the new layout of 
30155         string builder.
30156         * appdomain.c: increased version number because new layout of
30157         string builder.
30158
30159 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
30160
30161         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
30162         assembly name as an string instead of an AssemblyName, since it is
30163         easier to extract info from it.
30164
30165         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
30166         the culture subdirectories too. Fixes #52231.
30167
30168 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30169
30170         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
30171         It takes 2 new parameters with an optional name for the method to look
30172         for and case ignoring info.
30173
30174         * threadpool.c: removed unused variable.
30175
30176 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30177
30178         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
30179         It takes 2 new parameters with an optional name for the property to look
30180         for and case ignoring info.
30181         Fixes bug #52753.
30182
30183 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
30184
30185         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
30186         Fix #52451.
30187
30188 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30189
30190         * appdomain.c:
30191         * assembly.c: escape the uri before passing it to g_filename_from_uri.
30192         Fixes bug #52630.
30193
30194 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
30195
30196         * reflection.c: Add support for more than one unmanaged resource.
30197
30198         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
30199         in field->def_value, as done in all other cases.
30200
30201         * reflection.c (mono_reflection_get_custom_attrs): Add support for
30202         TypeBuilders.
30203
30204         * reflection.c (mono_reflection_create_runtime_class): Remove 
30205         errorneous assignment to klass->element_class, since it is already
30206         done in mono_reflection_setup_internal_class.
30207
30208 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30209
30210         * gc.c: added missing LeaveCriticalSection.
30211         * icall.c: indented a couple of lines.
30212         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
30213         if we call EndInvoke inside a callback. Fixes bug #52601.
30214
30215 2004-01-07  Martin Baulig  <martin@ximian.com>
30216
30217         * mono-debug-debugger.h
30218         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
30219
30220 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
30221
30222         * appdomain.c: Use messages in NotImplementedException.
30223
30224         * exception.c (mono_get_exception_not_implemented): Now this takes
30225         a message argument.
30226
30227         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30228         exception instead of g_asserting an aborting when something is not
30229         implemented.
30230
30231         Add some inline docs.
30232
30233 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30234
30235         * reflection.h: Update after changes to object layout.
30236
30237         * reflection.c: Implement saving of unmanaged aka win32 resources.
30238
30239         * appdomain.c: Bump version number.
30240
30241         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30242         Handle missing domains gracefully.
30243
30244 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30245
30246         * file-io.c : On Windows, there are much more invalid_path_chars.
30247
30248 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30249
30250         * class.h, object.c: prepare for GetType () speedup.
30251
30252 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30253
30254         * profiler.c: workaround for --profile null reference exception on
30255           cygwin. Patch by Patrik Torstensson.
30256
30257 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30258
30259         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30260         make work for unaligned access.
30261
30262 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30263
30264         * class.c: small cleanup (class->fields [i] -> field).
30265         * image.c: check address of metadata is valid.
30266
30267 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30268
30269         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30270         search the list of loaded assemblies.
30271
30272         * reflection.c (mono_reflection_type_from_name): Use 
30273         mono_assembly_loaded instead of mono_image_loaded.
30274
30275         * reflection.c: Fix warnings.
30276
30277 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30278
30279         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30280         is dynamic. This is needed since an assembly can contain both dynamic and
30281         non-dynamic images.
30282
30283         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30284         assembly->dynamic.
30285
30286         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30287
30288         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30289         to store modules loaded using AddModule.
30290
30291         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30292         on Modules.
30293
30294         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30295
30296         * reflection.c (mono_image_fill_export_table_from_module): New function to
30297         fill out the EXPORTEDTYPES table from a module.
30298
30299         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30300         into a separate function. Also handle loaded non-dynamic modules.
30301
30302         * reflection.c (mono_image_basic_init): Fix memory allocation.
30303
30304         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30305
30306         * assembly.c (mono_assembly_load_references): Make this public.
30307
30308 2003-12-19  Martin Baulig  <martin@ximian.com>
30309
30310         * class.c (mono_class_initialize_generic): Made this static, take
30311         a `MonoGenericInst *' instead of a `MonoClass *'.
30312         (mono_class_from_generic): Call mono_class_initialize_generic()
30313         unless we're already initialized or being called from
30314         do_mono_metadata_parse_generic_inst().
30315
30316         * class.h (MonoGenericInst): Added `initialized' and
30317         `init_pending' flags.
30318
30319         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30320         `mono_class_init (gklass)' or mono_class_initialize_generic()
30321         here; set `generic_inst->init_pending' while parsing the
30322         `type_argv'.
30323
30324 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30325
30326         * locales.c: include string.h for memxxx prototypes
30327
30328 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30329
30330         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30331         constructor when accessing literal fields.
30332
30333 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30334
30335         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30336
30337         * reflection.c (assembly_add_resource_manifest): New function to fill
30338         the MANIFESTRESOURCE table.
30339
30340         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30341
30342         * reflection.h: Update to changes in class layout.
30343
30344         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30345         Reenable call to mono_runtime_is_shutting_down ().
30346
30347         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30348         determine if the runtime is shutting down.
30349
30350 2003-12-16  Jackson Harper <jackson@ximian.com>
30351
30352         * icall.c: comment out call to mono_runtime_is_shutting_down to
30353         fix build.
30354         
30355 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30356
30357         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30358         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30359
30360 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30361
30362         * reflection.c: move definition of swap_with_size
30363         to before its first call
30364
30365 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30366
30367         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30368
30369         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30370         icall.
30371
30372         * object.c: Fix warnings.
30373
30374         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30375         members if FlattenHierarchy is set.
30376
30377         * reflection.c (mono_image_add_decl_security): New function to emit
30378         declarative security.
30379
30380         * reflection.h reflection.c: Add support for declarative security.
30381
30382         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30383         
30384 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30385
30386         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30387         
30388         * appdomain.c verify.c: Moved corlib version checking into its own
30389         function in appdomain.c since it needs to create vtables etc.
30390
30391 2003-12-13  Patrik Torstensson <p@rxc.se>
30392
30393         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30394         instead of unwrapped server.
30395
30396 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30397
30398         * verify.c (check_corlib): Fix field index.
30399
30400 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30401
30402         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30403         GetGacPath icall.
30404
30405 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30406
30407         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30408         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30409         cope with sizeof(size_t) != sizeof(guint32).
30410
30411 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30412
30413         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30414         in case of failure.
30415
30416 2003-12-10  Mark Crichton <crichton@gimp.org>
30417
30418         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30419         in managed code.
30420
30421         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30422
30423 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30424
30425         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30426         marked as deleted.
30427
30428 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30429
30430         * verify.c (check_corlib): Handle the case when the version field is 
30431         initialized by a static constructor.
30432
30433 2003-12-08  Patrik Torstensson  <p@rxc.se>
30434
30435     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30436
30437 2003-12-08  Martin Baulig  <martin@ximian.com>
30438
30439         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30440         a MonoReflectionGenericParameter, also take the parameter index
30441         and name as arguments.
30442         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30443         (ves_icall_MonoGenericParam_initialize): New interncall.
30444         (ves_icall_Type_make_byref_type): New interncall.
30445
30446         * reflection.h (MonoReflectionGenericParam): Derive from
30447         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30448         `index' fields.
30449
30450         * reflection.c (mono_reflection_define_generic_parameter): Create
30451         and return a new MonoReflectionGenericParam; don't initialize the
30452         constraints here.
30453         (mono_reflection_initialize_generic_parameter): New public method;
30454         initializes the constraints and creates the `param->pklass'.
30455
30456 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30457
30458         * reflection.h reflection.c: Use the new fields 'num_types', 
30459         'num_fields' and 'num_methods' to track the number of types etc.
30460
30461         * verify.c (check_corlib): Check corlib version number.
30462
30463 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30464
30465         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30466         function works on all methods.
30467
30468 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30469
30470         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30471         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30472         the custom_type_info flag of the transparent proxy.
30473         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30474         objects that supports IRemotingTypeInfo.
30475         * object.h: Added custom_type_info field in transparent proxy.
30476
30477 2003-12-06  Martin Baulig  <martin@ximian.com>
30478
30479         * class.c (mono_class_create_from_generic): Removed.
30480         (mono_class_from_generic): Check `ginst->klass' before doing
30481         anything else.  This is important to fully support "recursive"
30482         generic types.
30483
30484         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30485         empty `generic_inst->klass' before doing anything else.
30486
30487 2003-12-06  Dick Porter  <dick@ximian.com>
30488
30489         * verify.c: 
30490         * object.h:
30491         * icall.c:
30492         * locales.c: Use C structs to access class fields.  Don't do a
30493         conversion between MonoString and UChar because both are
30494         platform-endian UTF-16.  Compare now takes startindex and count
30495         parameters.  Add a char overload for IndexOf.  Speed up the
30496         invariant string IndexOf.
30497
30498 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30499
30500         * Makefile.am (monosn_LDADD): Fix parallel build.
30501
30502 2003-12-04  Martin Baulig  <martin@ximian.com>
30503
30504         * icall.c
30505         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30506         (ves_icall_Type_make_array_type): New interncall.       
30507
30508 2003-12-04  Martin Baulig  <martin@ximian.com>
30509
30510         * locales.c: also change it in the !HAVE_ICU case.
30511
30512 2003-12-04  Dick Porter  <dick@ximian.com>
30513
30514         * icall.c:
30515         * locales.c: construct_compareinfo is now in CompareInfo, not
30516         CultureInfo.
30517
30518 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30519
30520         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30521         image->files array.
30522
30523         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30524         table as well.
30525
30526         * assembly.c (mono_assembly_load_references): Only load references
30527         once.
30528
30529         * class.c (mono_class_from_name): Avoid linear search of the 
30530         EXPORTEDTYPE table.
30531
30532         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30533
30534 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30535
30536         * image.h (MonoImage): Add 'field_cache' field.
30537
30538         * loader.c (mono_field_from_token): Cache field lookups.
30539         
30540         * reflection.c (mono_module_get_object): Fix name property.
30541
30542         * icall.c (ves_icall_get_enum_info): Update after changes to 
30543         mono_metadata_get_constant_index ().
30544
30545         * icall.c: Get rid of get_type_info icall, use a separate icall for
30546         each type property to avoid needless memory allocations. Fixes #51514.
30547
30548         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30549         to avoid needless binary searches.
30550
30551         * class.c (class_compute_field_layout): Move the initialization of
30552         field->def_value to mono_class_vtable ().
30553
30554         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30555         non-corlib types.
30556
30557         * object.c (mono_object_allocate): Make it inline.
30558
30559         * object.c (mono_object_allocate_spec): Make it inline.
30560         
30561 2003-12-02  Dick Porter  <dick@ximian.com>
30562
30563         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30564         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30565
30566 2003-12-01  Dick Porter  <dick@ximian.com>
30567
30568         * threads.c: Fix signature and call in CreateMutex and
30569         CreateEvent.
30570
30571 2003-12-01  Dick Porter  <dick@ximian.com>
30572
30573         * icall.c: 
30574         * locales.c: Implement string compares and searching
30575
30576         * object.h: Add extra Thread field
30577
30578 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30579
30580         * reflection.c (fixup_method): Add support for MonoCMethod.
30581
30582 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30583
30584         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30585
30586         * reflection.c (assembly_name_to_aname): Allow extra characters in
30587         assembly names. Fixes #51468.
30588
30589 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30590
30591         * exception.c (mono_exception_from_name_domain): New helper function.
30592
30593         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30594         exception object in the correct domain.
30595
30596         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30597         formatting + make a copy a the input data.
30598
30599         * loader.c (mono_get_method_from_token): Methods which contain
30600         native code do not have entries in the ImplMap.
30601
30602         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30603         Thanks to Gonzalo for spotting this.
30604         
30605         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30606         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30607
30608         * assembly.h (mono_assembly_load_from): Split the second part of 
30609         assembly loading into a new public function.
30610
30611         * exception.h (mono_get_exception_bad_image_format): New function.
30612
30613 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30614
30615         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30616         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30617         
30618         * icall.c: Add new icall for creating dynamic methods.
30619
30620         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30621
30622         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30623
30624         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30625         create a dynamic method.
30626
30627         * reflection.c (resolve_object): New helper function.
30628
30629         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30630         which manipulate it so they can also work on dynamic methods.
30631
30632         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30633         creating the MonoReflectionMethodAux structure if it is not needed.
30634         
30635         * reflection.h verify.c: Update after changes to object layout.
30636
30637         * reflection.c (method_builder_encode_signature): Fix compilation on
30638         gcc 2.95.x.
30639
30640 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30641
30642         * appdomain.h: Added support for context static fields. Added static_data
30643           field to MonoAppContext and renamed thread_static_fields to a more
30644           generic special_static_fields in MonoAppDomain, since it can now contain
30645           context static fields.
30646         * domain.c: Updated hashtable name.
30647         * object.c: Replaced field_is_thread_static() for a more generic
30648           field_is_special_static() which also checks for context static attribute.
30649           In mono_class_vtable(), added support for static context fields.
30650         * threads.c: Changed methods that manage thread static fields to more
30651           generic methods so they can be reused both for thread and context static
30652           data.
30653         * threads.h: Declared some new methods.
30654
30655 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30656
30657         * reflection.h: Update after changes to the managed types.
30658
30659         * reflection.c (encode_custom_modifiers): New helper function.
30660
30661         * reflection.c (method_encode_signature): Emit custom modifiers.
30662
30663         * reflection.c (field_encode_signature): Emit custom modifiers.
30664
30665 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30666
30667         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30668
30669         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30670         implementation.
30671
30672         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30673         icall.
30674
30675         * object.c (mono_field_get_value_object): New function.
30676
30677         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30678         specific.
30679
30680 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30681
30682         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30683         return a preallocated out-of-memory exception instance.
30684
30685         * object.c (out_of_memory): Use the new function.
30686
30687         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30688         flag is before the custom modifiers. Fixes #49802.
30689
30690 2003-11-16  Martin Baulig  <martin@ximian.com>
30691
30692         * class.c (mono_class_is_open_constructed_type): Implemented the
30693         MONO_TYPE_GENERICINST case.
30694
30695 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30696
30697         * assembly.c (mono_assembly_fill_assembly_name): New function to
30698         fill out the MonoAssemblyName structure.
30699         (mono_assembly_open): Use the new function.
30700
30701         * icall.c (fill_reflection_assembly_name): New helper function.
30702
30703         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30704         new function.
30705
30706         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30707
30708 2003-11-15  Martin Baulig  <martin@ximian.com>
30709
30710         * class.c (mono_class_is_open_constructed_type): New public
30711         function; checks whether a type is an open constructed type,
30712         ie. whether it still contains type parameters.
30713         (mono_class_inflate_generic_type): If we're a type parameter and
30714         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30715         type.
30716
30717         * class.h (MonoGenericInst): Added `guint32 is_open'.
30718
30719         * loader.c (method_from_methodspec): Check whether we're an open
30720         or closed constructed type and set `ginst->is_open'.
30721
30722         * reflection.c (mono_reflection_bind_generic_parameters): Check
30723         whether we're an open or closed constructed type and set
30724         `ginst->is_open'.
30725         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30726         from open constructed types.
30727
30728 2003-11-15  Martin Baulig  <martin@ximian.com>
30729
30730         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30731         a generic instance (instead of a generic type declaration) with
30732         unbound generic parameters, bind them to our actual types.
30733
30734 2003-11-14  Martin Baulig  <martin@ximian.com>
30735
30736         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30737
30738         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30739         an interface type, populate `res->interfaces' with instantiated
30740         versions of all the interfaces we inherit.
30741
30742 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30743
30744         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30745         when MONO_PATH is set but doesn't contain the install dir.
30746
30747 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30748
30749         * icall.c:
30750         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30751         it's also implemented in base classes. Fixes bug #50927.
30752
30753 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30754
30755         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30756         if this method is called from a finalizer. Fixes #50913.
30757
30758 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30759
30760         * threads.c: Implement VolatileRead/VolatileWrite
30761
30762         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30763
30764 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30765
30766         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30767         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30768         2.95.3.
30769
30770         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30771         from Peter Ross (pro@missioncriticalit.com).
30772         
30773 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30774
30775         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30776
30777 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30778
30779         * assembly.c (mono_assembly_load_references): Disable check because it
30780         triggers on older corlibs which lots of people have.
30781
30782 2003-11-12  Jackson Harper  <jackson@ximian.com>
30783
30784         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30785         load corlib.dll if mscorlib.dll is not found.
30786         * assembly.h: Remove corlib name define.
30787         * class.c:
30788         * domain.c:
30789         * image.c: Change corlib name to mscorlib.
30790         
30791 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30792
30793         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30794
30795 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30796
30797         * appdomain.h: Added loader_optimization here to sync with the C#
30798         code, and add disallow_binding_redirects field.
30799
30800 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30801
30802         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30803
30804         * reflection.c (mono_image_build_metadata): Fix crash on modules
30805         with no types.
30806
30807         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30808
30809         * icall.c (ves_icall_get_method_info): Return callingConvention as
30810         well.
30811
30812         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30813         namespaces from the EXPORTEDTYPE table as well.
30814
30815         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30816         from all modules inside the assembly.
30817         
30818 2003-11-11  Martin Baulig  <martin@ximian.com>
30819
30820         * reflection.c (mono_reflection_bind_generic_parameters): Make
30821         this work for interfaces.
30822
30823 2003-11-11  Martin Baulig  <martin@ximian.com>
30824
30825         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30826
30827 2003-11-11  Martin Baulig  <martin@ximian.com>
30828
30829         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30830         "MonoInflatedMethod" and "MonoInflatedCtor".
30831
30832 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30833
30834         * reflection.c (resolution_scope_from_image): Use the assembly table
30835         from the manifest module, since other modules don't have it.
30836
30837         * debug-helpers.c (mono_type_full_name): New helper function.
30838
30839         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30840
30841         * image.c (mono_image_load_file_for_image): New public function which
30842         is a replacement for the load_file_for_image in class.c.
30843
30844         * assembly.c (mono_assembly_load_module): A wrapper for the function
30845         above which does assembly association and reference loading too.
30846
30847         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30848
30849 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30850
30851         * appdomain.c: not all of the attributes for the full assembly name
30852         are required and the order doesn't matter. Fixes bug #50787.
30853
30854 2003-11-10  Dick Porter  <dick@ximian.com>
30855
30856         * locales.c: Use platform-endian UTF16
30857
30858 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30859
30860         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30861         
30862 2003-11-10  Martin Baulig  <martin@ximian.com>
30863
30864         * metadata.c
30865         (mono_metadata_load_generic_params): Make this actually work.
30866
30867         * reflection.c (mono_reflection_bind_generic_parameters): If our
30868         parent is a generic instance, pass all the `types' to it, no
30869         matter whether it has the same number of type parameters or not.
30870
30871 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30872
30873         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30874
30875         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30876         assignment code to this function so it gets called recursively for all
30877         modules.
30878
30879         * image.c (load_modules): Remove the assembly assignment since it is
30880         now done by mono_assembly_load_references.
30881         
30882         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30883         Add 'module' argument.
30884         (mono_module_get_types): New helper function.
30885         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30886
30887 2003-11-08  Martin Baulig  <martin@ximian.com>
30888
30889         * class.c (mono_class_inflate_generic_method): Interface method
30890         don't have a header.
30891
30892         * reflection.c (mono_image_get_methodspec_token): Take an
30893         additional `MonoGenericInst *' argument instead of reading it from
30894         the header; this is necessary to support interfaces.
30895         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30896         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30897         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30898         argument.
30899
30900         * reflection.h (MonoReflectionInflatedMethod): Added
30901         `MonoGenericInst *ginst'.
30902
30903 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30904
30905         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30906
30907 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30908
30909         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30910
30911 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30912
30913         * reflection.c 
30914         (reflection_methodbuilder_from_method_builder):
30915         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30916         initialize a ReflectionMethodBuilder structure.
30917         (mono_image_get_methodbuilder_token):
30918         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30919         tokens which point to types in another module inside the same assembly.
30920
30921         * reflection.c: Use the new helper functions.
30922         
30923         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30924
30925         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30926         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30927
30928         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30929         neccesary.
30930
30931         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30932         current module. Emit the manifest only for the main module.
30933
30934         * reflection.c (mono_image_create_token): Add assertion when a 
30935         memberref needs to be created.
30936
30937         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30938
30939         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30940         larger buffer for the custom attribute blob. Fixes #50637.
30941         
30942 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30943
30944         * threadpool.c: notify listener on async processing handles after
30945         invoking the async callback. Thanks to Zoltan.
30946
30947 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30948
30949         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30950         avoid code duplication.
30951
30952         * reflection.h (MonoDynamicImage): New type which is currently unused,
30953         but will be used through the ref.emit code in place of 
30954         MonoDynamicAssembly.
30955
30956         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30957         object layout.
30958
30959         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30960         a MonoDynamicImage instead of just a MonoImage.
30961         
30962         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30963         icalls to ModuleBuilder but keep their semantics, so they will work
30964         with moduleb->assemblyb. This will change later.
30965         
30966 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30967
30968         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30969         object layout.
30970
30971         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30972         main module, since it is now done by the managed code.
30973
30974 2003-11-03  Martin Baulig  <martin@ximian.com>
30975
30976         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30977         `ginst->klass' here.
30978         (method_encode_methodspec): Don't use the `ginst->generic_method's
30979         klass if it's a generic instance, use `ginst->klass' in this case.
30980
30981 2003-11-03  Martin Baulig  <martin@ximian.com>
30982
30983         * reflection.c (mono_image_get_generic_method_param_info):
30984         Removed, use mono_image_get_generic_param_info() instead.
30985         (mono_image_get_type_info): Write the GenericParam table before
30986         the Method table.  This is neccessary because in the GenericParam
30987         table, type parameters of the class (ie. '!0' etc.) must come
30988         before the ones from its generic methods (ie. '!!0' etc).
30989
30990 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30991
30992         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30993
30994 2003-11-02  Martin Baulig  <martin@ximian.com>
30995
30996         * reflection.c (create_generic_typespec): Take a
30997         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30998         the generic parameters from it.
30999
31000 2003-11-02  Martin Baulig  <martin@ximian.com>
31001
31002         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
31003         instead of a `MonoClassField *' since we just need the type.
31004         (create_generic_typespec): New static function.  Creates a
31005         TypeSpec token for a generic type declaration.
31006         (mono_image_get_generic_field_token): New static function.
31007         (mono_image_create_token): If we're a FieldBuilder in a generic
31008         type declaration, call mono_image_get_generic_field_token() to get
31009         the token.
31010
31011 2003-11-02  Martin Baulig  <martin@ximian.com>
31012
31013         * reflection.h
31014         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
31015         `MonoReflectionGenericInst *declaring_type' and
31016         `MonoReflectionGenericInst *reflected_type' fields.
31017
31018         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
31019         `MonoReflectionGenericInst *declaring_type' and a
31020         `MonoReflectionGenericInst *reflected_type' argument instead of a
31021         single `MonoReflectionGenericInst *type' one.  Set
31022         `res->declaring_type' and `res->reflected_type' from them.
31023         (mono_reflection_inflate_field): Likewise.      
31024
31025 2003-11-02  Martin Baulig  <martin@ximian.com>
31026
31027         * class.c (mono_class_setup_vtable): Don't store generic methods
31028         in the vtable.  
31029
31030 2003-11-02  Martin Baulig  <martin@ximian.com>
31031
31032         * reflection.h (MonoReflectionGenericInst): Added
31033         `MonoReflectionType *declaring_type'.
31034
31035         * reflection.c (mono_reflection_bind_generic_parameters): Use
31036         `if (tb->parent)' instead of `klass->parent'.
31037
31038 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
31039
31040         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
31041         with an empty ASSEMBLY table.
31042
31043         * reflection.c (mono_image_build_metadata): Avoid using the same loop
31044         variable in the inner and outer loops.
31045
31046 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
31047
31048         * metadata.h (mono_metadata_make_token): Put parentheses around macro
31049         argument.
31050
31051         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
31052         
31053         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
31054         icalls. Instead, do everything in managed code. This is needed since
31055         it is hard to restore the original domain etc. in unmanaged code in the
31056         presence of undeniable exceptions.
31057
31058         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
31059         New icalls to push and pop appdomain refs.
31060
31061 2003-10-31  Martin Baulig  <martin@ximian.com>
31062
31063         * class.c (inflate_generic_type): Renamed to
31064         mono_class_inflate_generic_type() and made it public.
31065
31066         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
31067         New interncall.
31068
31069         * loader.c (mono_field_from_memberref): Also set the retklass for
31070         typespecs.
31071
31072         * fielder.c (mono_image_get_inflated_field_token): New static
31073         method; creates a metadata token for an inflated field.
31074         (mono_image_create_token, fixup_method): Added support for
31075         "MonoInflatedField".
31076         (fieldbuilder_to_mono_class_field): New static function.
31077         (mono_reflection_inflate_field): New public function.
31078
31079         * reflection.h
31080         (MonoReflectionGenericInst): Added `MonoArray *fields'.
31081         (MonoReflectionInflatedField): New typedef.     
31082
31083 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
31084
31085         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
31086         for Solaris and other platforms without s6_addr16
31087
31088 2003-10-30  Martin Baulig  <martin@ximian.com>
31089
31090         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
31091         argument instead of two.
31092         (mono_class_inflate_generic_signature): Likewise.
31093         (inflate_generic_header): Likewise.
31094         (mono_class_inflate_generic_method): Likewise.  In addition, if
31095         `ginst->klass' is set, it becomes the new `method->klass'.
31096
31097         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
31098         field.
31099
31100         * reflection.c (encode_generic_method_sig): Write a 0xa as the
31101         first byte. [FIXME]
31102         (method_encode_methodspec): If we have generic parameters, create
31103         a MethodSpec instead of a MethodRef.
31104         (fixup_method): Added support for "MonoInflatedMethod" and
31105         "MonoInflatedCtor".
31106         (mono_image_create_token): Added support for "MonoInflatedMethod"
31107         and "MonoInflatedCtor".
31108         (inflated_method_get_object): New static function; returns a
31109         managed "System.Reflection.MonoInflatedMethod" object.
31110         (mono_reflection_bind_generic_method_parameters): Return a
31111         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
31112         (mono_reflection_inflate_method_or_ctor): Likewise.
31113         (mono_image_get_generic_method_param_info): Initialize unused
31114         fields to zero.
31115         (mono_image_get_generic_param_info): Likewise.
31116
31117         * reflection.h (MonoReflectionInflatedMethod): New public
31118         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
31119         "S.R.MonoInflatedCtor" classes.
31120
31121         * loader.c (method_from_memberref): If we're a TypeSpec and it
31122         resolves to a generic instance, inflate the method.
31123
31124 2003-10-28  Dick Porter  <dick@ximian.com>
31125
31126         * object.c (mono_runtime_run_main): Convert command-line arguments
31127         into utf8, falling back to the user's locale encoding to do so.
31128
31129 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
31130
31131         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
31132         at this time.
31133
31134         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
31135
31136         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
31137         up icalls at method definition time. Partially fixes #33569.
31138
31139 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
31140
31141         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
31142         marshalling of arrays. Fixes #50116.
31143
31144         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
31145
31146         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
31147         points to a vtable in the dying appdomain.
31148
31149         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
31150         listeners into unmanaged code inside the lock.
31151
31152         * object.c (mono_class_vtable): Turn off typed allocation in non-root
31153         domains and add some comments.
31154
31155 2003-10-25  Martin Baulig  <martin@ximian.com>
31156
31157         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
31158
31159         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
31160
31161         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
31162         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
31163         currently parsing.  Create the generic class and store it in
31164         `generic_inst->klass' before parsing the type arguments.  This is
31165         required to support "recursive" definitions; see mcs/tests/gen-23.cs
31166         for an example.
31167         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
31168         to support recursive typespec entries.
31169
31170         * class.c (mono_class_setup_parent): If our parent is a generic
31171         instance, we may get called before it has its name set.
31172         (mono_class_from_generic): Splitted into
31173         mono_class_create_from_generic() and mono_class_initialize_generic().
31174
31175 2003-10-25  Martin Baulig  <martin@ximian.com>
31176
31177         * icall.c (ves_icall_Type_BindGenericParameters): Return a
31178         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
31179         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
31180         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
31181
31182         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
31183         (create_typespec): Likewise.
31184         (mono_reflection_bind_generic_parameters): Return a
31185         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
31186         (mono_reflection_inflate_method_or_ctor): New public function.
31187
31188         * reflection.h (MonoReflectionGenericInst): New typedef.        
31189
31190 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
31191
31192         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
31193         inside the domain lock. Fixes #49993.
31194         
31195         * object.c (mono_class_vtable): When typed allocation is used, 
31196         allocate vtables in the GC heap instead of in the mempool, since the
31197         vtables contain GC descriptors which are used by the collector even
31198         after the domain owning the mempool is unloaded.
31199
31200         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
31201
31202         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
31203         reflect what it does. Also invalidate mempools instead of freeing
31204         them if a define is set.
31205
31206         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
31207         of the appdomain.
31208         
31209         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
31210         hold the finalizable objects in this domain.
31211
31212         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
31213         appdomain.
31214
31215         * appdomain.c (mono_domain_set): New function to set the current
31216         appdomain, but only if it is not being unloaded.
31217
31218         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
31219         appdomain which is being unloaded.
31220         
31221         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
31222         unloading of the root appdomain.
31223
31224         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
31225         icall to execute a method in another appdomain. Intended as a 
31226         replacement for InternalSetDomain, which can confuse the code 
31227         generation in the JIT.
31228
31229         * appdomain.c (mono_domain_is_unloading): New function to determine
31230         whenever an appdomain is unloading.
31231
31232         * appdomain.c (mono_domain_unload): New function to correctly unload
31233         an appdomain.
31234
31235         * assembly.c (mono_assembly_load_references): Check that an assembly
31236         does not references itself.
31237
31238         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31239         domain manually, it asks the finalizer thread to do it, then waits for
31240         the result. Also added a timeout.
31241
31242         * icall.c: Register the new icalls.
31243
31244         * threads.h threads.c: Export the mono_gc_stop_world and 
31245         mono_gc_start_world functions.
31246         
31247         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31248         function to fill out the mempool with 0x2a.
31249
31250 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31251
31252         * reflection.h (MonoReflectionMethodAux): New structure to store
31253         information which is rarely used, thus is not in the MonoMethod
31254         structure.
31255
31256         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31257         store the aux info.
31258
31259         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31260         and marshalling info into the aux structure.
31261
31262         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31263         from the aux structure.
31264
31265         * loader.c (mono_method_get_param_names): Retrieve the param names from
31266         the aux structure.
31267         
31268 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31269
31270         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31271         warning.
31272
31273 2003-10-21  Dick Porter  <dick@ximian.com>
31274
31275         * socket-io.c
31276         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31277         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31278
31279 2003-10-21  Martin Baulig  <martin@ximian.com>
31280
31281         * reflection.c (mono_reflection_bind_generic_parameters):
31282         `klass->parent' is NULL for interfaces.
31283
31284 2003-10-21  Martin Baulig  <martin@ximian.com>
31285
31286         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31287
31288 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31289
31290         * exception.c (mono_exception_from_name_msg): New helper function for
31291         creating exceptions and initializing their message field.
31292
31293         * exception.c: Simplify functions using the new helper.
31294
31295         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31296         New function.
31297
31298         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31299         mono_raise_exception, since otherwise gcc doesn't generate the function
31300         epilog for raise_exception, confusing the stack unwinding in the JIT.
31301         Fixes #45043.
31302
31303         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31304         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31305         Fixes #49499.
31306
31307 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31308
31309         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31310         utf8.
31311
31312 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31313
31314         * icall.c: Removed GetUninitializedObject method because
31315           AllocateUninitializedClassInstance does the same.
31316
31317 2003-10-18  Martin Baulig  <martin@ximian.com>
31318
31319         * class.c (inflate_generic_signature): Renamed to
31320         mono_class_inflate_generic_signature() and made it public.
31321         (my_mono_class_from_generic_parameter): New static function; if we
31322         don't already have the generic parameter's MonoClass, create a
31323         very simple one which is just used internally in the runtime and
31324         not passed back to managed code.
31325
31326         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31327
31328         * metadata.h (MonoMethodSignature): Moved the
31329         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31330         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31331
31332         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31333         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31334         interncall on the MonoMethod class, not on MethodInfo.
31335         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31336         calling mono_reflection_bind_generic_method_parameters() directly.
31337
31338         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31339         return the already computed `method->signature'.
31340         (method_from_methodspec): New static function to load a method
31341         from a MethodSpec entry.
31342         (mono_get_method_from_token): Call the new method_from_methodspec()
31343         for MethodSpec tokens.  
31344         (mono_get_method_from_token): If we're a generic method, load the
31345         type parameters.
31346
31347         * reflection.c (mono_image_get_memberref_token): Allow
31348         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31349         table.
31350         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31351         (mono_image_create_token): First check whether it's a generic
31352         method (so we'd need to create a MethodSpec), then do the other
31353         two alternatives.
31354         (mono_reflection_bind_generic_method_parameters): Return a
31355         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31356         called directly from the interncall.
31357
31358 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31359
31360         * reflection.c (load_public_key): Move loading of the public key
31361         into managed code.
31362
31363         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31364
31365         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31366         fields.
31367
31368         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31369         culture, hash_alg and public_key. Fixes #49555.
31370
31371 2003-10-17  Martin Baulig  <martin@ximian.com>
31372
31373         * class.h (MonoGenericInst): Moved this declaration here and added
31374         `MonoMethod *generic_method'.
31375
31376         * icall.c
31377         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31378         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31379
31380         * metadata.c (mono_metadata_type_equal): Two types of
31381         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31382         index; ie. don't compare the address of the `MonoGenericParam'
31383         structure.
31384         (mono_metadata_load_generic_params): Removed the `MonoMethod
31385         *method' argument.
31386
31387         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31388         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31389
31390         * reflection.c (method_encode_signature): Encode the number of
31391         generic parameters.
31392         (encode_generic_method_sig): New static function.
31393         (method_encode_methodspec): New static function; creates an entry
31394         in the MethodSpec table for a generic method.
31395         (mono_image_get_methodspec_token): New static function.
31396         (mono_image_create_token): Call mono_image_get_methodspec_token()
31397         for generic methods.
31398         (mono_reflection_bind_generic_method_parameters): New public
31399         function.  Instantiates a generic method.
31400
31401 2003-10-16  Martin Baulig  <martin@ximian.com>
31402
31403         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31404         *gen_params' here from MonoMethodHeader.
31405
31406         * metadata.c (mono_metadata_parse_method_signature): If we have
31407         generic parameters, initialize `method->gen_params' and then set
31408         the correct `type->data.generic_param' in all the parameters.
31409
31410 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31411
31412         * threads.c (mono_threads_get_default_stacksize): New function to 
31413         return the default stacksize.
31414
31415         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31416         termination of the finalizer thread, since the previous method had
31417         race conditions. Fixes #49628.
31418
31419         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31420         as for the other managed threads.
31421
31422 2003-10-16  Martin Baulig  <martin@ximian.com>
31423
31424         * class.c (inflate_generic_signature): Copy `generic_param_count'
31425         and `gen_params'.
31426
31427         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31428         New interncall.
31429
31430         * metadata.c (mono_metadata_parse_method_signature): Actually set
31431         the `method->generic_param_count' here.
31432         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31433
31434 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31435
31436         * object.h: Add a new field to TypedRef to simplify the implementation
31437         of the REFANY opcodes in the JIT.
31438
31439         * icall.c: Make use of the new field.
31440
31441         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31442         dynamically.
31443
31444 2003-10-15  Martin Baulig  <martin@ximian.com>
31445
31446         * class.c (mono_class_from_gen_param): Renamed to
31447         mono_class_from_generic_parameter() and moved most of the
31448         functionality from mono_reflection_define_generic_parameter()
31449         here; ie. we create a "real" class here.
31450         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31451         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31452         previously been called.
31453
31454         * class.h (MonoGenericParam): Moved the declaration of this struct
31455         here from metadata.h and added `MonoMethod *method'.
31456
31457         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31458         interncall.
31459
31460         * loader.c (mono_get_method_from_token): If we have any generic
31461         parameters, call mono_metadata_load_generic_params() to read them
31462         from the MONO_TABLE_GENERICPAR.
31463
31464         * metadata.c (mono_metadata_load_generic_params): Added
31465         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31466
31467         * metadata.h (MonoMethodSignature): Replaced
31468         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31469         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31470
31471         * reflection.c (mono_reflection_define_generic_parameter): Moved
31472         most of the functionality into the new
31473         mono_class_from_generic_parameter(); set the `method' field if
31474         we're a method parameter.       
31475
31476 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31477
31478         * marshal.c (emit_struct_conv): if native size is 0
31479         emit no code.
31480
31481 2003-10-14  Martin Baulig  <martin@ximian.com>
31482
31483         * icall.c: The generics API has changed in the spec since it was
31484         added to System.Type; these modifications make it match the spec
31485         again.
31486         (ves_icall_Type_GetGenericParameters): Renamed to
31487         `ves_icall_Type_GetGenericArguments'.
31488         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31489         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31490         `ves_icall_MonoType_get_HasGenericArguments'.
31491         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31492         `ves_icall_MonoType_get_IsGenericParameter'.
31493         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31494         this is no interncall anymore.
31495         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31496         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31497
31498 2003-10-14  Martin Baulig  <martin@ximian.com>
31499
31500         * reflection.c (mono_reflection_bind_generic_parameters): Also
31501         inflate generic methods if we're reading the class from IL.
31502
31503 2003-10-13  Martin Baulig  <martin@ximian.com>
31504
31505         * reflection.c (mono_reflection_define_generic_parameter): This
31506         method isn't called directly from the icall anymore; take a
31507         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31508         method generic parameters.
31509         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31510         (method_builder_encode_signature): Encode generic parameters.
31511         (mono_image_get_method_info): Write generic params to the
31512         MONO_TABLE_GENERICPARAM table.
31513
31514         * reflection.h (MonoReflectionMethodBuilder): Added
31515         `MonoArray *generic_params'.
31516
31517         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31518
31519         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31520         wrapper for mono_reflection_define_generic_parameter().
31521         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31522
31523 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31524
31525         * marshal.h: Add missing function to fix build.
31526
31527         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31528         the SetLastError pinvoke attribute.
31529
31530         * marshal.c (mono_marshal_set_last_error): New helper function called
31531         by the generated code.
31532         
31533         * marshal.c (mono_mb_emit_branch): New helper function.
31534
31535         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31536
31537         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31538         classes as parameters and return values of delegates. Fixes #29256. 
31539
31540 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31541
31542         * locales.c: use gint32 in non HAVE_ICU case
31543
31544 2003-10-11  Martin Baulig  <martin@ximian.com>
31545
31546         * mono-debug.c (mono_debug_add_method): Added a workaround for
31547         bug #48591.
31548
31549 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31550
31551         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31552         delegates passed to native code must use the STDCALL calling 
31553         convention. Fixes #35987.
31554
31555 2003-10-10  Martin Baulig  <martin@ximian.com>
31556
31557         * class.c (inflate_generic_type): If we're inflating for a generic
31558         type instance (and not for a generic method), return
31559         MONO_TYPE_MVAR unchanged.
31560
31561 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31562
31563         * string-icalls.c: Join ignores null strings in the source array.
31564         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31565         * threads.c: GetAvailableTheads is slightly more accurate.
31566
31567 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31568
31569         * threads.h threads.c : add mono_threads_set_default_stacksize
31570         and pass default to CreateThread calls.
31571
31572 2003-10-09  Dick Porter  <dick@ximian.com>
31573
31574         * icall.c:
31575         * locales.h:
31576         * locales.c: Internal calls for constructing CultureInfo and
31577         related objects from libicu (if its available.)
31578
31579 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31580
31581         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31582
31583 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31584
31585         * threadpool.c: added an argument to async_invoke_thread that is the
31586         item to process, pass the MonoAsyncResult to the thread start function
31587         when creating a new thread. This way we don't need to acquire any lock
31588         when we're creating a new thread. Readded a semaphore for faster
31589         response times (instead of that Sleep i added).
31590
31591 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31592
31593         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31594         get daylight change dates better on Windows, fix handling
31595         of platforms without tm_gmtoff.
31596
31597 2003-10-06  Martin Baulig  <martin@ximian.com>
31598
31599         * class.c (inflate_generic_method): Renamed to
31600         mono_class_inflate_generic_method() and made public.
31601         (mono_class_init): Don't inflate the generic methods here.
31602         (mono_class_from_generic): Added `gboolean inflate_methods'
31603         argument.  Inflate the methods here.
31604
31605         * loader.c (mono_method_get_param_names): Ignore instances of
31606         generic types for the moment.
31607
31608         * reflection.c (fixup_method): Added support for inflated methods.
31609         (mono_image_create_token): Use mono_image_get_methodref_token()
31610         for inflated methods.
31611         (mono_custom_attrs_from_param): Ignore instances of generic types
31612         for the moment.
31613         (mono_reflection_bind_generic_parameters): New public function.
31614         Moved all the functionality from
31615         ves_icall_Type_BindGenericParameters() here and added support for
31616         dynamic types.
31617         (mono_reflection_define_generic_parameter): Initialize
31618         `klass->methods' here.
31619
31620         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31621         functionality into mono_reflection_define_generic_parameter().
31622         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31623         TypeBuilder, return that TypeBuilder.
31624
31625 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31626
31627         * appdomain.c: removed mono_delegate_semaphore.
31628
31629         * threadpool.c:
31630         (mono_thread_pool_add): moved hash table creation inside and the thread 
31631         creation outside of the critical region.
31632         (mono_thread_pool_finish): removed obsolete code.
31633         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31634         continue or exit the thread depending on the queue.
31635
31636 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31637
31638         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31639         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31640         handle more bool marshalling options
31641
31642 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31643
31644         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31645         arrays of structs. Also add a more descriptive error message when
31646         a structure member is marshalled as LPArray.
31647
31648 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31649
31650         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31651         marshalling arrays of complex types. Fixes #29098. Also remove an
31652         usused and incomplete function.
31653
31654 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31655
31656         * gc.c: report heap_size - free_bytes as total memory allocated
31657         (bug#49362).
31658
31659 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31660
31661         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31662         fix timezone handling problems on Windows.
31663         
31664         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31665         asserts when the year is outside the range handled by ms the functions.
31666
31667         * class.c (setup_interface_offsets): If the class is an interface,
31668         fill out its interface_offsets slot.
31669
31670 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31671
31672         * threadpool.c: mark threadpool threads as background.
31673
31674 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31675
31676         * decimal.c - define DECINLINE to nothing if not using GCC
31677
31678 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31679
31680         * assembly.c: More refcount fixes.
31681
31682 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31683
31684         * string-icalls.c: if we're not trimming, return the same string.
31685         When not splitting, don't create a new string.
31686
31687 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31688
31689         * image.c:
31690         (mono_image_open): increment the ref_count inside the critical section.
31691
31692 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31693
31694         * image.c (mono_image_open): Fix reference counting bug.
31695
31696 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31697
31698         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31699         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31700         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31701         mono_lookup_pinvoke_call throws.        
31702
31703 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31704
31705         * reflection.c (mono_reflection_parse_type): Fix #49114.
31706
31707         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31708         temporary workaround for cygwin header problem.
31709
31710         * object.c (mono_object_isinst): Synchronize this with the code
31711         generated by the JIT for casts.
31712
31713 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31714
31715         * reflection.c (encode_type): Fix #38332.
31716
31717 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31718
31719         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31720         the original method from the wrapper method.
31721
31722 2003-09-25  Martin Baulig  <martin@ximian.com>
31723
31724         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31725         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31726         (ves_icall_Type_get_IsGenericInstance): New interncall.
31727
31728 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31729
31730         * object.c: fix cast warning in big endian code.
31731
31732 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31733
31734         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31735         
31736 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31737
31738         * assembly.c: don't call check_env from mono_assembly_load. It's
31739         already done once in mono_assemblies_init and may cause headaches when
31740         multiple threads are loading assemblies.
31741
31742 2003-09-19  Martin Baulig  <martin@ximian.com>
31743
31744         * reflection.c (mono_reflection_define_generic_parameter): Don't
31745         allocate `klass->methods', set `klass->flags' to
31746         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31747
31748 2003-09-18  Martin Baulig  <martin@ximian.com>
31749
31750         * class.c (mono_class_init): Don't create `class->methods' if it's
31751         already initialized.
31752
31753         * metadata.c (mono_metadata_load_generic_params): Make this
31754         actually work.
31755
31756         * reflection.c (mono_reflection_define_generic_parameter): Set
31757         parent class and interfaces from the constraints.
31758
31759         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31760         to keep this struct in sync with the declaration in TypeBuilder.cs.
31761
31762 2003-09-17  Martin Baulig  <martin@ximian.com>
31763
31764         * metadata.h (MonoType): Replaced the data's `int type_param'
31765         field with `MonoGenericParam *generic_param'.
31766         (MonoGenericParam): Added `MonoClass *klass'.
31767
31768         * class.c (mono_class_from_gen_param): Removed the
31769         `MonoImage *image' and `int type_num' arguments.
31770
31771         * metadata.c (mono_metadata_parse_generic_param): New static
31772         method; creates a MonoGenericParam which just contains the index.
31773         (do_mono_metadata_parse_type): Call
31774         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31775         MONO_TYPE_MVAR.
31776
31777         * reflection.c (mono_image_typedef_or_ref): Generic type
31778         parameters may be in the same assembly, but never use a typedef
31779         for them.
31780         (mono_reflection_define_generic_parameter): We're now creating a
31781         "real" class for the type parameter; it's now safe to call
31782         mono_class_from_mono_type() on the class'es type, it'll do the
31783         right thing.
31784
31785 2003-09-16  Martin Baulig  <martin@ximian.com>
31786
31787         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31788         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31789         the `symfile' data structure must be fully initialized before it
31790         gets added to the table.
31791
31792 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31793
31794         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31795
31796         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31797         class init trampolines.
31798
31799 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31800
31801         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31802         to the built-in profiler to turn off time and allocation profiling
31803         respectively.
31804
31805 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31806
31807         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31808         g_direct_equal.
31809
31810         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31811         in human readable form.
31812
31813 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31814
31815         * reflection.c icall.c: Fixed warnings.
31816
31817         * image.c (load_class_names): Use a temporary hash table to hold the
31818         namespaces in order to avoid doing many string comparisons.
31819
31820         * image.h: Fix typo.
31821
31822         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31823         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31824         since the NULL case is short-circuited inside g_hash_table_lookup, 
31825         leading to better performance.  
31826
31827         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31828         obtain the first custom attribute for a given index. Depends on the
31829         CustomAttribute table being sorted by the parent field.
31830
31831         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31832         for better performance.
31833
31834 2003-09-07  Martin Baulig  <martin@ximian.com>
31835
31836         * class.c (mono_class_init): If we're a generic instance, inflate
31837         all our methods instead of loading them from the image.
31838         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31839
31840 2003-09-07  Martin Baulig  <martin@ximian.com>
31841
31842         * mono-debug-debugger.c: Added support for constructors.
31843
31844 2003-09-06  Martin Baulig  <martin@ximian.com>
31845
31846         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31847         New interncall.
31848
31849         * reflection.c (mono_reflection_setup_generic_class): Call
31850         ensure_runtime_vtable() to create the vtable.
31851
31852 2003-09-05  Martin Baulig  <martin@ximian.com>
31853
31854         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31855         MONO_TYPE_MVAR.
31856
31857 2003-09-04  Martin Baulig  <martin@ximian.com>
31858
31859         * reflection.c (mono_reflection_define_generic_parameter): Generic
31860         parameters start with zero.
31861
31862 2003-09-04  Martin Baulig  <martin@ximian.com>
31863
31864         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31865
31866         * reflection.h (MonoReflectionGenericParam): New typedef.
31867         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31868         the generic parameters from the managed TypeBuilder.
31869
31870         * reflection.c (mono_reflection_define_generic_parameter): New function.
31871         (mono_reflection_create_runtime_class): Encode generic parameters.
31872         (mono_reflection_setup_generic_class): New function; this is
31873         called after adding adding all generic params to the TypeBuilder.
31874         (encode_type): Added MONO_TYPE_VAR.
31875
31876 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31877
31878         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31879         here from the JIT.
31880
31881         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31882         load hook.
31883
31884 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31885
31886         * reflection.h reflection.c class.h class.c: Delete duplicate 
31887         definition of mono_type_get_name () from reflection.c and export the
31888         one in class.c.
31889
31890         * class.c: Class loading fixes from Bernie Solomon 
31891         (bernard@ugsolutions.com).
31892
31893         * reflection.c: Endianness fixes from Bernie Solomon 
31894         (bernard@ugsolutions.com).
31895         
31896 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31897
31898         * assembly.h assembly.c: Define a file format version for AOT
31899         libraries.
31900         
31901         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31902
31903         * appdomain.h (MonoJitInfo): New field to determine whenever the
31904         code is domain neutral.
31905         
31906 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31907
31908         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31909
31910 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31911
31912         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31913         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31914         Avoid caching the result since strings must be domain specific. Fixes
31915         #48050.
31916
31917 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31918
31919         * marshal.c (mono_marshal_init): Make this callable multiple times
31920         since it is hard to find a correct place to call it.
31921
31922         * object.c (mono_runtime_class_init): Execute static constructors in
31923         the correct appdomain.
31924
31925         * image.c (build_guid_table): Handle the case when multiple images have
31926         the same GUID.
31927
31928 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31929
31930         * icall.c: added a couple of icalls for System.Web.
31931
31932 2003-08-28  Martin Baulig  <martin@ximian.com>
31933
31934         * icall.c (ves_icall_Type_BindGenericParameters): Use
31935         `klass->generic_inst' instead of `&klass->byval_arg' in the
31936         mono_type_get_object() call.  The returned type must be
31937         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31938
31939 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31940
31941         * NOTES: New file.
31942
31943         * object.c (mono_class_proxy_vtable): Make it thread safe.
31944
31945         * pedump.c: Fix warning.
31946
31947         * object.c appdomain.h: Get rid of metadata_section. 
31948         It is no longer needed and it was causing deadlocks with domain->lock.
31949
31950         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31951
31952 2003-08-26  Martin Baulig  <martin@ximian.com>
31953
31954         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31955
31956 2003-08-26  Martin Baulig  <martin@ximian.com>
31957
31958         * pedump.c (main): Call mono_metadata_init(),
31959         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31960         and mono_loader_init().
31961
31962 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31963
31964         * loader.h: Add missing include to fix build.
31965
31966         * image.h: mono_image_load_references is no more.
31967
31968         * assembly.c: Reworked assembly loading to make it really thread safe.
31969         After these changes, the assembly returned by mono_assembly_open is
31970         fully initialized, i.e. all its references assemblies are loaded.
31971
31972         * assembly.c (mono_image_load_references): Renamed to 
31973         mono_assembly_load_references, and made private, since clients no
31974         longer need to call it.
31975
31976         * class.c: Removed calls to mono_assembly_load_references, since it was
31977         a source of deadlocks.
31978
31979         * loader.h loader.c class.h class.c: Protect data structures using a 
31980         new lock, the loader lock.
31981
31982         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31983         GPtrArrays only when needed.
31984
31985         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31986         into empty structures by mcs. Fixes pinvoke7.cs.
31987         
31988         * domain.c (mono_init): Call a new initialization function.
31989
31990         * appdomain.c (mono_runtime_init): Call the new initializer function
31991         of the marshal module.
31992
31993         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31994         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31995
31996         * marshal.h marshal.c: Added locks around the wrapper caches to make
31997         this module thread safe.
31998
31999         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
32000         this argument. Fixes pinvoke1.exe.
32001
32002 2003-08-25  Lluis Sanchez <lluis@ximian.com>
32003
32004         * object.h: Added call_type field to MonoMethodMessage and the corresponding
32005         enumeration of values. Removed fields to store remote call output values in
32006         MonoAsyncResult. Not needed any more.
32007         * object.c: Initialize call_type and async_result fields in mono_message_init.
32008         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
32009         dispatching the message.
32010         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
32011         async call to finish. To do it use a message with EndInvoke call type.
32012
32013 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
32014
32015         * loader.h loader.c (mono_method_hash_marhal_info): New function which
32016         determines whenever a method has marshalling info.
32017
32018 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32019
32020         * assembly.c: fix the build on windows.
32021
32022 2003-08-22 Lluis Sanchez <lluis@ximian.com>
32023
32024         * object.cs: Fixed bug #47785.
32025
32026 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
32027
32028         * string-icalls.c (StringReplace): If their are no occurances of
32029         the old string found return a reference to the supplied
32030         string. This saves some memory and matches MS behavoir.
32031         
32032 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32033
32034         * socket-io.c: fixed compilation for systems that define AF_INET6
32035         and don't define SOL_IP/SOL_IPV6.
32036
32037 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
32038
32039         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
32040         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
32041
32042         * rawbuffer.c rawbuffer.h: Make this module thread safe.
32043
32044         * domain.c: Make this module thread safe.
32045
32046         * domain.c (mono_init): Call new initialization function.
32047
32048         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
32049         reference types too. Fixes #38812.
32050
32051         * image.c (mono_image_init): Fixed warnings.
32052
32053         * class.c (mono_class_from_typeref): Handle assembly load failure
32054         correctly.
32055
32056         * appdomain.c (add_assemblies_to_domain): Handle the case when
32057         the references of an assembly are not yet loaded.
32058
32059         * metadata.c image.c assembly.c: Moved initialization of global
32060         variables to a separate function called at startup since lazy 
32061         initialization of these variables is not thread safe.
32062         
32063         * image.c assembly.c: Made this module thread safe by adding locks in 
32064         the appropriate places.
32065
32066         * domain.c (mono_init): Call the new initialization functions of the
32067         three modules.
32068
32069 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
32070
32071         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
32072           make a direct call. It is proxy's work to make the call asynchronous.
32073           mono_delegate_end_invoke(): If the targe is a proxy, just collect
32074           the return values.
32075         * object.cs: mono_method_call_message_new(): read AsyncResult and
32076           state object from parameters list, if this info is requested.
32077         * object.h: Added fields to store remote call output values in
32078           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
32079
32080 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32081
32082         * object.h: add needed fields to MonoThread.
32083         * threads.c, threads.h: allow registering a function to cleanup data
32084         allocated per thread by the JIT.
32085
32086 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32087
32088         * loader.h: portability fix by Bernie Solomon
32089         * <bernard@ugsolutions.com>.
32090
32091 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
32092
32093         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
32094         return a MonoArray. This simplifies the code and also ensures that
32095         the cache allways contains an object reference as a value.
32096
32097         * icall.c (ves_icall_get_parameter_info): Simplified using the new
32098         function.
32099
32100 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32101
32102         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
32103         fixes a problem with byte ordering when getting the address family for
32104         a socket.
32105
32106 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
32107
32108         * .cvsignore: Added monosn.
32109
32110         * reflection.h reflection.c loader.c: Added support for parameter
32111         marshalling to dynamically created types. Fixes #47295.
32112
32113 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
32114
32115         * rand.c: remove useless warnings.
32116
32117 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32118
32119         * class.c: implemented ldtoken for methods and fieldrefs.
32120
32121 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32122
32123         * threadpool.c: when mono_async_invoke was called, no one took care of
32124         monitoring the queue. So if the method invoked took some time and we
32125         got new async invoke requests after 500 ms (the thread created waited
32126         that long in WaitForSingleObject), the new async invoke was not called
32127         until the previous one finished.
32128
32129         This is fixed now. Thanks to Totte for helping with it.
32130
32131 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32132
32133         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
32134
32135 2003-08-11  Martin Baulig  <martin@ximian.com>
32136
32137         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
32138
32139 2003-08-06  Martin Baulig  <martin@ximian.com>
32140
32141         * mono-debug-debugger.c: Added support for static fields,
32142         properties and methods.
32143
32144 2003-08-06  Martin Baulig  <martin@ximian.com>
32145
32146         * mono-debug-debugger.c: Don't store the MonoString's vtable to
32147         make this work for applications with multiple application domains.
32148
32149 2003-08-04  Martin Baulig  <martin@ximian.com>
32150
32151         * mono-debug-debugger.c: Completely reworked the type support; the
32152         most important thing is that we're now just using one single
32153         `MonoType' instance per type.
32154
32155 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
32156
32157         * mono-endian.h, mono-endian.c, icall.c: Added icall
32158         ves_icall_System_Double_AssertEndianity to assert double word endianity
32159         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
32160
32161 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32162
32163         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
32164         support, icalls and fixes.
32165
32166 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
32167
32168         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
32169         classes that are a punctuation character in .NET is not the same a
32170         g_unichar_ispunct.
32171
32172 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32173
32174         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
32175
32176 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
32177
32178         * icall.c: Add new MemCopy internalcall.
32179         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
32180         Simplified code; It is not necessary to handle all the cases here,
32181         as the C# code takes care of it.  Only handle the case of the name
32182         resource embedded into the assembly.
32183
32184         Changed signature to return the data pointer and the size of the
32185         data. 
32186
32187 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
32188
32189         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
32190         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
32191
32192 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32193
32194         * socket-io.c: ignore EINTR error in select.
32195
32196 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32197
32198         * class.h, class.c: removed unused subclasses field in MonoClass.
32199
32200 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32201
32202         * icall.c: improve fix of get_base_definition(). If the parent class
32203           doesn't have the mehod, look at the parent of the parent.
32204         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
32205           to check if a parameter is an in or out parameter
32206           (PARAM_ATTRIBUTE_IN is not set by default).
32207           mono_method_return_message_restore(): Use mono_class_value_size to
32208           get the size of a value type. mono_type_stack_size (parameterType)
32209           does not return the correct value if parameterType is byRef.
32210           mono_load_remote_field(), mono_load_remote_field_new(),
32211           mono_store_remote_field(), mono_store_remote_field_new():
32212           raise exception if the remote call returns an exception.
32213
32214 2003-07-28  Martin Baulig  <martin@ximian.com>
32215
32216         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
32217         method.  This is a wrapper around mono_runtime_invoke() which
32218         boxes the instance object if neccessary.
32219
32220 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32221
32222         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
32223         metadata.h, row-indexes.h, verify.c: first cut of generics support.
32224
32225 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32226
32227         * icall.c: disable mcs bug workaround.
32228
32229 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32230
32231         * object.c (mono_runtime_class_init): Take the metadata_section
32232         mutex before obtaining the domain mutex.
32233
32234         * appdomain.h: Added definition of metadata_section mutex here. 
32235
32236         * object.c: define metadata_mutex here.
32237
32238 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32239
32240         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32241         fixed.
32242
32243 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32244
32245         * reflection.c: Fix bug #46669
32246
32247 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32248
32249         * exception.c:
32250         * exception.h:
32251         * icall.c:
32252         * object.h: fill in the type name for TypeLoadException.
32253
32254 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32255
32256         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32257         relationship between TypeBuilders while compiling corlib) and bug
32258         45993 (Array types returned from the runtime while compiling
32259         corlib were from the loaded corlib).
32260
32261 2003-07-22  Martin Baulig  <martin@ximian.com>
32262
32263         * mono-debug-debugger.c: Reworked the type support a bit more;
32264         distinguish between types and classes.
32265
32266 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32267
32268         * icall.c: add IsArrayImpl icall.
32269
32270 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32271
32272         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32273         initializing real_size only once. Also fix bug #46602.
32274
32275 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32276
32277         * object.c: Renamed mono_metadata_section to metadata_section.
32278
32279 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32280
32281         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32282           empty array if the type is an array. Fixed.
32283           ves_icall_MonoMethod_get_base_definition: if the base method
32284           is abstract, get the MethodInfo from the list of methods of
32285           the class.
32286         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32287           and it was 1-based. Fixed in mono_param_get_objects.
32288
32289 2003-07-20  Martin Baulig  <martin@ximian.com>
32290
32291         * mono-debug.h: Set version number to 31.
32292         (mono_debug_init): Added `MonoDomain *' argument.
32293
32294         * mono-debug-debugger.c: Reworked the type support; explicitly
32295         tell the debugger about builtin types; pass the `klass' address to
32296         the debugger.
32297
32298 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32299
32300         * image.c: Allow new metadata tables to be loaded without a
32301         warning. Also update the warning message to give the new constant value.
32302                 
32303 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32304
32305         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32306         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32307         array type representation changes.
32308
32309 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32310
32311         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32312         on Environment.Exit () call.
32313
32314 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32315
32316         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32317         requires a matching corlib.
32318
32319 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32320
32321         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32322           Committed again without the CRs.
32323         
32324 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32325
32326         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32327           getting it from the "this" socket instance. Did not work
32328           if the socket is a subclass of Socket.
32329           Also fixed bug #35371.
32330
32331 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32332
32333         * metadata.c: fixed size for TypedByRef.
32334         * loader.c: when searching for a method, consider the vararg amrker.
32335         * unicode.c, decimal.c: constify some arrays.
32336
32337 2003-07-15  Dick Porter  <dick@ximian.com>
32338
32339         * socket-io.c: Fixed compilation for gcc < 3.2.
32340
32341         Fixed compilation for machines that don't have AF_INET6 (thanks to
32342         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32343
32344         Fixed compile warnings.
32345         
32346         Fixed formatting and line endings.
32347
32348 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32349
32350         * socket-io.h:
32351         * socket-io.c: Added IPv6 support.
32352
32353 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32354
32355         * class.c (mono_class_is_assignable_from): New function to implement
32356         the is_assignable_from logic. Used by mono_object_isinst, 
32357         Type::IsAssignableFrom () and the interpreter.
32358
32359         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32360         Object, even interfaces.
32361         
32362         * object.c (mono_object_isinst): Implement in terms of 
32363         is_assignable_from.
32364
32365         * icall.c (ves_icall_type_is_assignable_from): New icall.
32366
32367 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32368
32369         * domain.c (foreach_domain): fix compiler warning.
32370
32371 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32372
32373         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32374         not available on all plattforms
32375
32376 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32377
32378         * image.h image.c: Store the metadata version string in MonoImage.
32379         * icall.c: New icall to retrieve the image version.
32380         * reflection.c (create_dynamic_image): Fill in the image version field
32381         * reflection.c (build_compressed_metadata): Use the image version
32382         from the image structure.
32383
32384 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32385
32386         * appdomain.c: modified comment.
32387         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32388         That will be its last iteration when mono_gc_cleanup is called from
32389         mono_runtime_cleanup and before the domain is unloaded.
32390
32391         Fixes bug #45962.
32392
32393 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32394
32395         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32396         attributes.
32397
32398 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32399
32400         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32401         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32402         Bernie Solomon <bernard@ugsolutions.com>.
32403
32404 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32405
32406         * object.c, object.h: provide mono_object_new_fast() for faster
32407         allocation in some special cases.
32408
32409 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32410
32411         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32412         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32413
32414 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32415
32416         * threadpool.c: fix leaks.
32417
32418 2003-07-01  Dick Porter  <dick@ximian.com>
32419
32420         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32421         using MonoGHashTables.  Fixes threadpool bug posted to list.
32422
32423 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32424
32425         * image.h, image.c: added support to load an assembly from a byte array.
32426         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32427         assembly bundle support.
32428
32429 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32430
32431         * threadpool.c (mono_thread_pool_add): keep a reference to the
32432         AsyncResult to prevent GC
32433
32434 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32435
32436         * class.c: leak fix.
32437
32438 2003-06-25  Dick Porter  <dick@ximian.com>
32439
32440         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32441         for the async object, the WaitHandle object will close the handle.
32442         Fixes bug 45321.
32443
32444 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32445
32446         * class.c: in mono_array_class_get (), lookup from the hash with the
32447         same type we insert: this works around a bug in
32448         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32449         lluis. The real fix will have to wait for after the release.
32450
32451 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32452
32453         * icall.c: fix memory leak when getting type members.
32454
32455 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32456
32457         * reflection.c: added more pubtoken special cases.
32458
32459 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32460
32461         * class.c: handle field offset correctly when class size
32462         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32463
32464 2003-06-20  Martin Baulig  <martin@ximian.com>
32465
32466         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32467         *image' field.
32468
32469 2003-06-20  Martin Baulig  <martin@ximian.com>
32470
32471         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32472
32473 2003-06-20  Martin Baulig  <martin@ximian.com>
32474
32475         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32476         just distinguish between variables in registers and variables at
32477         an offset relative to a register.
32478
32479 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32480
32481         * icall.c: #ifdef out latest changes until mcs is fixed.
32482
32483 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32484
32485         * icall.c: return members in metadata order.
32486
32487 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32488
32489         * icall.c: avoid infinite loop in GetTimeZoneData.
32490
32491 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32492
32493         * icall.c: added Marshal.Prelink/All icalls.
32494
32495 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32496
32497         * object.c, object.h: fix warnings and do some overflow checking
32498         when creating arrays.
32499
32500 2003-06-17  Dick Porter  <dick@ximian.com>
32501
32502         * file-io.h:
32503         * file-io.c: File attributes need to be tweaked slightly when
32504         passed from the managed to the w32 world.
32505
32506 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32507         * profiler.h profiler-private.h profiler.c: Rework last patch
32508         based on suggestion by Paolo.
32509         
32510 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32511
32512         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32513         instruction level coverage data collection.
32514         * profiler.h profiler.c (: Added new callback function which can be
32515         used by the profiler to limit which functions should have coverage
32516         instrumentation.
32517         * profiler.c (mono_profiler_load): Call g_module_build_path to
32518         generate the file name of the profiler library.
32519
32520 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32521
32522         * profiler.c, profiler.h, profiler-private.h: added basic block 
32523         coverage profiling API.
32524
32525 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32526
32527         * reflection.c (mono_reflection_create_runtime_class): Add support
32528         for events in dynamically generated code.
32529
32530         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32531         not allocated.
32532
32533 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32534
32535         * icall.c: when getting timezone info, return reasonable values if we
32536         can't get the actual data.
32537
32538 2003-06-14  Dick Porter  <dick@ximian.com>
32539
32540         * threads.c (start_wrapper): Remove the reference to the thread
32541         object in the TLS data, so the thread object can be finalized.
32542         This won't be reached if the thread threw an uncaught exception,
32543         so those thread handles will stay referenced :-( (This is due to
32544         missing support for scanning thread-specific data in the Boehm GC
32545         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32546
32547 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32548
32549         * reflection.c: ensure streams and tables are first allocated with
32550         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32551
32552 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32553
32554         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32555
32556 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32557
32558         * reflection.c (mono_reflection_create_runtime_class): Add support for
32559         properties to dynamically created classes.
32560         * reflection.c: Fix a few places where non-MonoObjects were inserted
32561         into the tokens hashtable.
32562
32563 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32564
32565         * object.c: some support to handle out of memory exceptions.
32566
32567 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32568
32569         * marshal.c (mono_marshal_get_native_wrapper): support reference
32570         return types
32571
32572 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32573
32574         * object.h, object.c: more portability stuff from Bernie Solomon.
32575         Unexport mono_object_allocate(). Added mono_object_unbox ().
32576         Set exitcode when an unhandled exception is thrown.
32577
32578 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32579
32580         * marshal.c (mono_marshal_get_native_wrapper): use custom
32581         marshaler for return types.
32582
32583 2003-06-10  Dick Porter  <dick@ximian.com>
32584
32585         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32586         ip_mreq is available
32587
32588 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32589
32590         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32591         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32592         by Bernie Solomon <bernard@ugsolutions.com>.
32593
32594 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32595
32596         * gc.c (mono_gc_init): Avoid error message on shutdown when
32597         GC_DONT_GC=1 is used.
32598
32599         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32600         New icall to return the GUID of a module.
32601
32602 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32603
32604         * class.c: ensure instance size always includes the parent's size
32605         even whem class size is set explicitly (fixes bug#44294).
32606
32607 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32608
32609         * profiler.h, profiler.c: made the simple profiler thread-safe,
32610         get more accurate timing info. Allow the loading of an
32611         externally-developed profiler module.
32612
32613 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32614
32615         * marshal.c (mono_marshal_get_native_wrapper): improved
32616         class/byref arguments.
32617         (mono_marshal_get_native_wrapper): better string marshaling support.
32618
32619 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32620
32621         * class.c: ensure .pack and .size are handled correctly and
32622         simplified layout of static fields.
32623
32624 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32625
32626         * appdomain.c
32627         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32628
32629         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32630         current directory (fix bug 44008)
32631
32632 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32633
32634         * marshal.c (mono_marshal_get_native_wrapper): started support for
32635         custom marshalers.
32636         (mono_delegate_to_ftnptr): consider marshalling specifications
32637
32638 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32639
32640         * reflection.c, reflection.h: emit custom marshal info.
32641
32642 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32643
32644         * object.c: free the GError.
32645         * icall.c: added CloseEvent_internal.
32646         * threads.[ch]:
32647         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32648         call.
32649
32650 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32651
32652         * loader.c (mono_method_get_signature): Add support for dynamic
32653         assemblies.
32654
32655 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32656
32657         * reflection.c: fixed bug #43905.
32658
32659 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32660
32661         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32662         handling TypedReference and ArgIterator.
32663         * loader.c, loader.h: added function to get signature at call site.
32664
32665 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32666
32667         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32668         data readonly. Buglets and warning fixes. Some MethodSpec support.
32669
32670 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32671
32672         * class.h, class.c, object.c: remove relative numbering support.
32673
32674 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32675
32676         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32677         free the string, until we get a chance to fix Gtk#
32678
32679 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32680
32681         * marshal.c: revert last patch.
32682
32683 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32684
32685         * icall.c: updates for new mono_class_vtable() not calling
32686         the type constructor anymore.
32687
32688 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32689
32690         * object.h, object.c: separate vtable creation from type
32691         initialization. Make running the .cctor thread safe.
32692
32693 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32694
32695         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32696
32697 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32698
32699         * loader.c (mono_get_method): consider calling convention
32700
32701 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32702
32703         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32704         to return the invisible global type for a module.
32705
32706         * reflection.c (mono_image_build_metadata): Emit global fields too.
32707
32708 2003-05-20  Peter Williams  <peterw@ximian.com>
32709
32710         * loader.c (mono_lookup_internal_call): Add a few newlines.
32711
32712 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32713
32714         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32715         literal strings.
32716
32717         * appdomain.c (set_domain_search_path): Recalculate search path when
32718         AppDomainSetup.PrivateBinPath changes.
32719
32720         * object.c (mono_class_compute_gc_descriptor): It turns out some
32721         parts of the class libs (like System.Thread) holds pointers to
32722         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32723         to treat native int a pointer type here.
32724         
32725 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32726
32727         * appdomain.h, domain.c: add hashtable for jump target resolution.
32728
32729 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32730
32731         * reflection.h reflection.c icall.c: Added new icalls 
32732         GetManifestResourceInfoInternal, GetModulesInternal and support
32733         infrastructure.
32734
32735 2003-05-16  Dick Porter  <dick@ximian.com>
32736
32737         * icall.c:
32738         * file-io.h:
32739         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32740
32741 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32742
32743         * object.c: mono_store_remote_field: little fix to previous patch.
32744
32745 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32746
32747         * class.c: add constructors to array classes.
32748         * icall.c: special case array construction for InternalInvoke (),
32749
32750 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32751
32752         * class.h class.c reflection.c object.c: Added support for field
32753         defaults in dynamically generated classes.
32754
32755 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32756
32757         * reflection.c: properly encode charset for ddlimport.
32758
32759 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32760
32761         * threads.c: allow compiling without GC.
32762
32763 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32764
32765         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32766         handling of thread static data.
32767
32768 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32769
32770         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32771
32772 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32773
32774         * class.c (mono_array_class_get): always set the serializable flags
32775         (mono_array_class_get): always set the SEALED attribute for array types
32776
32777 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32778
32779         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32780         attributes (fix for bug 42021).
32781
32782 2003-05-12  Dick Porter  <dick@ximian.com>
32783
32784         * gc.c: Don't run finalizers when the finalizer thread is
32785         finishing up, because the default domain has already been
32786         destroyed.
32787
32788 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32789
32790         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32791         value is null, we should throw an exception.   This is slightly
32792         different than the other conventions used for the constructor.
32793
32794 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32795
32796         * socket-io.c: fixed windows build.
32797
32798 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32799
32800         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32801
32802 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32803
32804         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32805         compilers.
32806
32807 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32808
32809         * class.c (mono_class_layout_fields): Add experimental GC aware
32810         auto layout facility. Requires class library changes to work correctly.
32811
32812         (mono_class_setup_vtable): Avoid overriding explicit interface
32813         method implementations. Fixes iface3.exe test.
32814
32815         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32816         object reference.
32817         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32818         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32819
32820         * metadata.h: Add new type classification macro which determines
32821         whenever the type holds an object reference.
32822
32823 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32824
32825         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32826
32827 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32828
32829         * gc.c (finalizer_thread): Work around a GC bug.
32830
32831 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32832
32833         * marshal.c (emit_struct_conv): allow unions
32834
32835         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32836
32837 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32838
32839         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32840
32841 2003-05-06  Martin Baulig  <martin@ximian.com>
32842
32843         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32844
32845 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32846
32847         * socket-io.c:
32848         (Select_internal): allow NULLs, don't create arrays if not needed.
32849         Coupled with Socket.cs changes.
32850
32851         * threadpool.c:
32852         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32853         register a finalizer for it that will close the semaphore handle. This
32854         fixes the leak and make Lupus' test run with > 4080 loops.
32855
32856 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32857
32858         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32859         Jerome Laban (bug #42287)
32860
32861 2003-05-02  Martin Baulig  <martin@ximian.com>
32862
32863         * debug-mono-symfile.h
32864         (MonoSymbolFile): Moved declaration into mono-debug.h.
32865         (MonoDebugMethodJitInfo): Likewise.
32866         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32867         argument.
32868         (_mono_debug_address_from_il_offset): Take a
32869         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32870
32871         * mono-debug.h
32872         (MonoDebugDomainData): New struct.
32873         (mono_debug_get_domain_data): New function.
32874         (mono_debug_add_method): Take an additional `MonoDomain *'
32875         argument.
32876         (mono_debug_source_location_from_address): Likewise.
32877         (mono_debug_il_offset_from_address): Likewise.
32878         (mono_debug_address_from_il_offset): Likewise.
32879
32880 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32881
32882         * reflection.c: one more check for null type in custom attrs.
32883
32884 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32885
32886         * reflection.c: avoid warning (comparison is always false due to limited
32887         range of data type).
32888
32889 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32890
32891         * icall.c: throw an exception in Type.GetField if the argument 'name'
32892         is NULL.
32893
32894 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32895
32896         * reflection.c: fixed handling of enums in named arguments to custom
32897         attributes (bug #42123).
32898
32899 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32900
32901         * reflection.c: use the right array element type and handle
32902         a null for a Type argument, too.
32903
32904 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32905
32906         * reflection.c: handle arrays as arguments to custom attributes.
32907
32908 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32909
32910         * reflection.c: handle a string value in a custom attr
32911         ctor that takes an object.
32912
32913 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32914
32915         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32916         (fix bug #42063)
32917
32918 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32919
32920         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32921
32922 2003-04-27  Martin Baulig  <martin@ximian.com>
32923
32924         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32925         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32926         MONO_DEBUGGER_EVENT_BREAKPOINT.
32927         (mono_breakpoint_trampoline_code): Removed.
32928         (mono_debugger_event_handler): The last argument is now a
32929         `guint32'.
32930         (mono_debugger_insert_breakpoint_full): Removed the
32931         `use_trampoline' argument.
32932         (mono_debugger_method_has_breakpoint): Likewise.
32933         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32934         mono_debugger_breakpoint_callback(); take the method and
32935         breakpoint number as arguments.
32936
32937 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32938
32939         * metadata.c: fix off by one when loading parameters attributes.
32940
32941 2003-04-24  Martin Baulig  <martin@ximian.com>
32942
32943         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32944
32945 2003-04-24  Martin Baulig  <martin@ximian.com>
32946
32947         * mono-debug-debugger.c: Moved all code which interacts with the
32948         Mono Debugger here.
32949
32950         * debug-mono-symfile.c: This code now just deals with the symbol
32951         file itself, the debugger code is now in mono-debug-debugger.c.
32952
32953 2003-04-23  Martin Baulig  <martin@ximian.com>
32954
32955         * mono-debug.c (mono_debug_source_location_from_il_offset):
32956         New method; like mono_debug_source_location_from_address(), but
32957         takes an IL offset instead of a machine address.
32958
32959 2003-04-23  Martin Baulig  <martin@ximian.com>
32960
32961         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32962         `line' field; this is now computed by the debugger.
32963
32964 2003-04-23  Martin Baulig  <martin@ximian.com>
32965
32966         * mono-debug.[ch]: New files.  This is the new debugging interface.
32967
32968         * mono-debug-debugger.[ch]: New files.  Moved all code which
32969         interacts with the Mono Debugger here.
32970
32971 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32972
32973         * domain.c (mono_init): initialize mono_defaults.monitor_class
32974
32975 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32976
32977         * reflection.c (method_encode_code): Add a spicy exception to help
32978         future compiler authors.
32979
32980 2003-04-21  Martin Baulig  <martin@ximian.com>
32981
32982         * icall.c
32983         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32984         Make this work with relative pathnames; g_filename_to_uri() needs
32985         an absolute filename.
32986
32987 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32988
32989         * icall.c: Track name changes in Object and ValueType.
32990
32991 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32992
32993         * metadata.c (mono_type_stack_size): size should be a multiple of
32994         sizeof (gpointer)
32995
32996 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32997
32998         * gc.c:
32999         (internal_domain_finalize): moved into mono_domain_finalize. No need
33000         to create another thread because the finalizers will be run in the
33001         finalizer thread.
33002         
33003         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
33004         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
33005         to be run (MS does this too).
33006
33007 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
33008
33009         * object.c (mono_class_compute_gc_descriptor): Update comment.
33010
33011         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
33012
33013         * image.h: Add synchronized wrapper cache.
33014
33015         * image.c (do_mono_image_open): Initialize cache.
33016
33017         * reflection.c (create_dynamic_mono_image): Initialize cache.
33018
33019 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33020
33021         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
33022         ves_icall_System_Buffer_ByteLengthInternal.
33023
33024 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
33025
33026         * reflection.c: setup klass->nested_in earlier. Allow
33027         a dash in the assembly name.
33028
33029 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
33030
33031         * metadata.c (mono_type_to_unmanaged): dont access
33032         type->data.klass for MONO_TYPE_OBJECT
33033         (mono_type_to_unmanaged): consider System.Delegate class
33034
33035 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
33036
33037         * class.c: just setup supertypes in the proper place instead of
33038         initializing the full element class for arrays.
33039
33040 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
33041
33042         * class.c: ensure the element class of arrays is initialized.
33043         Setup the supertype info for array classes, too.
33044
33045 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
33046
33047         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
33048
33049 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33050
33051         * Makefile.am: re-added -m option when running cygpath. This way,
33052         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
33053         separator.
33054         * mono-config.c: same codepath for locating mono config file for WIN32
33055         and the rest.
33056         * assembly.c: if mono_assembly_setrootdir is called, don't override
33057         the value set.
33058
33059 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33060
33061         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
33062         MONO_ASSEMBLIES variable.
33063
33064 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
33065
33066         * icall.c: added Assembly::GetNamespaces() icall.
33067
33068 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33069
33070         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
33071
33072 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
33073
33074         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
33075         * object.c: fixed bug in the construction of vtable for proxies
33076
33077 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
33078
33079         * object.c (mono_array_new): Mark mono_array_new as an icall.
33080
33081 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33082
33083         * class.c: fixed test for public method when overriding interfaces.
33084         Closes bug #40970.
33085
33086 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
33087
33088         * appdomain.h, domain.c: added mono_domain_foreach() to
33089         be able to access the currently loaded appdomains.
33090         * object.c: make string interning work across sppdomains.
33091         Mark some functions for use as icalls.
33092
33093 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
33094
33095         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
33096
33097         * reflection.h reflection.c: Allocate long living data using 
33098         GC_MALLOC_ATOMIC so the collector does not need to scan it.
33099
33100         * reflection.c: Double the allocation size in streams instead of
33101         increasing it, to prevent unneccesary copying on large assemblies.
33102         
33103         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
33104         creation if the assembly does not have the Run flag set.
33105
33106 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
33107
33108         * class.h: avoid the C++ keywords in header files (Jerome Laban
33109         spotted and fixed this).
33110
33111 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33112
33113         * object.c:
33114         (mono_unhandled_exception): fill in the arguments for the
33115         UnhandledException event. Only trigger that event for the default
33116         domain (as MS does).
33117
33118 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
33119
33120         * object.c: Improve typed allocation stuff based on suggestions from
33121         Paolo. Also turn it on if the GC library supports it.
33122
33123 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33124
33125         * object.c object.h class.h: Added experimental typed allocation
33126         facility using the interfaces in gc_gcj.h.
33127
33128         * os/gc_wrapper.h: Added new include files.
33129         
33130 2003-04-03  Martin Baulig  <martin@ximian.com>
33131
33132         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
33133         which is not yet enabled by default.
33134
33135         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
33136         functions.
33137         (mono_gc_lock, mono_gc_unlock): New static functions.
33138
33139         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
33140         functions; stop/start the world for the garbage collector.  This
33141         is using the windows API; we need to complete the SuspendThread()/
33142         ResumeThread() implementation in the io-layer to make this work on Unix.
33143         (mono_gc_push_all_stacks): New public function; tells the garbage
33144         collector about the stack pointers from all managed threads.
33145
33146 2003-04-03  Martin Baulig  <martin@ximian.com>
33147
33148         * object.h (MonoThread): Added `gpointer stack_ptr'.
33149
33150         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
33151
33152 2003-04-03  Martin Baulig  <martin@ximian.com>
33153
33154         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
33155
33156 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33157
33158         * reflection.c (typebuilder_setup_fields): Initialize field.first and
33159         field.last.
33160
33161 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
33162
33163         * loader.c (mono_lookup_internal_call): Report the corlib that is
33164         out of sync.
33165
33166 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
33167
33168         * icall.c (ves_icall_type_GetTypeCode): fixed check for
33169         System.DBNull (it's class not valuetype).
33170
33171 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
33172
33173         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
33174         if the array method was already assigned a token (fixes bug#40646).
33175
33176 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
33177
33178         * reflection.c (mono_reflection_get_type): Attempt type resolve even
33179         if no assembly is given.
33180
33181 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
33182
33183         * metadata.h: Added the new tables.
33184
33185         * row-indexes.h: Added definitions for new tables.
33186
33187         * metadata.c: Add schemas for new tables, and add support for
33188         computing the sizes of them.
33189
33190         * class.c: Update for handling the new type cases.
33191
33192 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
33193
33194         * metadata.h (MONO_TYPE_IS_VOID): new macro
33195
33196 2003-03-31  Martin Baulig  <martin@ximian.com>
33197
33198         * threads.h (MonoThreadCallbacks): Added `thread_created'.
33199
33200         * threads.c (mono_thread_new_init): Call `thread_created' in the
33201         mono_thread_callbacks.
33202
33203 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
33204
33205         * loader.h: added marshalbyrefobject_class to mono_defaults
33206         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
33207         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
33208           generation of output parameters.
33209           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
33210         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
33211           contextbound and the target object belongs to the context of the caller.
33212         * object.h: added context and unwrapped_server variables in MonoRealProxy.
33213         * object.c: Implemented support for interfaces and abstract classes
33214           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
33215           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
33216
33217 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
33218
33219         * class.h class.c (mono_class_is_subclass_of): New function.
33220         
33221         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
33222         routines for most common case (calls from ArrayList::ToArray).
33223
33224         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
33225         routine so programs which call Environment::Exit() can be profiled.
33226
33227         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33228         Added MONO_ARCH_SAVE_REGS.
33229
33230         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33231
33232 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33233
33234         * blob.h: Add a couple of new MonoType types definitions.
33235
33236         * tabledefs.h: Add a couple of new call convs.
33237
33238 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33239
33240         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33241         the layout of the class.
33242
33243         * reflection.c (alloc_table): double the size on overflow to avoid
33244         unnecessary copying.
33245
33246         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33247         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33248         null so it can be garbage collected.
33249         
33250 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33251
33252         * reflection.c (mono_reflection_get_type): Return the resolved type
33253         only if it is in the assembly we searched.
33254
33255         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33256
33257         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33258         method.
33259
33260 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33261
33262         * appdomain.c:
33263         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33264         the right one is 'file:///blah', but MS allows it.
33265         * assembly.c:
33266         (mono_assembly_open): allow 'file://blah'
33267
33268         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33269
33270 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33271
33272         * socket-io.c: fixes bug #40310.
33273
33274 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33275
33276         * reflection.c (mono_reflection_parse_type): handle deeply nested
33277         types correctly.
33278
33279         * reflection.c (mono_image_create_token): Use unique token values
33280         since they will be put into a hash table.
33281
33282         * class.c (mono_class_setup_vtable): If a method occurs in more than
33283         one place in the vtable, and it gets overriden, then change the
33284         other occurances too.
33285
33286         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33287         object as return type.
33288
33289 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33290
33291         * icall.c: Deleted "ToString" implementation for double and float
33292         because they are full implemented in managed code.
33293
33294 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33295
33296         * reflection.c, reflection.h: implemented and exported functions
33297         to retrieve info about custom attributes.
33298
33299 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33300
33301         * appdomain.c: moved Uri handling to assembly.c
33302         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33303         work when using a file Uri in *nix and windows.
33304
33305         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33306         GetReferencedAssemblies.
33307
33308 2003-03-18  Dick Porter  <dick@ximian.com>
33309
33310         * icall.c: Rename a couple of internal calls
33311
33312         * threads.c: Set the thread state to Stopped when a thread exits.
33313         Fixes bug 39377.
33314
33315 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33316
33317         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33318         New icall.
33319
33320         * object.c (mono_class_vtable): fix warning.
33321
33322 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33323
33324         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33325
33326         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33327         memory.
33328         (method_encode_clauses): Create exception info structures in the right
33329         order.
33330         (mono_reflection_setup_internal_class): Initialize supertypes field.
33331
33332         * class.c object.c: Handle interfaces which implement other interfaces 
33333         correctly.
33334
33335         * class.h class.c: Move the supertypes array initialization code into 
33336         a separate function so it can be used for dynamic types too. Also call
33337         it earlier, in mono_class_init(), since it can be used before the
33338         type is initialized.
33339
33340 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33341
33342         * Makefile.am:
33343         * assembly.c:
33344         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33345
33346         * appdomain.c:
33347         * appdomain.h:
33348         * marshal.c:
33349         * object.c: remove warnings.
33350
33351 2003-03-13  Martin Baulig  <martin@ximian.com>
33352
33353         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33354         (MonoDebugLexicalBlockEntry): New types.
33355
33356         * debug-mono-symfile.c
33357         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33358
33359 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33360
33361         * process.c: ret can be any non-zero value accroding to MS doc.
33362
33363 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33364
33365         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33366         fixing a warning for a miss-used prototype, would have cause
33367         random memory corruption.
33368
33369 2003-03-07  Martin Baulig  <martin@ximian.com>
33370
33371         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33372         getting really annoying ....
33373
33374 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33375
33376         * reflection.c (fixup_method): added support for array methods.
33377
33378 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33379
33380         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33381         (pointed out by Michael Adams).
33382
33383 2003-03-04  Dick Porter  <dick@ximian.com>
33384
33385         * icall.c: Temporarily reverted the Double and Single ToString()
33386         change, because it broke nunit.
33387
33388 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33389
33390         * object.h, threads.h: make include files compatible with C++
33391         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33392
33393 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33394
33395         * icall.c: Erased ToString helper functions for Double and Single.
33396         Now, that implementations ar all in managed code (Double and Single
33397         Formatters).
33398
33399 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33400
33401         * appdomain.c: Added method for initializing the default context of
33402         a domain. Added internal call for getting the default context.
33403         * appdomain.h: Added context variable in MonoDomain struct.
33404         * domain.c: mono_domain_set also sets the default context of the domain
33405         * icall.c: Mapped internal method InternalGetDefaultContext.
33406         * object.c: mono_object_get_virtual_method returns always a remoting
33407         wrapper if the object is a transparent proxy.
33408         mono_runtime_invoke_array: when creating an object by calling the
33409         constructor, if the created object is a proxy, then the constructor should
33410         be called using the a remoting wrapper.
33411
33412 2003-03-03  Dick Porter  <dick@ximian.com>
33413
33414         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33415         variable so it compiles on solaris.  Problem spotted by
33416         Christopher Taylor <ct@cs.clemson.edu>
33417
33418 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33419
33420         * appdomain.c:
33421         (get_info_from_assembly_name): don't leak value.
33422
33423         * icall.c:
33424         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33425         result.
33426
33427 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33428
33429         * assembly.c: export mono_image_load_references ().
33430         * class.c: handle function pointers. mono_class_from_name() now
33431         supports nested type names directly.
33432
33433 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33434
33435         * reflection.h reflection.c: Encode already created dynamic methods 
33436         and fields correctly as a DEF instead of a REF.
33437
33438         * reflection.c: Get rid of the force_ref argument to 
33439         mono_image_typedef_or_ref since it was wrong in the first place.
33440
33441         * string-icalls.c: add error checking to string constructors according
33442         to the MSDN docs.
33443
33444         * reflection.c: Emit types in the order their TypeBuilders were 
33445         created. Previously, a new table index was assigned to each type before
33446         the tables were emitted. This was wrong because the signature blob
33447         might already refer to a type by its original table index.
33448
33449 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33450
33451         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33452         change.
33453         
33454 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33455
33456         * Makefile.am: make assemblies dir have \ instead of / on windows.
33457
33458 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33459
33460         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33461         iterate over the NESTEDCLASS table using a linear search since the
33462         table is not guaranteed to be sorted by the secondary key.
33463
33464         * class.c (mono_class_create_from_typedef): fixed up call to
33465         mono_metadata_nesting_typedef.
33466         
33467 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33468
33469         * marshal.c (mono_string_to_byvalstr): clear the memory as
33470         suggested by Jerome Laban <jlaban@wanadoo.fr>
33471
33472 2003-02-26  Dick Porter  <dick@ximian.com>
33473
33474         * process.c: Cope with padding in .rsrc blocks
33475
33476 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33477
33478         * metadata.h: reverted the filter_len change, it breaks reflection
33479         
33480 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33481
33482         * metadata.h: added a new field to store the filter_len
33483         
33484
33485 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33486
33487         * reflection.c: handle custom attributes for types and members
33488         created with Reflection.Emit (bug#38422).
33489
33490 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33491
33492         * reflection.c: define RTSpecialName automatically for constructors for
33493         compatibility with MS.NET.
33494
33495         * reflection.c (mono_reflection_create_runtime_class): initialize
33496         nested_in field of dynamically created classes.
33497
33498 2003-02-22  Martin Baulig  <martin@ximian.com>
33499
33500         * debug-mono-symfile.h: Incremented version number.
33501
33502 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33503
33504         * object.h icall.c process.c: fix warnings.
33505
33506 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33507
33508         * appdomain.h appdomain.c:
33509         (mono_domain_try_type_resolve): split the 
33510         name_or_tb argument into a name and a tb argument.
33511         (mono_domain_has_type_resolve): new function to check whenever the
33512         application has registered a TypeResolve event handler.
33513         
33514         * icall.c reflection.h reflection.c: move the type resolve logic into
33515         mono_reflection_get_type () so it will be invoked when 
33516         Assembly::GetType () is called.
33517
33518         * reflection.c:
33519         (mono_reflection_get_type): renamed to get_type_internal.
33520         (mono_reflection_get_type): fixed type name generation so it works 
33521         for nested types too.
33522         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33523         costly type name generation if there is no resolve event handler.
33524
33525 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33526
33527         * class.c, image.c: load exported types from file references.
33528
33529 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33530
33531         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33532           used to cache the managed methods used to create proxies and make 
33533           remote invocation of methods.
33534         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33535           to be remotely created.
33536         * object.c: Modified the method mono_class_vtable(). It now initializes 
33537           the remote flag of the vtable. Modified mono_object_new_specific(), 
33538           so now it checks the remote flag.
33539         * icall.c: Added a couple of internal methods, one for enabling instance 
33540           creation interception for a type, and one for creating objects bypassing
33541           the remote check.
33542
33543 2003-02-18  Martin Baulig  <martin@ximian.com>
33544
33545         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33546         New interncall to get a method's metadata token.
33547
33548         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33549         New interncall for the debugger.
33550
33551 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33552
33553         * class.c (mono_class_setup_vtable): allocate supertype array
33554
33555 2003-02-18  Martin Baulig  <martin@ximian.com>
33556
33557         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33558
33559 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33560
33561         * reflection.c:
33562         (assembly_name_to_aname): jump over unknown properties (i've found
33563         something like: 'type, assembly, version=xxx, custom=null, public...',
33564         so now will ignore custom=null and still get the rest of the values).
33565
33566 2003-02-17  Dick Porter  <dick@ximian.com>
33567
33568         * threads.c: Have Thread.Start() wait for a semaphore to signal
33569         that the thread has set up all its local data.  This fixes bug
33570         34323, where Abort() raced the new thread's TLS data.
33571
33572         Also removes the handle_store() call from start_wrapper, because
33573         threads are now always created suspended and there is no longer a
33574         race between the parent and child threads to store the info.
33575
33576 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33577
33578         * image.c: explain the #- heap issue in a message, hopefully
33579         avoiding FAQs on mono-list.
33580
33581 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33582
33583         * icall.c:
33584         (GetEntryAssembly): if the domain has not invoked
33585         AppDomain.ExecuteAssembly yet, return the assembly of the default
33586         AppDomain.
33587
33588 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33589
33590         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33591
33592 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33593
33594         * metadata.c, reflection.c: simple speedup to type hash
33595         and equals code.
33596
33597 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33598
33599         * image.c, image.h, class.c, assembly.c: move module loading
33600         to MonoImage. When loading metadata, consider alignemnet from
33601         the start of metadata, not from the metadata address in memory.
33602
33603 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33604
33605         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33606         AssemblyBuilder objects. Factored out custom attribute creation into
33607         a separate function.
33608         (create_custom_attr): new function to create custom attributes.
33609
33610 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33611
33612         * Makefile.am: Got tired of typing the full pathname to pedump.
33613         Until there is another option, am installing this.
33614
33615 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33616
33617         * class.c (class_compute_field_layout): always set field->parent 
33618         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33619
33620 2003-02-11  Dick Porter  <dick@ximian.com>
33621
33622         * threads-types.h:
33623         * monitor.c: Rewrote Monitor, making lock much faster and
33624         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33625         creates them as needed.
33626
33627         * exception.c: Added SynchronizationLockException
33628
33629         * threads.c: Deleted old Monitor implementation.  The new one is
33630         in a new file.
33631
33632 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33633
33634         * class.c: handled TypedReference type code. Set the correct size for
33635         class data. Setup interface_offsets for interface classes, too.
33636
33637 2003-02-09  Martin Baulig  <martin@ximian.com>
33638
33639         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33640
33641 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33642
33643         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33644         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33645         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33646         * verify.c: check for code that runs after the end of the method.
33647
33648 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33649
33650         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33651         "System.Math::Round2".
33652         * sysmath.h: Added Floor, Round and Round2 definitions.
33653         * sysmath.c: Modified certain functions that were not 100% compliant
33654         with MS.NET (math precision) and added the implementation of Floor,
33655         Round and Round2.
33656
33657 2003-02-07  Martin Baulig  <martin@ximian.com>
33658
33659         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33660
33661 2003-02-07  Martin Baulig  <martin@ximian.com>
33662
33663         * debug-mono-symfile.c: Reflected latest symwriter changes.
33664         (mono_debug_create_mono_symbol_file): Removed.
33665         (mono_debug_open_mono_symbol_file): Take an argument which
33666         specifies whether to create a dynamic symbol file.
33667
33668 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33669
33670         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33671
33672 2003-02-05  Martin Baulig  <martin@ximian.com>
33673
33674         * reflection.c (mono_image_build_metadata): Make this public,
33675         protect it against being called multiple times, don't create
33676         resources and don't build the compressed metadata here.
33677         (mono_image_create_pefile): Do this here.
33678
33679         * icall.c
33680         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33681
33682 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33683
33684         * socket-io.c: fixed bug #36322.
33685
33686 2003-02-06  Piers Haken <piersh@friskit.com>
33687
33688         * appdomain.[ch]:
33689         * class.h:
33690         * debug-mono-symfile.c:
33691         * icall.c:
33692         * loader.c:
33693         * mono-config.c:
33694         * monosn.c:
33695         * reflection.c:
33696         * socket-io.c: warning cleanups
33697
33698 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33699
33700         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33701         function. works like remoting invoke, but does a check for the Proxy first.
33702
33703 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33704
33705         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33706
33707 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33708
33709         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33710         array of pointers.
33711         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33712         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33713
33714         * object.c (mono_store_remote_field_new): used by the new jit
33715         instead of mono_store_remote_field
33716         (mono_load_remote_field_new): used by the new jit
33717         instead of mono_load_remote_field
33718
33719 2003-02-05  Patrik Torstensson
33720
33721         * appdomain.c: changed unload to take the domain id instead
33722         of domain
33723         
33724         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33725
33726
33727 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33728
33729         * appdomain.c: don't look for assemblies in ApplicationBase if
33730         PrivateBinPathProbe is set.
33731
33732 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33733
33734         * object.c: make the first argument in main_args contain the absolute
33735         path to the assembly. Fixes bug #37511.
33736
33737 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33738
33739         * icall.c: get correct UTC offset for countries not using daylight
33740         time saving. Fixes bug #30030.
33741
33742 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33743
33744         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33745         and 1 are the family).
33746
33747 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33748
33749         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33750
33751         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33752
33753 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33754
33755         * reflection.c: added support for SignatureHelper tokens, which is
33756         needed by the Calli opcode.
33757
33758         * reflection.h: track changes to SignatureHelper class.
33759
33760         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33761
33762 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33763
33764         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33765
33766 2003-02-03  Patrik Torstensson
33767         * appdomain.[c|h], domain.c : 
33768          - Added support for getting a domain via domain id
33769          - Support for setting and getting domain from System.AppDomain 
33770            (used in cross appdomain channel)
33771          - Added support for get/set for a MonoAppContext on a thread 
33772            (Context class in System.Runtime.Remoting.Contexts),
33773          - Removed hack in Get/SetData and ExecuteAssembly.
33774         
33775         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33776         the managed world to get control when a proxy is created.
33777
33778         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33779         
33780 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33781
33782         * icall.c
33783         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33784         Populate the codebase field as well.
33785
33786 2003-02-02  Martin Baulig  <martin@ximian.com>
33787
33788         * debug-mono-symfile.c
33789         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33790         (mono_debug_symfile_add_method): Allow interncalls.
33791
33792 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33793
33794         * icall.c: throw parse exception if strtod fails or the string is empty.
33795
33796 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33797
33798         * marshal.c: handle object type separately from defined
33799         class types.
33800
33801 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33802
33803         * marshal.c: handle NATIVE_LPSTR for strings when it's
33804         explicitly specified.
33805
33806 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33807
33808         * reflection.c, reflection.h, icall.c: setup the reflection
33809         handle cache for ModuleBuilders and AssemblyBuilders.
33810
33811 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33812
33813         * reflection.c (reflection_methodbuilder_to_mono_method): set
33814         pinvoke flag
33815
33816 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33817
33818         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33819
33820 2003-01-29  Dick Porter  <dick@ximian.com>
33821
33822         * threads.c: No need for the fake_thread kludge now that Thread
33823         doesn't run a class constructor
33824         
33825 2003-01-29  Dick Porter  <dick@ximian.com>
33826
33827         * threads.c: Use g_direct_hash instead of the rather bogus
33828         g_int_hash
33829
33830 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33831
33832         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33833         (fix pinvoke12.exe)
33834         (mono_marshal_get_struct_to_ptr): generate valid IL code
33835         (mono_marshal_get_ptr_to_struct): generate valid IL code
33836         (*): correctly set sig->pinvoke, we need to memdup the signature
33837         to do that
33838
33839 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33840
33841         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33842         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33843
33844 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33845
33846         * profiler.c: provide more callers information.
33847
33848 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33849
33850         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33851
33852         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33853
33854         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33855
33856 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33857
33858         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33859         exception instead of going into an infinite loop on dates which it 
33860         can't yet handle.
33861
33862         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33863         out-of-range exception if needed.
33864
33865         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33866         an implementation for an interface method and to override an inherited
33867         method at the same time. 
33868         Imagine a scenario when a virtual method is used to override a
33869         virtual abstract method in a parent class, and this same method 
33870         provides an implementation for an method inherited from an interface. 
33871         In this case, the interface resolution code will set im->slot, which 
33872         means that the virtual method override pass will skip this method 
33873         which means a pointer to the abstract method inherited from the parent
33874         will remain in the vtable of this non-abstract class.
33875
33876         * class.c: (mono_class_setup_vtable): continue search for a real 
33877         method if only an abstract method is found.     
33878
33879 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33880
33881         * reflection.c: add size to encoding for ByValStr and ByValArray
33882         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33883
33884 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33885
33886         * class.c (mono_class_setup_vtable): pass the override info as an
33887         argument.
33888
33889         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33890         correctly.
33891         
33892         * reflection.c (ensure_runtime_vtable); add support for method 
33893         overrides.
33894         
33895 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33896
33897         * reflection.c (resolution_scope_from_image): Hack to work to work with
33898         dynamic assemblies.
33899
33900         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33901         added a 'force_ref' argument to force this function to allways return 
33902         a TypeRef. This is needed by mono_image_get_memberref_token ().
33903         
33904 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33905
33906         * reflection.c (mono_image_get_type_info): interfaces really don't have
33907         a parent.
33908
33909         * reflection.c (mono_image_basic_init): fill out missing fields of
33910         image structure.
33911
33912         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33913         dynamic assemblies. This is required so dynamic assemblies show up in
33914         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33915         Type::GetType() etc. This is consistent with MS behaviour.
33916
33917         * image.c image.h reflection.c: add newly created classes to the name 
33918         cache so mono_class_get () will find them.      
33919
33920 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33921
33922         First part of changes to get IKVM.NET running under mono.
33923         
33924         * appdomain.h, appdomain.c: added new function 
33925         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33926         This function will call AppDomain::DoTypeResolve to do the actual work.
33927
33928         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33929         moved existing code dealing with dynamic tokens to a new function 
33930         called mono_reflection_lookup_dynamic_token (). This function will 
33931         raise TypeResolve events when appropriate. Since reflection.c is not 
33932         part of libmetadata, a new hook function called 
33933         mono_lookup_dynamic_token() is added to class.c which will call this.
33934
33935         * assembly.h assembly.c: make the invoke_load_hook function public,
33936         so it can be called for dynamic assemblies.
33937
33938         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33939
33940         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33941         type isn't found.
33942
33943         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33944         MonoGHashTable, since it contains pointers to objects which the GC 
33945         needs to track.
33946
33947         * assembly.c (search_loaded): remove unused variable.
33948         
33949 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33950
33951         * object.c: fixed issue exposed by gcc-generated IL programs
33952         that use RVA data for pointers.
33953
33954 2003-01-25  Martin Baulig  <martin@ximian.com>
33955
33956         * threads.c (start_wrapper): Moved the initialization of
33957         `start_func' above the mono_new_thread_init() call to which we
33958         pass it as argument.
33959
33960 2003-01-24  Martin Baulig  <martin@ximian.com>
33961
33962         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33963         the MonoThread pointer.
33964
33965 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33966
33967         * icall.c: Rename `PowImpl' to Pow.
33968
33969 2003-01-23  Dick Porter  <dick@ximian.com>
33970
33971         * threads.c (start_wrapper): Create a Thread object if needed, so
33972         the Main() thread can do the class initialisation in a subthread
33973         that has been set up to allow managed code execution.
33974
33975         Pass the thread ID instead of the MonoThread pointer to the thread
33976         start and attach callbacks.  This change is required, because the
33977         jit thread start callback must be called _before_ the Thread
33978         object can be created.
33979         
33980         (mono_thread_init): Removed much object creation code that is no
33981         longer needed.  No managed code is called from here now.
33982
33983         * object.c (mono_runtime_exec_managed_code): Create a subthread
33984         for Main, and call back to the runtime to use it.
33985         Set the exit code when Main exits.
33986
33987         * gc.c: Make sure domain finalisation happens in a subthread.
33988         Re-enable threaded GC, fixing bug 31333 (again).
33989
33990         * environment.c: System.Environment internall calls (so far just
33991         ExitCode is here, the others are still in icall.c)
33992
33993         * appdomain.c (mono_runtime_cleanup): All threads running managed
33994         code should have finished before mono_runtime_cleanup() is
33995         reached, so no need to clean up threads.
33996
33997 2003-01-22  Martin Baulig  <martin@ximian.com>
33998
33999         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
34000         `gpointer func' arguments.      
34001         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
34002         but added `MonoThread *thread' argument.
34003         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
34004
34005         * threads.c (mono_new_thread_init): Added `gpointer func' argument
34006         and pass it to the mono_thread_start_cb callback.
34007         (mono_install_thread_callbacks): New public function to install a
34008         set of callbacks which are set by the debugger.
34009         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
34010
34011 2003-01-22  Martin Baulig  <martin@ximian.com>
34012
34013         * Makefile.am: Install debug-mono-symfile.h.
34014
34015 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
34016
34017         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
34018
34019 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
34020
34021         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
34022         * class.c (mono_ptr_class_get): correctly set access levels of pointers
34023         (mono_array_class_get): correctly set access levels of arrays
34024
34025 2003-01-20      Patrik Torstensson
34026         * image.h (MonoAssemblyName): changed major, minor, build, revision
34027         from signed to unsigned.
34028
34029 2003-01-20  sean kasun <skasun@azstarnet.com>
34030
34031         * reflection.c (load_cattr_value): Now this handles
34032         MONO_TYPE_SZARRAY.  Fixes bug #35629
34033
34034 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
34035
34036         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
34037         integer value
34038
34039 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34040
34041         * decimal.c: fixed bug #26056.
34042
34043 2003-01-17  Martin Baulig  <martin@ximian.com>
34044
34045         * gc.c: Raise an ExecutionEngineException instead of using g_error().
34046
34047 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34048
34049         * exception.[ch]:
34050         (mono_get_exception_type_initialization): new function.
34051
34052         * object.c: throw a TypeInitializationException when an exception is
34053         thrown invoking the class constructor.
34054
34055 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34056
34057         * reflection.c: fixed attribute reading.
34058
34059 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34060
34061         * icall.c:
34062         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
34063         provided, look for the type in the calling assembly and then in
34064         mscorlib; if the assembly name is provided, only try that one.
34065
34066 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
34067
34068         * object.c: register the vtable before there is a chance it's
34069         queried again recursively.
34070
34071 2003-01-13  Duncan Mak  <duncan@ximian.com>
34072
34073         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
34074         gc-internal.h. 
34075         
34076 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
34077
34078         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
34079
34080 2003-01-11  Martin Baulig  <martin@ximian.com>
34081
34082         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
34083         this to 20 for the release.
34084
34085 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
34086
34087         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
34088
34089         * loader.c (mono_method_get_marshal_info): bug fix
34090
34091         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
34092         structures with explicit layout
34093
34094 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34095
34096         * profiler.c: made the output more readable (and sorted). 
34097         Added caller information for the allocation profiler.
34098
34099 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
34100
34101         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
34102
34103 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34104
34105         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
34106         to get value types.
34107         
34108 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
34109
34110         * object.c, profiler.h, profiler.c, profiler-private.h:
34111         Added object allocation profiler.
34112
34113 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
34114
34115         * reflection.h, reflection.c: handle global methods.
34116         Compress blob entries.
34117
34118 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
34119
34120         * marshal.c: fix compilation.
34121
34122 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
34123
34124         * loader.c (mono_method_get_marshal_info): impl.
34125
34126         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
34127
34128 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34129
34130         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
34131         for reference types.
34132
34133 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
34134
34135         * loader.c: fixed off by one error in loaded parameter names.
34136
34137 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
34138
34139         * marshal.c (mono_marshal_get_icall_wrapper): like
34140         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
34141         instead of a MonoMethod.
34142
34143 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34144
34145         * decimal.c: fixed bug #36537.
34146
34147 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
34148
34149         * marshal.c: throw a missing method exception if a
34150         P/Invoke method is not found.
34151
34152 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34153
34154         * icall.c: allow a null this for constructors.
34155
34156 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
34157
34158         * icall.c: raise the proper exceptions if the arguments to the
34159         internal Invoke are incorrect.
34160
34161 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
34162
34163         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
34164
34165 2003-01-03  Martin Baulig  <martin@ximian.com>
34166
34167         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34168
34169 2002-12-31  Martin Baulig  <martin@ximian.com>
34170
34171         * debug-mono-symfile.c: Completely rewrote the type section.
34172         Instead of using individual malloc()ed fields, we use one big
34173         continuous memory area and offsets into this area.
34174         See the comments in the source code for details.
34175
34176 2002-12-30  Martin Baulig  <martin@ximian.com>
34177
34178         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
34179
34180 2002-12-30  Martin Baulig  <martin@ximian.com>
34181
34182         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
34183         line number table in this data blob instead of using an external
34184         pointer.
34185
34186 2002-12-28  Martin Baulig  <martin@ximian.com>
34187
34188         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34189
34190 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
34191
34192         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
34193         as a boxed return type.
34194
34195 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
34196
34197         * appdomain.c
34198         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
34199         g_build_filename to properly get separators on the filename created.
34200
34201         * object.h: Small change, introduce MonoMarshalByRefObject to
34202         track the layout of that structure in the C# universe as we make
34203         changes there.
34204
34205 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
34206
34207         * object.c: removed assert to allow static fields on interfaces.
34208         * loader.c: a TypeSpec may be used for any type, not just arrays.
34209
34210 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34211
34212         * class.c, class.h: added mono_class_array_element_size ().
34213         Ignore static methods in interfaces.
34214
34215 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34216
34217         * threads.c: fixed the build under cygwin.
34218
34219 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34220
34221         * reflection.c: handle nullref constants. Allocate keys for
34222         reflection handles with the GC.
34223
34224 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34225
34226         * threads.c, threads.h: added mono_thread_get_abort_signal()
34227         to get a suitable signal for thread abort.
34228
34229 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34230
34231         * metadata.c: fix handling of ExportedType table.
34232
34233 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34234
34235         * icall.c: added WriteWindowsDebugString internal call.
34236
34237 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34238
34239         * reflection.h: added fields to match C# implementation.
34240
34241 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34242
34243         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34244
34245 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34246
34247         * gc.h, gc-internal.h: Rename header for GC internal calls to
34248         gc-internal.h from gc.h as to not clash with Boehm GC having its
34249         header installed as <gc.h> in outside include paths.
34250         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34251         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34252
34253 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34254
34255         * icall.c: assign minor, build and revision in FillName.
34256
34257 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34258
34259         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34260         Added support for running code generated by Reflection.Emit.
34261
34262 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34263
34264         * appdomain.c: check for NULL argument in LoadFrom.
34265
34266 2002-12-10  Dick Porter  <dick@ximian.com>
34267
34268         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34269
34270 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34271
34272         * appdomain.c: fix buglet when building exe file name.  Handle full
34273         assembly name (needed after latest changes to AssemblyName).
34274         * image.c:
34275         (mono_image_close): free some hashtables.
34276
34277 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34278
34279         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34280         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34281         on some systems (redhat 7.3) 
34282
34283 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34284
34285         * threads.c: delete the critical section of a sync block,
34286         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34287
34288 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34289
34290         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34291
34292 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34293
34294         * appdomain.[ch]: handle the assembly preload event to try loading the
34295         assemblies using the paths we have in the current domain.
34296
34297         * assembly.[ch]: created an assembly preload hook that is called to try
34298         loading the assembly by other means that the ones provided here.
34299
34300         * domain.c: initialize the domain search path.
34301
34302         From now on, assemblies (TODO: except corlib and System) are loaded
34303         according to these rules when using mono_assembly_load ():
34304
34305                 1. It tries to load the assembly from the ApplicationBase
34306                 of the current domain appending .dll and .exe (TODO: have to
34307                 try loading from name/name.dll and name/name.exe).
34308
34309                 2. It tries the search path specified in PrivateBinPath for the
34310                 current domain (if any).
34311
34312                 3. Previous behavior.
34313
34314 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34315
34316         * icall.c: implemented GetInterfaceMap() related icall.
34317         * domain.c, loader.h: load MethodInfo in mono_defaults.
34318
34319 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34320
34321         * gc.c: disable the finalizer thread for now, untill all the issues
34322         with it are resolved.
34323
34324 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34325
34326         * string-icalls.c: handle embedded nulls in string ctor when the
34327         length is specified.
34328
34329 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34330
34331         * class.c: look for explicit interface implementation in parent
34332         classes, too.
34333
34334 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34335
34336         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34337
34338 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34339
34340         * gc.c: protect handles with a critical section.
34341
34342 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34343
34344         * icall.c:
34345         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34346         parameters. If no assembly specified, try getting the type from all
34347         the assemblies in the current domain, else, load the assembly and get
34348         the type from it.
34349
34350 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34351
34352         * marshal.c: applied patch from Aleksey Demakov that fixes
34353         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34354
34355 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34356
34357         * icall.c: fixed get_location.
34358
34359 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34360
34361         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34362         declarations to make it work with older gcc. 
34363
34364         * loader.c (mono_get_method): set signature->pinvoke for native calls
34365
34366 2002-11-20  Dick Porter  <dick@ximian.com>
34367
34368         * threads.c (mono_thread_init): Set the main thread's handle
34369
34370 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34371
34372         * gc.c: allow compilation without GC support. Changed to match the
34373         mono coding style.
34374
34375 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34376
34377         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34378
34379 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34380
34381         * reflection.c: set a public key token on the core assemblies.
34382
34383 2002-11-18  Dick Porter  <dick@ximian.com>
34384
34385         * threads.c: Split out some thread initialisation so that other
34386         files can set the start callback function.
34387
34388         * gc.c: Run finalisers in a separate thread, to avoid stack
34389         overflow.  Fixes bug 31333.
34390
34391         * appdomain.c: Set up GC finalisation thread.
34392
34393         * reflection.c: 
34394         * object.c: 
34395         * domain.c: Use gc.h macros for GC_malloc
34396         
34397 2002-11-15  Dick Porter  <dick@ximian.com>
34398
34399         * threadpool.c: 
34400         * threads.c:
34401         * appdomain.c: Removed mono_runtime_init_with_attach(),
34402         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34403         merging the extra parameter with the existing function.  Removed
34404         unneeded code in mono_thread_attach().
34405
34406 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34407
34408         * image.c (mono_image_loaded_by_guid): a method to get loaded
34409         images by guid. 
34410         (load_metadata_ptrs): we store the guid as string.
34411
34412 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34413
34414         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34415
34416         * metadata.c (mono_guid_to_string): imported method form Zoltan
34417         Varga (slightly modified)
34418
34419         * assembly.c (mono_assembly_open): load precompiled code
34420
34421         * loader.h (MonoMethod): we store the method token for use in the
34422         aot compiler. 
34423
34424 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34425
34426         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34427         the hook function called when an assembly is loaded.
34428         
34429         * domain.c: Modified file.
34430         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34431
34432         Fixes bug #33196.
34433
34434 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34435
34436         * reflection.c: Map PEFileKind to the value expected by the WinNT
34437         image loader. 
34438
34439 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34440
34441         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34442         Read until the buffer is filled completely.
34443
34444 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34445
34446         * icall.c: implemented MonoType.InternalGetEvent ().
34447
34448 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34449
34450         * appdomain.c: implemented InitAppDomainSetup. Delayed
34451         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34452         the entry_assembly.
34453
34454         * assembly.c: base_dir is now an absolute path ending with
34455         G_DIR_SEPARATOR.
34456
34457         * icall.c: modified get_location according to the above changes.
34458
34459         * object.c: init AppDomain.SetupInformation for the default domain after
34460         we have the entry assembly.
34461
34462         * domain.c: when unloading a domain, setup = NULL.
34463
34464 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34465
34466         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34467
34468 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34469
34470         * object.h, object.c: introduced mono_object_get_virtual_method ()
34471         to lookup the method invoked on an object when a callvirt is done on
34472         a method.
34473         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34474
34475 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34476
34477         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34478         current domain when loaded an assembly and failed to load it.
34479
34480         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34481
34482 2002-10-31  Dick Porter  <dick@ximian.com>
34483
34484         * icall.c: 
34485         * file-io.h: 
34486         * file-io.c: Return the error status in a parameter, as the
34487         GetLastError() value has long since been blown away if we try and
34488         look it up in a subsequent internal call invocation.  Delete the
34489         GetLastError() internal call, because it's useless.
34490
34491 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34492
34493         * class.[ch]: added cast_class to fix bug 29517
34494
34495 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34496
34497         * marshal.c: create valid IL code in the filter clause:
34498         the new JIT is less forgiving:-)
34499
34500 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34501
34502         * icall.c: removed get_property internal call.
34503
34504 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34505
34506         * appdomain.h domain.c: Added an ID to appdomains.
34507         
34508         * threads.c threads.h icall.c: Implement icall
34509         Thread:GetDomainID(), and remove unused icall 
34510         CurrentThreadDomain_internal.
34511
34512 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34513
34514         * icall.c: Don't recurse through the base types in GetConstructor.
34515         Fixes bug #32063. 
34516
34517 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34518
34519         * mempool.h, mempool.c: added mono_mempool_empty() and
34520         mono_mempool_stats().
34521
34522 2002-10-23  Dick Porter  <dick@ximian.com>
34523
34524         * file-io.c: 
34525         * file-io.h: 
34526         * icall.c: Added MonoIO.GetFileType internal call
34527
34528 2002-10-17  Dick Porter  <dick@ximian.com>
34529
34530         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34531         delegate semaphore before waiting for all threads to finish,
34532         because new threads can also call async delegates.  Fixes bug
34533         32004.
34534
34535         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34536         of 3 seconds, in case another async job is queued.  (This part is
34537         needed because the bug fix reintroduced the 3s exit lag.)  This
34538         makes the mono_runtime_shutdown flag superfluous.
34539
34540 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34541
34542         * reflection.c: include ehader size in method section headers.
34543         Really check for suplicated modules entries.
34544
34545 2002-10-17  Martin Baulig  <martin@gnome.org>
34546
34547         * debug-mono-symfile.c: Added back support for locals.
34548
34549 2002-10-14  Martin Baulig  <martin@gnome.org>
34550
34551         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34552         MONO_TYPE_VOID.
34553
34554 2002-10-14  Martin Baulig  <martin@gnome.org>
34555
34556         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34557         mono_class_get() instead of looking in the class cache. 
34558
34559 2002-10-13  Martin Baulig  <martin@gnome.org>
34560
34561         * debug-mono-symfile.c: Set version number to 28, include the
34562         signature in method names.
34563
34564 2002-10-13  Martin Baulig  <martin@gnome.org>
34565
34566         * debug-mono-symfile.h: Set version number to 27.
34567
34568 2002-10-11  Martin Baulig  <martin@gnome.org>
34569
34570         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34571
34572 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34573
34574         * metadata.c, metadata.h: added helper function to allocate signatures.
34575
34576 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34577
34578         * icall.c: added internal call to get the location of machine.config.
34579
34580 2002-10-08  Martin Baulig  <martin@gnome.org>
34581
34582         * debug-mono-symfile.c: Ignore classes with a pending init for the
34583         moment.
34584
34585 2002-10-03  Dick Porter  <dick@ximian.com>
34586
34587         * threads.c: Freebsd pthread_t is a pointer
34588
34589 2002-10-03  Dick Porter  <dick@ximian.com>
34590
34591         * socket-io.c: Implemented GetHostName_internal
34592
34593 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34594
34595         * mono-config.c:
34596         (mono_config_parse_file): don't leak the text.
34597
34598 2002-10-02  Martin Baulig  <martin@gnome.org>
34599
34600         * debug-mono-symfile.c: Added support for methods.
34601
34602 2002-10-01  Martin Baulig  <martin@gnome.org>
34603
34604         * debug-mono-symfile.c: Don't emit methods and line numbers for
34605         the dynamic symbol file, just write the type table.  We can easily
34606         have an external helper program which creates a symbol file for an
34607         IL file.        
34608
34609 2002-10-01  Dick Porter  <dick@ximian.com>
34610
34611         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34612         Only add the handle to the cleanup array when we're about to
34613         launch the thread.  Bug 31425 deadlocked when the test was run on
34614         mono under w32.
34615
34616 2002-10-01  Martin Baulig  <martin@gnome.org>
34617
34618         * debug-mono-symfile.c: Added support for properties.
34619
34620 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34621
34622         * reflection.c: unaligned store fix from Mark Crichton
34623         <crichton@gimp.org>.
34624
34625 2002-09-27  Martin Baulig  <martin@gnome.org>
34626
34627         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34628         New interncall.
34629
34630 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34631
34632         * assembly.h, assembly.c: use a sane API to hook into the assembly
34633         loading process instead of a useless special-purpouse hack
34634         (ngen needs a hook, too, for example).
34635
34636 2002-09-27  Dick Porter  <dick@ximian.com>
34637
34638         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34639         io-layer can set up some process handle info.  Not needed on w32,
34640         but doesn't hurt either.
34641
34642         * process.c: Pass the program name in the second parameter to
34643         CreateProcess, so the path is searched.  Include the working
34644         directory. Implemented process name, process enumeration, and some
34645         process detail internal calls.
34646         
34647         * icall.c: Added internal calls for process lookup, and some
34648         process details
34649
34650 2002-09-26  Martin Baulig  <martin@gnome.org>
34651
34652         * assembly.c (mono_install_open_assembly_hook): New global
34653         function to install a function to be invoked each time a new
34654         assembly is loaded.
34655         (mono_assembly_open): Run this callback function if set.
34656
34657         * debug-mono-symfile.c: Put back line numbers for the dynamic
34658         symbol file and also record the .il file as source file.  This
34659         allows us to install the temporary symbol file as `file.dbg' just
34660         like a compiler-generated one.
34661
34662 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34663
34664         * Corrected typo in gc.c (BOHEM vs BOEHM).
34665
34666 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34667
34668         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34669         GetProperties. Also avoid calling g_slist_length in GetProperties and
34670         GetMethods.
34671
34672 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34673
34674         * reflection.c: avoid unaligned stores (bug spotted by
34675         Mark Crichton  <crichton@gimp.org>).
34676
34677 2002-09-25  Martin Baulig  <martin@gnome.org>
34678
34679         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34680         instead of guint64 for addresses and added prologue/epilogue info.
34681
34682 2002-09-25  Martin Baulig  <martin@gnome.org>
34683
34684         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34685         store line number info.  For the dynamic symbol file, we only need
34686         to provide the JIT generated dynamic line number info for the dynamic
34687         symbol file.
34688
34689 2002-09-25  Martin Baulig  <martin@gnome.org>
34690
34691         * debug-mono-symfile.h: Incremented version number.
34692
34693 2002-09-24  Martin Baulig  <martin@gnome.org>
34694
34695         * class.c (mono_debugger_class_init_func): New global function
34696         pointer variable.
34697         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34698         call it.
34699
34700         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34701         function.  This is called via the mono_debugger_class_init_func
34702         hook to add all types to the dynamic type table.
34703         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34704         from its metadata token.
34705
34706         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34707         New interncall for the debugger.
34708
34709 2002-09-24  Nick Drochak <ndrochak@gol.com>
34710
34711         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34712         before using it in case it is null.
34713         
34714 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34715
34716         * metadata.c: allow custom modifiers in local var signatures
34717         (bug spotted by Zoltan Varga).
34718
34719 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34720
34721         * class.c: deal with the <Module> class that may have a NULL vtable.
34722         Eliminate warnings.
34723
34724 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34725
34726         * image.c, image.h: more strong name helpers.
34727         * monosn.c: more work: convert pem keys to cryptoapi format.
34728
34729 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34730
34731         * string-icalls.c: speedup IndexOf.
34732
34733 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34734
34735         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34736
34737 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34738
34739         * icall.c: cleanup: use mono_object_domain ().
34740
34741 2002-09-23  Martin Baulig  <martin@gnome.org>
34742
34743         * debug-mono-symfile.c: Improved type support.
34744
34745 2002-09-22  Martin Baulig  <martin@gnome.org>
34746
34747         * debug-mono-symfile.c: Added support for reference types and strings.
34748
34749 2002-09-22  Martin Baulig  <martin@gnome.org>
34750
34751         * debug-mono-symfile.c: Started to work on the type table.
34752
34753 2002-09-21  Martin Baulig  <martin@gnome.org>
34754
34755         * debug-mono-symfile.c: Largely reworked the symbol table format.
34756         The symbol table is now incrementally updated each time a new
34757         method is added.  We're now also using our own magic and version
34758         so that you don't need to recompile all your classes if the
34759         dynamic table changes.
34760         (mono_debug_update_mono_symbol_file): Removed.
34761         (mono_debug_symfile_add_method): New function to add a method.
34762
34763 2002-09-21  Martin Baulig  <martin@gnome.org>
34764
34765         * icall.c
34766         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34767         New interncall.
34768
34769         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34770         New interncall to get a method from its metadata token.
34771
34772 2002-09-21  Martin Baulig  <martin@gnome.org>
34773
34774         * debug-mono-symfile.c: Create type table.
34775
34776 2002-09-20  Martin Baulig  <martin@gnome.org>
34777
34778         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34779
34780 2002-09-20  Martin Baulig  <martin@gnome.org>
34781
34782         * debug-mono-symfile.c: Provide information about params and locals.
34783
34784 2002-09-20  Martin Baulig  <martin@gnome.org>
34785
34786         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34787         New interncall.
34788
34789         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34790         interncall to get a method from its metadata token.
34791
34792 2002-09-20  Martin Baulig  <martin@gnome.org>
34793
34794         * debug-mono-symfile.c: Added a few checks for method->header
34795         being non-NULL.  This should never happen, but for the moment
34796         let's use a g_warning() rather than a g_assert().
34797
34798 2002-09-19  Mark Crichton  <crichton@gimp.org>
34799
34800         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34801         even if support for it isn't present.  Added an #ifdef to fix this.
34802
34803         * socket-io.c: Added checks back for Solaris support.
34804
34805 2002-09-19  Martin Baulig  <martin@gnome.org>
34806
34807         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34808         changes in the symbol file format.
34809
34810 2002-09-18  Martin Baulig  <martin@gnome.org>
34811
34812         * debug-mono-symfile.c: Set version number to 21.
34813
34814 2002-09-18  Dick Porter  <dick@ximian.com>
34815
34816         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34817         on netbsd.  Fixes bug 30051.
34818
34819 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34820
34821         * reflection.c:
34822         (set_version_from_string): little fix.
34823
34824 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34825
34826         * monosn.c, Makefile.am: added strong name utility.
34827         * reflection.h, reflection.c: implemented delayed signing,
34828         locale, version and hash id assembly attributes.
34829
34830 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34831
34832         * loader.c, metadata.c: load param attributes in signatures.
34833
34834 2002-09-16  Martin Baulig  <martin@gnome.org>
34835
34836         * debug-mono-symfile.c: Added string table with all method names.
34837
34838 2002-09-14  Martin Baulig  <martin@gnome.org>
34839
34840         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34841         fast method lookup.
34842
34843 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34844
34845         * reflection.c: record the public key token of referenced assemblies.
34846
34847 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34848
34849         * image.c, image.h: added functions to get the strong name and the
34850         public key of an assembly.
34851         * pedump.c: use them.
34852
34853 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34854
34855         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34856
34857 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34858
34859         * marshal.c (mono_marshal_get_managed_wrapper): Added
34860         MONO_TYPE_BOOLEAN 
34861
34862 2002-09-11  Martin Baulig  <martin@gnome.org>
34863
34864         * gc.c: Call GC_unregister_disappearing_link() on all links when
34865         finalizing them, this is necessary to aviod a crash in boehm's
34866         finalize handler.
34867
34868 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34869
34870         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34871         nick@chemlab.org.
34872
34873 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34874
34875         * icall.c: implemented MonoType::Module.
34876         * reflection.c, reflection.h: mono_module_get_object () from
34877         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34878
34879 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34880
34881         * icall.c: ignore overridden methods in GetMethods ().
34882         Fix for FieldInfo::SetValue().
34883         * object.c: handle float/double in runtime invoke.
34884
34885 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34886
34887         * object.c: allow a constructor to be called again on an object.
34888
34889 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34890
34891         * class.h, class.c: move field layout code to it's own function and
34892         export it. Get an interface id earlier. Move fields in MonoClass
34893         so they are more cache friendly and align the bitfields.
34894         * loader.c: temporary handle get_param_names() for a runtime method.
34895         * reflection.c, reflection.h: more code to handle runtime creation of
34896         types.
34897
34898 2002-09-09  Martin Baulig  <martin@gnome.org>
34899
34900         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34901         signature with the pinvoke field being set for the actual call.
34902
34903 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34904
34905         * icall.c: removed some unused icalls. Start of map of glib charsets
34906         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34907
34908 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34909
34910         * debug-helpers.c: break infinite loop (found and fixed by
34911         Holger Arnold <harnold@gmx.de>).
34912
34913 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34914
34915         * icall.c: target may be null in create_delegate.
34916
34917 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34918
34919         * marshal.c: handle a boolean return type.
34920
34921 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34922
34923         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34924
34925 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34926
34927         * gc.c: fix weakreferences.
34928
34929 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34930
34931         * icall.c: added icall to get default codepage.
34932
34933 2002-09-03  Dick Porter  <dick@ximian.com>
34934
34935         * threads.h: 
34936         * threads.c: Use MonoThread instead of MonoObject where
34937         apropriate.
34938
34939         Store running thread objects in a hash table, so that we have all
34940         the info to hand when waiting for them to finish
34941         (means we don't need OpenThread() any more, so mingw builds should
34942         be fully functional again.)
34943
34944         * verify.c:
34945         * object.h: Added thread ID to MonoThread
34946
34947 2002-09-03  Martin Baulig  <martin@gnome.org>
34948
34949         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34950
34951 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34952
34953         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34954
34955 2002-09-03  Martin Baulig  <martin@gnome.org>
34956
34957         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34958         argument to store the end address of the disassembled instruction.
34959
34960         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34961         here from debug-symfile.h.
34962         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34963         JIT into this struct.
34964         (MonoSymbolFile): Added `char *image_file' field.
34965         (MonoDebugGetMethodFunc): Removed.
34966         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34967         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34968         (mono_debug_find_method): New method.
34969
34970         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34971         create a full symbol file.
34972         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34973         and static symbol files.
34974         (mono_debug_find_method): The symbol file keeps an internal method hash,
34975         call this to get a MonoDebugMethodInfo from a MonoMethod.
34976
34977         * debug-symfile.[ch]: Removed.
34978
34979 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34980
34981         * image.c (do_mono_image_open): Remove linker version check.
34982
34983 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34984
34985         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34986         wrappers for instance methods.
34987         
34988 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34989
34990         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34991
34992 2002-08-28  Dick Porter  <dick@ximian.com>
34993
34994         * Makefile.am: Export HOST_CC for w32 builds
34995
34996 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34997
34998         * file-io.c process.c: MonoString are null terminated, no
34999         need for mono_string_to_utf16() anymore.
35000
35001 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35002
35003         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
35004
35005 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
35006
35007         * icall.c, reflection.h: speedup System.MonoType.
35008
35009 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35010
35011         * reflection.c: allow null as the value of a string argument in
35012         custom attributes constructors.
35013
35014 2002-08-27  Martin Baulig  <martin@gnome.org>
35015
35016         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
35017         `trampoline_address' field.
35018
35019 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
35020
35021         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
35022         check (fixes bug #29486) 
35023
35024 2002-08-27  Martin Baulig  <martin@gnome.org>
35025
35026         * debug-mono-symfile.c: Changed the file format in a way that allows us
35027         open it read-only and to use a specially malloced area for all the
35028         dynamic data.  We can now also generate a symbol file on-the-fly if we're
35029         debugging IL code and there is no MCS generated symbol file for it.
35030
35031 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35032
35033         * object.c: added a define for a good string and array
35034         creation speedup (not enabled by default because we need to deal with
35035         the synch stuff).
35036
35037 2002-08-26  Martin Baulig  <martin@gnome.org>
35038
35039         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
35040         function to create a dynamic symbol file.  This is used by the
35041         debugger to create a symbol file for IL code on-the-fly.
35042
35043 2002-08-26  Martin Baulig  <martin@gnome.org>
35044
35045         * loader.c (mono_lookup_pinvoke_call): Include the error message
35046         from g_module_error() in the error message.
35047
35048 2002-08-24  Martin Baulig  <martin@gnome.org>
35049
35050         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
35051         function to update the symbol file.  The symbol file is mmap()ed
35052         writable, but private.  This allows us to install the symbol file
35053         together with the assembly.
35054
35055 2002-08-24  Martin Baulig  <martin@gnome.org>
35056
35057         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
35058         but they can read the new symbol file format which mcs is now creating.
35059
35060         * debug-symfile.c (mono_debug_find_source_location): Moved to
35061         debug-mono-symfile.c; this is now operating on the new symbol file.
35062
35063 2002-08-23  Martin Baulig  <martin@gnome.org>
35064
35065         * debug-helpers.c (mono_method_desc_from_method): New function to get
35066         a MonoMethodDesc from a MonoMethod.
35067
35068 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
35069
35070         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
35071         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
35072
35073 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35074
35075         * string-icalls.[ch]: make helper methods static.
35076
35077 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35078
35079         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
35080         types to it and to SetValueInternal.
35081
35082         * object.c: Moved handle_enum label to its proper place. This was the
35083         f... bug! ;-)
35084
35085         This time i compiled mcs and gtk-sharp and they both work.
35086
35087 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35088
35089         * icall.c: reverted partially my previous patch until 
35090         object.c:set_value handles enums correcly.
35091
35092 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35093
35094         * icall.c:
35095         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
35096         (ves_icall_System_Environment_get_MachineName): removed warning when
35097         compiling under cygwin.
35098
35099 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35100
35101         * object.c: fixed field_get_value() for reference types.
35102
35103 2002-08-22  Dick Porter  <dick@ximian.com>
35104
35105         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
35106         Don't free a buffer while it's still needed.  Patch from Jonathan
35107         Liger <Jonathan.liger@wanadoo.fr>
35108
35109 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
35110
35111         * icall.c (ves_icall_System_Environment_get_Platform): Add new
35112         internal call.
35113
35114 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
35115
35116         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
35117         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
35118
35119         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
35120         we call unmanaged code which throws exceptions.
35121
35122 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35123
35124         * appdomain.h: added per-domain entry_assembly.
35125         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
35126         arguments.
35127         * icall.c: Assembly::GetEntryAssembly icall.
35128         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
35129         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
35130
35131 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35132
35133         * appdomain.h, gc.c: added mono_domain_finalize ().
35134
35135 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35136
35137         * object.c:
35138         (mono_print_unhandled_exception): changed g_warning by g_printerr
35139         because g_log has a 1024 characters limit (yeah, i got a big stack
35140         trace). Don't print exception name, that should be in ToString 
35141         returned string.
35142
35143 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35144
35145         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
35146         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
35147
35148 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35149
35150         * object.c:
35151         (mono_print_unhandled_exception): after previous commit, i realized
35152         that MS calls ToString on the exception. I changed this function to
35153         do that. This way we get stack_trace for free.
35154
35155 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35156
35157         * object.c:
35158         (mono_print_unhandled_exception): invoke Message property instead of
35159         getting 'message' field from Exception. Don't allocate memory for
35160         'trace' and 'message' if not needed.
35161
35162 2002-08-18  Dick Porter  <dick@ximian.com>
35163
35164         * unicode.c: Fix asserts to match Encoder.cs checks
35165
35166 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35167
35168         * marshal.c: fix unaligned store issue and a few wrong
35169         opcode argument types.
35170
35171 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35172
35173         * icall.c: added GetUninitializedObjectInternal internal call.
35174
35175 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
35176
35177         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
35178         to the right domain.
35179
35180 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
35181
35182         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
35183
35184         * class.c (class_compute_field_layout): set blittable to false for Strings
35185
35186         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
35187
35188 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35189
35190         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
35191         first chunk of code to create types at runtime. Code to
35192         handle ReflectedType/DeclaringType. Make reflection handles
35193         domain specific.
35194
35195 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35196
35197         * class.c: set correct name in arrays.
35198
35199 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
35200
35201         * appdomain.c (mono_domain_transfer_object): make it work with
35202         valuetypes. bug fixes.
35203
35204 2002-08-12  Dick Porter  <dick@ximian.com>
35205
35206         * object.h: Rename some parameters to avoid c++ keywords (Patch
35207         from Joseph Wenninger <kde@jowenn.at>)
35208
35209 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
35210
35211         * icall.c: added icall to implement Assembly.GetFile*.
35212
35213 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35214
35215         * reflection.h, reflection.c: code to embed managed resources.
35216
35217 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35218
35219         * class.c: move all the type size stuff into
35220         class_compute_field_layout().
35221
35222 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35223
35224         * class.c: ensure enums have always the correct instance size.
35225         * unicode.c: remove wrong assert.
35226
35227 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35228
35229         * assembly.c: fix mem corruption issue.
35230         * image.h, image.c: added mono_image_get_resource () to access
35231         managed resources.
35232         * icall.c: implemented Assembly.EntryPoint property and some
35233         Managed Resources related internalcalls.
35234
35235
35236 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35237
35238         * image.c, image.h: impemented mono_image_get_entry_point ().
35239         * appdomain.c: use mono_image_get_entry_point.
35240
35241 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35242
35243         * reflection.c: support the object type argument when loading
35244         custom attributes.
35245
35246 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35247
35248         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35249         String as return type.
35250
35251 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35252
35253         * reflection.c: fix encoding of named args for custom attrs to match
35254         the ms implementation. Read them back when instantiating custom
35255         attributes.
35256
35257 2002-08-02  Radek Doulik  <rodo@ximian.com>
35258
35259         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35260         by Dietmar as quick fix
35261         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35262         16 as stack size, used on more places as quick fix before Dietmar
35263         will fix it properly
35264
35265 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35266
35267         * object.h, object.c: added accessors for fields and properties.
35268
35269 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35270
35271         * class.c, class.h: made mono_class_get_field_from_name ()
35272         loop on parent types.
35273         Added mono_class_get_property_from_name ().
35274
35275 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35276
35277         * class.c, class.h: move the code to setup the type vtable in its own
35278         function so that it can be reused also for types created at runtime.
35279         Eliminate the "class" identifier from the header file.
35280         * reflection.c: setup the vtable for enums so that we can create
35281         objects for use in SetConstant ().
35282
35283 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35284
35285         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35286         instead of the delegate itself as this pointer (bug #28383)
35287
35288 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35289
35290         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35291         conversions.
35292
35293 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35294
35295         * loader.c: don't set the pinvoke bit on icalls.
35296
35297 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35298
35299         * debug-helpers.c (mono_method_full_name): only print a number to
35300         indicate wrapper type (so that the output is more readable in traces).
35301
35302 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35303
35304         * class.c (mono_class_init): include method override patch from Paolo
35305
35306 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35307
35308         * icall.c: fixed GetTypeCode().
35309
35310 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35311
35312         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35313         use real delegate invoke function to make it work with multicast
35314         delegates (fix bug# 28291).
35315
35316 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35317
35318         * object.c: load constant strings.
35319
35320 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35321
35322         * reflection.c: no magic numbers.
35323         * tabledefs.h: security action enum.
35324
35325 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35326
35327         * assembly.c: fix possible memory corruption.
35328
35329 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35330
35331         * reflection.h, reflection.c: added support for linking resources.
35332         * verify.c: check we have an updated corlib.
35333
35334 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35335
35336         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35337         string arrays.
35338         (mono_marshal_string_array): null terminate unmanaged string arrays.
35339         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35340
35341 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35342
35343         * icall.c: Type.GetType () can now return also types from the
35344         calling assembly.
35345
35346 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35347
35348         * loader.h, loader.c: stack walking support.
35349         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35350         GetCallingAssembly.
35351
35352 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35353
35354         * marshal.c: added optimisations for blittable types 
35355
35356         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35357         (mono_class_setup_mono_type): set blittable attribute for single
35358         and double.
35359
35360         * marshal.c (mono_string_utf8_to_builder): impl.
35361         (mono_string_builder_to_utf8): impl.
35362         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35363
35364 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35365
35366         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35367         (mono_marshal_get_managed_wrapper): impl. byref types
35368
35369 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35370
35371         * icall.c:
35372         (search_method): don't display debug message. 
35373
35374 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35375
35376         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35377
35378 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35379
35380         * appdomain.c: set the missing filename when throwing exception.
35381
35382 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35383
35384         * metadata.c (mono_type_size): code cleanup
35385         (mono_type_stack_size): removed some test code
35386
35387 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35388
35389         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35390         mono_get_exception_file_not_found now.
35391
35392         * exception.c (mono_exception_from_name_two_strings): New version
35393         that will call a constructor with two string arguments. 
35394         (mono_get_exception_file_not_found): New helper routine, used to
35395         report file-not-found errors.
35396
35397 2002-07-20  Dick Porter  <dick@ximian.com>
35398
35399         * process.h:
35400         * process.c: Pass file handles to CreateProcess
35401         
35402         * icall.c:
35403         * file-io.h:
35404         * file-io.c: Implemented CreatePipe
35405
35406 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35407
35408         * metadata.c (mono_get_param_info): set alignment for value types
35409
35410 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35411
35412         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35413         Constify mono_domain_assembly_open().
35414         * loader.c: handle null namespace in icalls.
35415
35416 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35417
35418         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35419         (emit_str_to_ptr_conv): marshal object as structs
35420
35421         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35422
35423         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35424
35425 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35426
35427         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35428         (mono_marshal_get_native_wrapper): we an now return value types
35429
35430 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35431
35432         * verify.c: more checks implemented.
35433
35434 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35435
35436         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35437         (fix bug #27695)
35438         (mono_marshal_get_native_wrapper): allow byref arguments
35439         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35440         impl. PtrToStringXXX methods
35441         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35442         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35443         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35444         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35445         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35446
35447 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35448
35449         * reflection.c: fix buglet in parsing an assembly name.
35450
35451 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35452
35453         * marshal.c (emit_ptr_to_str_conv): first impl.
35454
35455 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35456
35457         * object.c, class.h: cache the vtable in the class as suggested by
35458         vargaz@freemail.hu (Zoltan Varga).
35459
35460 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35461
35462         * class.h, loader.c: added mono_field_from_token().
35463         * verify.c: first cut of type checking code.
35464
35465 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35466
35467         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35468
35469 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35470
35471         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35472         (fix bug #27782)
35473         (mono_marshal_get_remoting_invoke): impl.
35474         (mono_delegate_begin_invoke): impl.
35475         (mono_mb_emit_save_args): impl.
35476         (mono_delegate_end_invoke): impl.
35477         (mono_marshal_get_delegate_begin_invoke):
35478         (mono_marshal_get_delegate_end_invoke):
35479         (mono_marshal_get_delegate_invoke): generate a special name for
35480         those methods (including the signature) and associate them whith
35481         the delegate class. 
35482
35483 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35484
35485         * reflection.[ch]: 
35486         (mono_reflection_type_from_name): now it has a MonoImage parameter
35487         which is used as the default image to search the type in. If the image
35488         is NULL or getting the type from it fails, it defaults to corlib.
35489
35490         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35491         new parameter.
35492
35493 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35494
35495         * reflection.c: update the parameter table index.
35496
35497 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35498
35499         * domain.c: don't include the mark byte in the string hash.
35500
35501 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35502
35503         * icall.cs: icall for Type.GetTypeCode ().
35504         * verify: a couple of fixes and disabled local initialization checks.
35505
35506 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35507
35508         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35509
35510         * debug-helpers.c (mono_method_full_name): print the type of the
35511         runtime wrapper
35512
35513         * metadata.c (mono_signature_hash): a hash function for signatures
35514         (mono_signature_hash): better hash algorithm
35515
35516         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35517
35518         * debug-helpers.c (mono_method_full_name): this can now generate
35519         method names with signatures
35520
35521         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35522         method dont have this pointers.
35523
35524 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35525
35526         * reflection.c: fixup typebuilder tokens.
35527         * image.c: fix buglet.
35528         * marshal.h: remove whitespace.
35529         * metadata.h, metadata.c: reinstate code that was removed.
35530         * verify.c: handle catch directives and fix another couple of bugs.
35531
35532 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35533
35534         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35535         (mono_marshal_get_native_wrapper): make it comp. with the old code
35536         (mono_marshal_get_native_wrapper): support boolean
35537         (mono_marshal_get_managed_wrapper): support more types
35538
35539 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35540
35541         * class.c (class_compute_field_layout): compute class->blittable attribute.
35542
35543 2002-07-09  Dick Porter  <dick@ximian.com>
35544
35545         * threads.c: Make the thread cleaning up cope with threads that
35546         call ExitThread()
35547
35548 2002-07-08  Radek Doulik  <rodo@ximian.com>
35549
35550         * reflection.c (method_encode_code): use non-translated values to
35551         compute finally_start, this fixes exception handling on ppc, yay!
35552
35553         * decimal.h (struct signscale): fix endianess
35554
35555 2002-07-07  Radek Doulik  <rodo@ximian.com>
35556
35557         * reflection.c: swap box_val and not val
35558
35559 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35560
35561         * reflection.c, reflection.h: handle full assembly info in type name.
35562         Handle Type arguments when loading custom attributes.
35563         * icall.c: updated to use new mono_reflection_type_from_name () method.
35564
35565 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35566
35567         * loader.c:
35568         (method_from_memberref): also print assembly name when method not found.
35569
35570 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35571
35572         * icall.c:
35573         (ves_icall_TypeGetProperties): fixed bug #27473. 
35574
35575 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35576
35577         * reflection.c: display image name and token when cannot find the
35578         .ctor for an attribute.
35579
35580 2002-07-05  Martin Baulig  <martin@gnome.org>
35581
35582         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35583
35584 2002-07-04  Dick Porter  <dick@ximian.com>
35585
35586         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35587         compile on mingw.  This will cause mingw builds to not wait for
35588         subthreads to terminate after the main thread does.  I've lodged a
35589         bug with the mingw developers for them to wrap OpenThread().
35590
35591 2002-07-03  Dick Porter  <dick@ximian.com>
35592
35593         * threads.c: Store thread IDs instead of handles, because
35594         GetCurrentThread() returns a pseudohandle and therefore stores
35595         useless values.  mono_thread_cleanup() continues checking the
35596         array of threads until it is empty, to cope with subthreads
35597         spawning new threads after the main thread has finished.
35598
35599         * profiler.h:
35600         * profiler.c:
35601         * profiler-private.h: Pass the thread ID to thread profiler
35602         functions, instead of a handle
35603
35604 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35605
35606         * verify.c: fixes to make it more usable.
35607         * pedump.c: added --verify code to verify IL code in an assembly.
35608
35609 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35610
35611         * reflection.c: turn errors into warnings to allow compiling corlib.
35612
35613 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35614
35615         * reflection.c: add special cases to compile corlib.
35616
35617 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35618
35619         * reflection.c: handle properties with only a set method.
35620
35621 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35622
35623         * opcodes.h: add enum with opcodes in opval order.
35624
35625 2002-07-01  Dick Porter  <dick@ximian.com>
35626         
35627         * object.h:
35628         * object.c (mono_runtime_run_main): Removed unneeded argument
35629
35630 2002-06-28  Martin Baulig  <martin@gnome.org>
35631
35632         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35633
35634 2002-06-27  Dick Porter  <dick@ximian.com>
35635
35636         * threads.c: Store the handle in both the parent thread and in the
35637         subthread, to minimise the time between starting a new thread and
35638         storing its ID.
35639
35640 2002-06-26  Dick Porter  <dick@ximian.com>
35641
35642         * appdomain.c (mono_runtime_cleanup): Close the socket library
35643         after all the threads have finished, not before
35644
35645 2002-06-26  Martin Baulig  <martin@gnome.org>
35646
35647         * debug-symfile.c (mono_debug_find_source_location): Added
35648         `guint32 *line_number' argument.  If it's not NULL, store the line number
35649         there and return the file name without the line number.
35650
35651 2002-06-25  Dick Porter  <dick@ximian.com>
35652
35653         * icall.c:
35654         * process.h:
35655         * process.c: Process forking and other support functions
35656
35657 2002-06-25  Dick Porter  <dick@ximian.com>
35658
35659         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35660         things dont happen when the image is closed.
35661         (mono_image_lookup_resource): Walk the resource section looking
35662         for a particular entry
35663
35664         * cil-coff.h: PE resource section decoding
35665
35666 2002-06-25  Dick Porter  <dick@ximian.com>
35667         
35668         * assembly.h:
35669         * assembly.c: 
35670         (mono_assembly_foreach): Accessor functions to walk the list of
35671         loaded assemblies
35672         (mono_assembly_set_main):
35673         (mono_assembly_get_main): Process methods need to know which
35674         assembly is the "main" one
35675
35676         * object.c (mono_runtime_run_main): Record the main assembly
35677
35678         * debug-helpers.c: Fix typo
35679
35680 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35681
35682         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35683         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35684
35685 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35686
35687         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35688
35689 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35690
35691         * image.c (do_mono_image_open): Initialize reference count,
35692         otherwise we leak the MonoImage.
35693
35694 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35695
35696         * reflection.c: small tweak to handle self-hosting.
35697
35698 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35699
35700         * reflection.c: fix type name parse code.
35701
35702 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35703
35704         * reflection.c: break out of the loop.
35705         * image.c: special case corlib.
35706
35707 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35708
35709         * reflection.c: add all the custom attrs at the end to ensure the
35710         ctors have been properly initialized when the attributes are defined
35711         in the current assembly.
35712
35713 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35714
35715         * reflection.c: handle correctly multiple-nested types.
35716
35717 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35718
35719         * row-indexes.h: fix typos.
35720         * reflection.c: adjust for typos and fix method_def_or_ref
35721         encoding in MethodImpl table.
35722
35723 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35724
35725         * reflection.c: fix entry point patching (thanks Serge!).
35726
35727 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35728
35729         * verify.c: add check for System.Exception
35730
35731 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35732
35733         * image.c, class.c: minifix for code just c&p'ed.
35734         * reflection.c: warning fix.
35735         * object.h, loader.h, domain.c: load also StringBuilder.
35736
35737 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35738
35739         * marshal.h, marshal.c: some support code to handle complex marshaling.
35740
35741 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35742
35743         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35744         Better signatures with vtable error dump.
35745
35746 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35747
35748         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35749
35750 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35751
35752         * icall.c (ves_icall_Type_GetField): impl.
35753
35754 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35755
35756         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35757         to retrieve a marshal description blob for a field or param.
35758
35759 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35760
35761         * reflection.h, reflection.c: change order of nested type emission
35762         to avoid table corruption. The NestedTypes table is sorted.
35763         * icall.c: change order of GetConstructor results to workaround mcs bug.
35764
35765 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35766
35767         * reflection.h, reflection.c: handle field and param marshal
35768         information.
35769
35770 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35771
35772         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35773
35774 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35775
35776         * reflection.c: fix call convention.
35777
35778 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35779
35780         * reflection.h, reflection.c: mono_image_get_memberref_token()
35781         takes a type instead of a class, now. Added
35782         mono_image_get_array_token() to create tokens for the special
35783         multi-dim array methods.
35784
35785 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35786
35787         * assembly.c: handle modules (no assembly table). Split
35788         loading references in its own function.
35789         * class.c: handle moduleref resolution scope.
35790         * image.c, image.h: cache module name in image.
35791
35792 2002-06-07  Martin Baulig  <martin@gnome.org>
35793
35794         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35795         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35796
35797 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35798
35799         * icall.c: more signature fixes that used uint instead of int.
35800
35801 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35802
35803         * reflection.c: fixed signature of field refs.
35804
35805 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35806
35807         * class.c, reflection.c: handle typerefs of nested types
35808         (both on read and when writing files).
35809
35810 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35811
35812         * icall.c: fix method signatures that tried to workaround the previous
35813         typo, d'oh!
35814
35815 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35816
35817         * debug-helpers.c: fix typo.
35818
35819 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35820
35821         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35822         rewrote the PE/COFF writing code (our programs are understood by the
35823         ms runtime, now).
35824
35825 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35826
35827         * gc.c, gc.h, icall.c: weakreference support.
35828
35829 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35830
35831         * Makefile.am, mono-config.c: use $(sysconfdir).
35832
35833 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35834
35835         * icall.c: changed default precision of Double.ToString() to 15.
35836         Fixed memory leak. Unified with Single.ToString.
35837
35838 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35839
35840         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35841
35842 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35843
35844         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35845         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35846         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35847         and myself.
35848
35849 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35850
35851         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35852
35853 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35854
35855         * reflection.c, socket-io.c: more compilation fixes.
35856
35857 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35858
35859         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35860         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35861         unicode.c: warning and compiler compatibility fixes.
35862
35863 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35864
35865         * class.h, metadata.c: fixed warnings/compilation errors.
35866
35867 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35868
35869         * Makefile.am, mono-config.c, mono-config.h: configuration file
35870         support routines.
35871         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35872         config file. Export methods to insert and lookup mappings.
35873
35874 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35875
35876         * reflection.c: handle types and boxed objects in custom attr
35877         constructors.
35878
35879 2002-05-30  Martin Baulig  <martin@gnome.org>
35880
35881         * debug-symfile.c
35882         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35883
35884 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35885
35886         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35887         to lookup the implmap row for a P/Invoke method.
35888         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35889         P/Invoke method from the runtime on an as needed basis.
35890
35891 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35892
35893         * metadata.c (mono_metadata_parse_signature): impl.
35894
35895 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35896
35897         * class.c: handle .pack directive.
35898
35899 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35900
35901         * object.c: initialize static fields with RVA data.
35902
35903 2002-05-25  Martin Baulig  <martin@gnome.org>
35904
35905         * debug-symfile.c
35906         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35907
35908 2002-05-24  Martin Baulig  <martin@gnome.org>
35909
35910         * debug-symfile.c
35911         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35912         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35913         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35914
35915 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35916
35917         * object.c: special case string ctros in invoke.
35918         * gc.c: silly whitespace changes.
35919
35920 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35921
35922         * threadpool.[ch]: impl. a threadpool that can
35923         be used by mint and mono.
35924
35925 2002-05-22  Martin Baulig  <martin@gnome.org>
35926
35927         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35928         The first argument is now a `MonoReflectionModuleBuilder *', the return
35929         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35930         `methods' field to get the method builder.  The `token' argument is the
35931         unfixed token.
35932
35933         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35934         invalid characters instead of g_assert_not_reached()ing.  This seems
35935         to be the behaviour of mscorlib.
35936
35937 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35938
35939         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35940         Hestilow to fix bug #25104
35941
35942 2002-05-21  Martin Baulig  <martin@gnome.org>
35943
35944         * debug-symfile.c (mono_debug_find_source_location): New function.
35945         Looks up an IL offset in the line number table and returns the source
35946         location as a string.
35947
35948 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35949
35950         * icall.c:
35951         (mono_double_ToStringImpl): changed %f by %g until we have something
35952         better.
35953
35954 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35955
35956         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35957         parameters first in C#.
35958
35959 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35960
35961         * icall.c, reflection.h: added icall to get info about an event.
35962
35963 2002-05-20  Radek Doulik  <rodo@ximian.com>
35964
35965         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35966         endian
35967         (mono_value_box): don't use memcpy for small sizes on
35968         architectures with unaligned access
35969
35970 2002-05-20  Martin Baulig  <martin@gnome.org>
35971
35972         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35973         if `tb->parent == NULL'.
35974         (mono_reflection_create_internal_class): New function.  This is
35975         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35976         for enum types.
35977
35978         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35979         New interncall.
35980
35981 2002-05-19  Martin Baulig  <martin@gnome.org>
35982
35983         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35984         argument to get the length, don't default to the array length.
35985
35986 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35987
35988         * assembly.c (mono_assembly_setrootdir): New function used to
35989         override the MONO_ASSEMBLIES directory.
35990
35991 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35992
35993         * icall.c: ValueType_GetHashCode() initialize local var.
35994
35995 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35996
35997         * reflection.c: sort custom attributes table.
35998
35999 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
36000
36001         * reflection.c: support named args in custom attributes (write support).
36002
36003 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
36004
36005         * reflection.c: fix finally position calculation.
36006
36007 2002-05-15  Radek Doulik  <rodo@ximian.com>
36008
36009         * reflection.c: fixed endianess at many places
36010
36011         * icall.c (ves_icall_InitializeArray): comment out debug msg
36012
36013 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
36014
36015         * object.c (mono_unhandled_exception): new function to handle
36016         unhandled exceptions.
36017         (mono_unhandled_exception): call the UnhandledException event.
36018         (mono_runtime_delegate_invoke): impl.
36019
36020 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
36021
36022         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
36023         returns the RVA, not the direct pointer to the data. Handle the case
36024         when the class size is fixed.
36025
36026 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
36027
36028         * reflection.c: fix some endianess issues.
36029
36030 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
36031
36032         * object.c (mono_runtime_invoke): is now able to catch exceptions.
36033
36034         * threads.c (mono_thread_init): added a callback which is invoked
36035         at thread start.
36036
36037 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
36038         
36039         * icall.c: make GetHashCode return non-negative values.
36040
36041 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
36042
36043         * object.c, icall.c, gc.c: revert to address-based hashcode.
36044
36045 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
36046
36047         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
36048
36049 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36050
36051         * icall.c, class.c: special case <Module>.
36052
36053 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
36054
36055         * icall.c: fix bug in GetNow().
36056
36057 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
36058
36059         * object.c (mono_runtime_class_init): make sure that we call all
36060         static class constructors.
36061
36062 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
36063
36064         * reflection.c: sort methodsemantics table.
36065
36066 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
36067
36068         * reflection.h, reflection.c: honour init locals setting.
36069
36070 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
36071
36072         * icall.c: copied Double ToStringImpl for Single ToStringImpl
36073
36074 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36075
36076         * reflection.c: support ContructorBuilders in attribute blob creation.
36077
36078 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36079
36080         * reflection.c: some changes to build a binary that can be run
36081         directly in windows.
36082
36083 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36084
36085         * loader.c: print a big message when an icall can't be found.
36086
36087 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36088
36089         * string-icalls.c: fix bug 24248.
36090
36091 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
36092
36093         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
36094         icall.c, reflection.h: separate assembly loading by pathname and by
36095         assembly name. Use the MONO_PATH env var to search for assemblies.
36096
36097 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36098
36099         * assembly.c, image.h: add some support for assemblies
36100         with multiple modules.
36101         * class.c, class.h: export mono_class_from_typeref().
36102         * loader.c: remove duplicated code and use mono_class_from_typeref(),
36103         instead.
36104
36105 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36106
36107         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
36108         documentation says (the ECMA one is correct).
36109
36110 2002-05-02  Dick Porter  <dick@ximian.com>
36111
36112         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
36113         Don't name the synchronisation mutex.
36114
36115 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
36116
36117         * rand.c
36118         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
36119         Make the prototypes match.
36120         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
36121         Same.
36122
36123         * icall.c
36124         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
36125         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
36126         all systems have tm.tm_zone, so use strftime() with %Z to print
36127         the timezone abreviation into a temp string.
36128
36129         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
36130         rather than mono_array_addr() on a MonoString on Big Endian
36131         machines.
36132
36133 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
36134
36135         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
36136         fix bug 24041
36137
36138 2002-04-30  Dick Porter  <dick@ximian.com>
36139
36140         * socket-io.c: Cope with SOCKET being an integer rather than a
36141         pointer now.
36142
36143         * threads.c: Added Thread_free_internal, to deal with thread
36144         handle cleanup.  Moved calls to handle_store() and handle_remove()
36145         to start_wrapper(), so each can only be called once.  Allocate
36146         synchronisation blocks with GC_malloc(), and use GC finalisation
36147         to close the handles.
36148
36149         * icall.c: added System.Threading.Thread::Thread_free_internal
36150
36151 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36152
36153         * icall.c: support Environment.Exit, CommandLineArgs().
36154
36155 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
36156
36157         * object.c, object.h: added mono_runtime_run_main () and
36158         mono_runtime_get_main_args () for use in System.Environment.
36159
36160 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36161
36162         * gc.c: fix thinko, enable actual finalization since the jit is now
36163         fixed.
36164
36165 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36166
36167         * gc.c, object.c: take into account that an object may be offset wrt the address
36168         returned by GC_malloc().
36169
36170 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
36171
36172         * image.c: handle files without entries in the assembly table (modules).
36173
36174 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
36175
36176         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
36177         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
36178         allowed to be null when it's System.Object class setup.
36179
36180 2002-04-27  Martin Baulig  <martin@gnome.org>
36181
36182         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
36183         if `tb->parent == NULL' rather than crashing.
36184
36185 2002-04-28  Nick Drochak  <ndrochak@gol.com>
36186
36187         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
36188         calling acos() where asin() should have been called.
36189
36190 2002-04-26  Martin Baulig  <martin@gnome.org>
36191
36192         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
36193         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
36194         there's a subdirectory called `System', but we don't want to read that
36195         subdirectory as an assembly.
36196
36197 2002-04-25  Martin Baulig  <martin@gnome.org>
36198
36199         * debug-symfile.c: Reflect latest MonoString changes.
36200
36201 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
36202
36203         * rand.c, rand.h: instance method icalls need to have an explicit
36204         this pointer as first argument in the C implementation.
36205
36206 2002-04-25  Nick Drochak <ndrochak@gol.com>
36207
36208         * icall.c: Fix typo in map for GetNonZeroBytes
36209
36210 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36211
36212         * string-icalls.c : String does now passes unit tests without any 
36213         errors, the following changes has been made:
36214         
36215         Implemented replace methods.
36216         Renaming of methods to (try) follow the standard.
36217         Fixed compare ordinal
36218         Made all memory allocated directly to function instead of via icall function.
36219         Small performance fix in is_in_array function
36220                         
36221  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
36222
36223         c (mono_string_Internal_ctor_charp_int_int):
36224         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
36225         sindex < 0, throw ArgumentOutOfRangeException instead of
36226         ArgumentNullException.
36227
36228         Added new check for length == 0, however
36229         I need to make it return String.Empty from the C code.
36230         
36231         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36232         that calculate the length for us here.
36233         
36234         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36235         mono_string_new_utf16 with mono_string_new, since value is utf8.
36236
36237 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36238
36239         * object.c: register the object for finalization if needed.
36240         Allocate one more char in the string for the terminating 0 char.
36241
36242 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36243
36244         * class.c, class.h, image.c: check if a type implemenst a destructor.
36245         Use the proper key for array class lookups.
36246         * icall.c: register the icalls in the System.GC class.
36247         * gc.c, gc.h: GC-related functions and icalls.
36248
36249 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36250
36251         * icall.c:
36252         * socket-io.c:
36253         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36254         changed a couple of free () by g_free ().
36255
36256         * decimal.c: one-liner in the comments for decimal2string ().
36257
36258 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36259
36260         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36261
36262 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36263
36264         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36265         * object.c (mono_runtime_invoke_array) : handle null in params
36266
36267 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36268
36269         * string-icalls.c: fixed bug in split (one off bug)
36270
36271 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36272
36273         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36274         * icalls.c: added String::Equals as internal method
36275
36276 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36277
36278         * threads.c: fixed bug in the double interlocked functions
36279
36280 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36281
36282         * threads.c: implemented all of the new interlocked icalls.
36283         * string-icalls.c: fix a bug in insert.
36284         * icalls.c: added the icalls for interlocked, removed old string functions.
36285         
36286 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36287
36288         * loader.c: fix off-by-one error when reading argument names.
36289
36290 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36291
36292         * profiler.c: win32 counter implementation (untested).
36293         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36294         (the latter needs testing and more complete impl. from win32 folks).
36295
36296 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36297
36298         * object.c: mono_array_new_full workaround mono_array_class_get
36299         problem.
36300
36301 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36302
36303         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36304         * object.h (mono_string_chars): Changed casting type.
36305
36306 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36307
36308         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36309                            method signatures to use gunichar2 instead of gint16.
36310
36311 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36312
36313         * object.h, object.c: domain-specific versions of mono_object_new and
36314         mono_array_new.
36315
36316 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36317
36318         * object.c: changed String layout
36319
36320         * string-icalls.c (mono_string_Internal_ctor_chara): added
36321         internal string constructors.
36322
36323 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36324
36325         * threads.c: pass 'this' to the thread start routine.
36326
36327 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36328
36329         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36330         InternalCompareStr don't call twice mono_string_cmp_char for the last
36331         character. Improved performance in mono_string_cmp_char.
36332
36333 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36334
36335         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36336         code into its own library: libmonoruntime.
36337
36338 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36339
36340         * object.h, object.c: changed array format so that szarrays do not
36341         require a bounds structure.
36342         * icall.c, appdomain.c: support for new szarray format.
36343
36344 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36345
36346         * metadata.c: compare also the retuns type when comparing signatures:
36347         we didn't do this as an optimization since really overloaded methods
36348         must differ also in the arguments, but this doesn't work with
36349         low-level IL code (or when using explicit conversion operators: see
36350         bug#23498 for an example).
36351
36352 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36353
36354         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36355
36356 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36357
36358         * icall.c: make MonoType::GetElementType its own icall.
36359
36360 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36361
36362         * icall.c: remove MonoMethod_get_Name().
36363         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36364         object.
36365
36366 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36367
36368         * string-icalls.c: optimized a few methods.
36369
36370 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36371
36372         * icall.c: added all new string internal calls
36373         * string-icalls.c: added, new string internal call implementation.
36374         * object.c: added mono_string_new_size for allocating a string a size
36375
36376 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36377
36378         * object.c (mono_object_isinst): use the same code as in the
36379         optimized x86 version.
36380
36381 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36382
36383         * profiler.c: TSC-based timer code (faster and more accurate).
36384         Not hooked up in configure, yet (set USE_X86TSC to 1).
36385
36386 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36387
36388         * profiler.c, profiler.h: track time spent compiling methods.
36389         * threads.c: track thread creation/destruction.
36390
36391 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36392
36393         * profiler.c, profiler.h, profiler-private.h: profiling interface
36394         and sample implementation. Moved here so that it can be used also by
36395         the jit.
36396
36397 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36398
36399         * reflection.c, reflection.h: keep types and other handles separate in
36400         the hash tables for referred tokens. Add guid for modules.
36401
36402 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36403
36404         * assembly.c: fix bugs found with valgrind.
36405         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36406
36407 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36408
36409         * threads: added icall support for getting current domain for
36410                    the thread.
36411  
36412 2002-04-13  Martin Baulig  <martin@gnome.org>
36413
36414         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36415         (MonoDebugVarInfo): Added `index' field for register based addresses.
36416         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36417         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36418         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36419         `MonoDebugVarInfo *this_var'.
36420
36421         * debug-symfile.c (relocate_variable): New static function to write
36422         a location description for a local variable or method parameter.
36423
36424 2002-04-12  Martin Baulig  <martin@gnome.org>
36425
36426         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36427         stack offset and begin/end scope address of a local variable.
36428         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36429         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36430         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36431
36432         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36433         Added new relocation types for start/end scope of a local variable.
36434
36435 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36436
36437         * object.h: add mono_object_domain() macro.
36438         * reflection.c: handle typespecs.
36439         * icall.c: MonoMethod::get_Name() implementation.
36440
36441 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36442
36443         * icall.c: String::GetHashCode() icall implementation.
36444
36445 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36446
36447         * icall.c: String::IndexOfAny icall.
36448         * object.c, object.h: make array->max_length more useful.
36449         Intrduced mono_object_class() and mono_string_length() macros.
36450
36451 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36452
36453         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36454         instead of g_unichar_isdigit.
36455
36456 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36457
36458         * icall.c: Implement a simple Double.ToString().
36459
36460 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36461
36462         * appdomain.h: only io-layer.h is supposed to be included.
36463         * icall.c: explicitly import environ. Fix warning.
36464
36465 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36466
36467         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36468                 return true even if it's not Daylight Savings time.
36469                 Only return false for the case where the function isn't
36470                 implemented for a plaform (read Windows).
36471
36472 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36473
36474         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36475         data with a mutex.
36476
36477 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36478
36479         * mempool.c (mono_mempool_alloc): only use g_malloc when
36480         absolutely necessary.
36481
36482 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36483
36484         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36485
36486         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36487         (mono_class_proxy_vtable): use domain mempool
36488
36489 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36490
36491         * appdomain.h, appdomain.c: split initialization that requires the
36492         execution engine support into mono_runtime_init().
36493
36494 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36495
36496         * class.c (mono_class_init): don't include vtable inside MonoClass
36497         to save some memory, gather some statistics.
36498         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36499
36500 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36501
36502         * icall.c: internalcall implementation for ValueType.Equals().
36503
36504 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36505
36506         * object.c (mono_message_init): moved 
36507         (mono_runtime_exec_main): new arch. independent impl.
36508         (mono_runtime_invoke_array): new method - like
36509         mono_runtime_invoke, but you can pass an array of objects.
36510         (mono_remoting_invoke): new arch. independent impl.
36511         (mono_message_invoke): new arch. independent impl.
36512         (mono_runtime_class_init): new arch. independent impl.
36513         (mono_runtime_object_init): new arch. independent impl.
36514
36515 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36516
36517         * metadata.c, object.c, reflection.c: documented the exported
36518         functions.
36519
36520 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36521
36522         * icall.c: simpler code to pass the assembly builder data to corlib.
36523         Implement GetNestedTypes() internalcall.
36524
36525 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36526
36527         * class.c: warn if a type can't be loaded.
36528
36529 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36530
36531         * image.h: typedef MonoImageOpenStatus
36532         * types.h: removed unused file
36533         
36534 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36535
36536         * icall.c: Enum_ToObject accepts enum value arguments.
36537
36538 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36539
36540         * class.c: move initialization of properties, events and nested
36541         classes, so that they happen for interfaces, too.
36542
36543 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36544
36545         * icall.c: cleanup some ugly casts in Array_SetValue*.
36546
36547 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36548
36549         * icall.c: the values array fro enums is of the correct type, now.
36550         Implement (correctly) getFullName instead of assQualifiedName for
36551         MonoType.
36552         * reflection.h, reflection.c: added mono_type_get_name ().
36553
36554 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36555
36556         * assembly.c, image.h: for each MonoImage, record from wich assembly
36557         it was loaded.
36558         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36559         Make Type.Assembly work.
36560
36561 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36562
36563         * debug-symfile.h: use char* instead of gpointer to avoid
36564         unnecessary casts.
36565
36566         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36567
36568         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36569         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36570
36571 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36572
36573         * icall.c (mono_message_init): impl. (code cleanup)
36574         (ves_icall_InternalExecute): impl. FieldGetter
36575
36576         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36577         defined we call all (non-static)methods through the vtable. 
36578
36579 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36580
36581         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36582         finalizer even though the memory is still referenced (and the chunk of
36583         memory is not freed).
36584
36585 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36586
36587         * assembly.c: fix brokeness.
36588
36589 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36590
36591         * class.c: kill some warnings. Check explicit interface method
36592         implementation also without considering the namespace.
36593         Load also literal strings in static class data.
36594
36595 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36596
36597         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36598         (default_assembly_name_resolver): Make the resolver take the
36599         "base" directory where the assembly was originally defined, so we
36600         can load DLLs that are in the same directory as the assembly that
36601         is being referenced.
36602
36603 2002-03-28  Dick Porter  <dick@ximian.com>
36604
36605         * file-io.h: 
36606         * file-io.c:
36607         * socket-io.c: 
36608         * unicode.h: 
36609         * unicode.c: Warning cleanups
36610
36611 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36612
36613         * object.h, reflection.h: use the correct type instead of MonoObject.
36614
36615 2002-03-28  Martin Baulig  <martin@gnome.org>
36616
36617         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36618         (mono_debug_update_symbol_file): Initialize classes if necessary.
36619
36620 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36621
36622         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36623         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36624
36625 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36626
36627         * assembly.h: fix function prototype.
36628         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36629         * mono-endian.h: use const cast.
36630
36631 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36632
36633         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36634
36635 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36636
36637         * loader.c: don't assert when a typeref can't be loaded, give
36638         a chance to the runtime to trow an exception instead.
36639         * loader.h: fix warning.
36640
36641 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36642
36643         * class.c (mono_class_proxy_vtable): added proxy support
36644
36645 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36646
36647         * icall.c: removed last of PAL calls, added System.Environment
36648         * file-io.h, file-io.c: MonoIO implementation
36649         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36650
36651 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36652
36653         * appdomain.c: do not use the byte marker in ldstr table lookup.
36654         * debug-helpers.c: allow two ':' to separate class and method name.
36655         * object.c: allocate arrays bounds with the GC, too.
36656         * verify: add a few more checks.
36657
36658 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36659
36660         * reflection.c: output also literal strings. Allocate parameter data
36661         with GC_malloc() (thanks, Martin, for catching this!).
36662
36663 2002-03-26  Martin Baulig  <martin@gnome.org>
36664
36665         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36666         include the `this' offset in the `param_offsets'.
36667
36668 2002-03-25  Martin Baulig  <martin@gnome.org>
36669
36670         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36671         mono_debug_get_class() function to get the classes. Added new
36672         relocation types for arrays and strings.
36673         (mono_debug_get_class): New static function to search in all
36674         referenced assemblies for a metadata token.
36675
36676         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36677
36678 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36679
36680         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36681         hold gc-allocated objects. Make the string heap a stream like the
36682         others. Removed duplicated code when writing stream info.
36683         Added asserts to catch possible buffer overflows. Set the sorted map
36684         for tables that need sorting. Added some documentation.
36685
36686 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36687
36688         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36689         for interned strings and vtables.
36690
36691 2002-03-24  Martin Baulig  <martin@gnome.org>
36692
36693         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36694         it in the array since it was created with g_slist_prepend().
36695
36696 2002-03-24  Martin Baulig  <martin@gnome.org>
36697
36698         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36699         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36700         (mono_debug_method_from_token): Renamed to
36701         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36702         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36703
36704         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36705         relocation types.
36706
36707         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36708
36709 2002-03-24  Martin Baulig  <martin@gnome.org>
36710
36711         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36712         (mono_debug_method_from_token): New func.
36713
36714         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36715         New interncall, calls mono_debug_local_type_from_signature().
36716         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36717         calls mono_debug_method_from_token().
36718
36719 2002-03-23  Martin Baulig  <martin@gnome.org>
36720
36721         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36722         specifies the number of bytes to be converted, not the array size.
36723         Return the number of chars, not the number of bytes.
36724         (ves_icall_iconv_get_chars): The `byteCount' argument
36725         specifies the number of bytes to be converted, not the array size.
36726
36727 2002-03-23  Martin Baulig  <martin@gnome.org>
36728
36729         * reflection.h (MonoReflectionSigHelper): New type.
36730
36731         * reflection.c (mono_reflection_sighelper_get_signature_local),
36732         (mono_reflection_sighelper_get_signature_local): New functions.
36733
36734         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36735         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36736         interncalls.
36737
36738 2002-03-23  Martin Baulig  <martin@gnome.org>
36739
36740         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36741         is_writeable is set.
36742         (mono_raw_buffer_update): New function to write the modified map
36743         back to disk.
36744
36745         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36746
36747         * debug-symfile.c (mono_debug_update_symbol_file): Call
36748         mono_raw_buffer_update() when done writing.
36749
36750 2002-03-23  Martin Baulig  <martin@gnome.org>
36751
36752         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36753
36754         * debug-symfile.c: Added support for arguments and local variables.
36755
36756 2002-03-23  Dick Porter  <dick@ximian.com>
36757
36758         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36759         protected by ifdefs, hence breaking the w32 build.
36760
36761 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36762
36763         * object.c: implement is_interned() the right way.
36764
36765 2002-03-21  Martin Baulig  <martin@gnome.org>
36766
36767         * debug-symfile.[ch]: New files to handle debugging information
36768         files. There's also support to dynamically update these symbol
36769         files to include machine dependent information.
36770
36771 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36772
36773         * threads.c (mono_thread_create): new function to create thread
36774         from C
36775
36776 2002-03-20  Martin Baulig  <martin@gnome.org>
36777
36778         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36779         method is a constructor.
36780         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36781         points to ves_icall_InternalInvoke().
36782
36783 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36784
36785         * file-io.c: Flush shouldn't throw exceptions.
36786
36787 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36788
36789         * file-io.c: FileStream flush support; FileSetLength now
36790         restores file pointer.
36791
36792 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36793
36794         * class.c: set image for pointer classes.
36795
36796 2002/03/19  Nick Drochak <ndrochak@gol.com>
36797
36798         * sysmath.c: Forgot one.
36799
36800 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36801
36802         * sysmath.c: Avoid redefining existing names.
36803
36804 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36805
36806         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36807         handled by runtime as icall rather than dllimport from libm.so
36808         * file-io.c, file-io.h: fixed handle argument type.
36809
36810 2002-03-18  Dick Porter  <dick@ximian.com>
36811
36812         * reflection.c (mono_image_get_type_info): rename interface to
36813         iface, because of "#define interface struct" on windows.
36814
36815 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36816
36817         * class.c, class.h: rename and export mono_ptr_class_get().
36818         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36819         * reflection.c, reflection.h, icall.c: better/saner type name
36820         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36821         method signatures.
36822
36823 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36824
36825         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36826
36827         * icall.c (ves_icall_InternalInvoke): impl.
36828
36829 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36830
36831         * reflection.c: output the interface map table, too.
36832
36833 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36834
36835         * class.c (class_compute_field_layout): separate computation of 
36836         static field layout
36837
36838 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36839
36840         * icall.c: added System.Buffer support.
36841         * file-io.c: moved file icalls from PAL to FileStream.
36842
36843 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36844
36845         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36846
36847 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36848
36849         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36850
36851 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36852
36853         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36854
36855 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36856
36857         * debug-helpers.{c,h}: moved here from monograph some useful functions
36858         to locate a method by name/signature in a class or image. Included
36859         also a small and flexible IL disassembler.
36860
36861 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36862
36863         * reflection.c: fixup tokens in methods with small header size, too.
36864
36865 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36866
36867         * object.c (mono_string_to_utf8): remove assert(!error), instead
36868         print a warning. 
36869
36870 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36871
36872         * icall.c: update to the new mono_Array_class_get interface.
36873
36874 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36875
36876         * appdomain.c, object.c: Boehm-GC enable.
36877         * icall.c: make get_data_chunk() support split data requests.
36878         Ensure a class is initialized in more cases. Return only the first
36879         property found in GetProperties() or the compiler gets confused. 
36880         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36881         * reflection.h, reflection.c: add fixup mechanism for field and method
36882         tokens. Initialize assembly->typeref in a single place. Output
36883         properties after events. Support custom attributes for events, too.
36884         Typo fix for paramter custom attrs.
36885
36886 2002-03-07  Martin Baulig  <martin@gnome.org>
36887
36888         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36889
36890 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36891
36892         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36893
36894 2002-03-06  Martin Baulig  <martin@gnome.org>
36895
36896         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36897         non-zero lower bounds. See testcases #F10-#F13.
36898
36899 2002-03-05  Martin Baulig  <martin@gnome.org>
36900
36901         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36902
36903         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36904         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36905         here.
36906         (ves_icall_System_Array_SetValue): Likewise.
36907         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36908         as argument and does the actual work. This function is used when copying a
36909         multi-dimensional array.
36910         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36911         now do all the widening conversions of value types.
36912         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36913
36914 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36915
36916         * class.c: remove some magic numbers and use the smbolic names,
36917         instead. Added init_events() to load event info at class init time.
36918         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36919         and mono_metadata_methods_from_event().
36920         * reflection.h, reflection.c: added support for writing out the evnets
36921         related information.
36922
36923 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36924
36925         * reflection.h, icall.c: use a different method (GetInterfaces)
36926         to gather interface info and add isbyref, isprimitive and
36927         ispointer to the ves_icall_get_type_info() return value.
36928
36929 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36930
36931         * class.h: stared adding support for events.
36932         * icall.c: split find_members implementation. Added debug icall to get
36933         the address of an object.
36934         * reflection.c: handle TypeBuilders in mono_type_get_object().
36935
36936 2002-03-01  Martin Baulig  <martin@gnome.org>
36937
36938         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36939         ArgumentOutOfRangeException(), not an ArgumentException().
36940         (ves_icall_System_Array_GetLowerBound): Likewise.
36941         (ves_icall_System_Array_GetValue): Improved argument checking.
36942         (ves_icall_System_Array_SetValue): Improved argument checking.
36943
36944 2002-03-01  Martin Baulig  <martin@gnome.org>
36945
36946         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36947         called with invalid arguments rather than just dying with g_assert().
36948         (ves_icall_System_Array_SetValue): Likewise.
36949         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36950         raise a NotImplementedException instead.
36951         (ves_icall_System_Array_GetLength): Added argument checking.
36952         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36953
36954 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36955
36956         * object.h (mono_assert): new macros mono_assert and
36957         mono_assert_not_reached
36958
36959 2002-02-28  Martin Baulig  <martin@gnome.org>
36960
36961         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36962         and "System::String::IsInterned" to "System::String::_IsInterned".
36963
36964 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36965
36966         * icall.c: remove hacks for typebuilder. Added icall to create a
36967         modified type from a tybebuilder.
36968         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36969         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36970         to create a backing MonoClass for a TypeBuilder.
36971
36972 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36973
36974         * class.c, class.h: more refactoring of class init.
36975         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36976
36977 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36978
36979         * marshal.c, marshal.h: start of marshaling interface.
36980
36981 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36982
36983         * icall.c: fix order in assembly qualified name icall.
36984
36985 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36986
36987         * class.c: do not free str, since we store it in the hash table.
36988         * reflection.h: add label field to MonoILExceptionInfo.
36989         * reflection.c: handle references to more than one assembly. Handle
36990         case when there isn't a module created in the assembly.
36991
36992 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36993
36994         * class.c: Fix typo. Start refactoring of class init code.
36995
36996 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36997
36998         * appdomain.c: exit with 1 on error.
36999         * class.c: we already have the name in MonoClassField.
37000         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
37001         MonoStreamHeader instead of an offset of image->raw_metadata.
37002
37003 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
37004
37005         * appdomain.c (mono_init): Be even more descriptive about the error.
37006
37007 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
37008
37009         * appdomain.c: give the user an informative message when corlib can't
37010         be loaded.
37011
37012 2002-02-26  Martin Baulig  <martin@gnome.org>
37013
37014         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
37015         New icall to get the time zone data.
37016
37017 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37018
37019         * reflection.c: set virtual and raw size of section correctly.
37020         * threads.c: transfer domain information to newly created threads.
37021
37022 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37023
37024         * class.c: when instancing a class in a domain, load the default
37025         vaules for static fields from the constant table. Fix System.Enum to
37026         not be an enum.
37027         * icall.c: implement Object::GetType() internalcall. Implemented
37028         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
37029         Fixed checking of binding flags in find_members().
37030         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
37031         * reflection.c: handle enumerations when writing to the constant
37032         table. Use a different object cache for types.
37033
37034
37035 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
37036
37037         * object.c (mono_object_isinst): fix for arrays
37038
37039         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
37040
37041 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37042
37043         * object.c: don't use mprotect ()  and fix intern pool hash table
37044         lookup for big endian systems.
37045
37046 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
37047
37048         * icall.c: change type_is_subtype_of () signature.
37049
37050 2002-02-21  Mark Crichton  <crichton@gimp.org>
37051
37052         * rand.c, rand.h: Added random number generator for
37053         System.Security.Cryptography classes.
37054
37055         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
37056
37057         * icall.c: Added System.Security.Cryptography calls.
37058
37059 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
37060
37061         * class.c, icall.c, metadata.c: better support for pointer types.
37062         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
37063         * reflection.c: Add support for getting custom attrs for properties
37064         and simplify some code.
37065
37066 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
37067
37068         * icall.c: change getToken () and add custom attribute GetBlob()helper
37069         method.
37070         * reflection.h: add custom attrs array to the reflection builder structures.
37071         * reflection.c: encode and emit custom attributes for all the relevant
37072         reflection objects. Cache fieldref and methodref tokens. Change
37073         mono_image_create_token() interface to take a MonoDynamicAssembly.
37074         More complete custom attributes decoder. Load custom attributes for
37075         Assembly, Field, Method and Constructor objects, too. Make the
37076         returned array an Attribute[] one, not object[]. Added
37077         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
37078         custom attribute constructor.
37079
37080 2002-02-20  Dick Porter  <dick@ximian.com>
37081
37082         * icall.c:
37083         * rawbuffer.c:
37084         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
37085         problem code out for now).
37086
37087 2002-02-19  Radek Doulik  <rodo@ximian.com>
37088
37089         * object.c (mono_ldstr): use hash table to avoid multiple swapping
37090
37091 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
37092
37093         * icall.c: register the GetCustomAttributes method.
37094         * object.c, object.h: add mono_string_new_len ().
37095         * reflection.h, reflection.c: added mono_runtime_invoke(),
37096         mono_install_runtime_invoke(). Added
37097         mono_reflection_get_custom_attrs () to load custom attributes and
37098         create the attribute objects.
37099
37100 2002-02-19  Dick Porter  <dick@ximian.com>
37101         * threads-dummy-types.c:
37102         * threads-dummy-types.h:
37103         * threads-dummy.c:
37104         * threads-dummy.h:
37105         * threads-pthread-types.c:
37106         * threads-pthread-types.h:
37107         * threads-pthread.c:
37108         * threads-pthread.h:  Deleted obsolete files
37109
37110 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
37111
37112         * class.c (mono_class_vtable): runtime init the class when we
37113         allocate static class data.
37114
37115         * icall.c (ves_icall_System_Array_SetValue): check for null values.
37116
37117         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
37118         and String - but we will need generic marshalling support in the
37119         future. 
37120         (mono_init): set the domain name in a ms compatible way
37121
37122         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
37123         String[].
37124
37125 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
37126
37127         * object.c (mono_array_clone): use alloca() instead of g_malloc  
37128         for sizes
37129
37130         * appdomain.c (mono_domain_unload): impl.
37131
37132 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37133
37134         * appdomain.c, object.c: fix intern pool implementation.
37135         * class.c: fix alignment code.
37136
37137 2002-02-16  Radek Doulik  <rodo@ximian.com>
37138
37139         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
37140         and s2 > s1, just copy lower bytes to be compatible with little
37141         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
37142         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
37143
37144         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
37145         force big_endian to be 1 for big endian machines 
37146         (ves_icall_iconv_new_decoder): ditto
37147
37148 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
37149
37150         * socket-io.c (convert_sockopt_level_and_name): If the system
37151         doesn't define SOL_IP or SOL_TCP, get them by hand using
37152         getprotobyname() and caching the values (because this could be a
37153         slow operation).
37154         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
37155         Use the appropriate struct when the system does support it. Ie,
37156         not all systems have struct ip_mreqn so use struct ip_mreq when
37157         appropriate.
37158
37159 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
37160
37161         * reflection.c: handle finally clauses.
37162
37163 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
37164
37165         * socket-io.c: use g_snprintf() instead of snprintf.
37166
37167 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37168
37169         * reflection.c (mono_param_get_objects): Cast second argument to
37170         mono_method_get_param_names to a const char** to silence the
37171         compiler warning.
37172
37173         * appdomain.c (mono_domain_assembly_open): Put parens around the
37174         truth statement in the for-loop.
37175
37176         * unicode.c (iconv_convert): Got rid of a compiler warning about
37177         int i being unused when the system has a new iconv.
37178         (iconv_get_length): Same.
37179
37180         * image.c (load_class_names): Cast the second argument to
37181         g_hash_table_insert() to char* to hush compiler warnings about the
37182         arg being a const.
37183         (mono_image_open): Same here.
37184
37185         * socket-io.c: Don't conditionally include sys/filio.h or
37186         sys/sockio.h here anymore since we now get them from
37187         io-layer/io-layer.h
37188         (inet_pton): If the system doesn't support inet_aton, implement
37189         using inet_addr and also #define INADDR_NONE if it isn't defined
37190         by the system.
37191
37192 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
37193
37194         * metadata.c, metadata.h: added function to get packing and size info
37195         of a typedef.
37196         * reflection.h, reflection.c: handle field RVA data. Save info about
37197         the table layout if needed. Assign typedef indexes to all the types
37198         before dumping the info about them to avoid forward reference problems.
37199
37200 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
37201
37202         * socket-io.c (convert_sockopt_level_and_name): ifdef
37203         SO_ACCEPTCONN because it is not defined on my system (old debian)
37204
37205 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
37206
37207         * opcode.c: use stddef.h to get NULL.
37208
37209 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37210
37211         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
37212         for FIONBIO, FIONREAD and SIOCATMARK.
37213         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
37214         define INADDR_NONE and besides, inet_addr() is deprecated and
37215         should not be used. Use inet_pton() instead - it also has the
37216         added bonus that it can easily handle IPv6 addresses as well.
37217         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
37218
37219 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
37220
37221         * decimal.c: remove _MSC_VER conditional.
37222
37223 2002-02-13  Dick Porter  <dick@ximian.com>
37224
37225         * socket-io.c: 
37226         * icall.c: Internal calls for Blocking, Select, Shutdown,
37227         GetSocketOption and SetSocketOption
37228
37229 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37230
37231         * assembly.cs: better resolver: use it instead of some kludgy
37232         code.
37233
37234 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37235
37236         * reflection.c: the best way to speed-up the compiler is to avoid
37237         infinite loops.
37238
37239 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37240
37241         * class.c (mono_class_vtable): changed the object layout
37242         (obj->vtable->class). 
37243         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37244
37245 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37246
37247         * assembly.c: look for assemblies in the assembly dir, too.
37248
37249 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37250
37251         * class.c: fix thinko in mono_class_from_type().
37252
37253 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37254
37255         * exception.h, exception.c: added TypeLoadException.
37256         * object.h, object.c: added mono_array_clone ().
37257         * icall.c: handle throwOnError in AssemblyGetType().
37258         Added Array.Clone().
37259         * opcode.h, opcode.c: use a single value for the opcode val.
37260         Compile fix for non-gcc compilers.
37261
37262 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37263
37264         * opcodes.c, opcodes.h: export interesting info about opcodes.
37265
37266 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37267
37268         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37269         icalls. 
37270
37271         * class.c (class_compute_field_layout): set element_class for enums
37272         (mono_class_create_from_typedef): set element_class for normal classes
37273
37274         * icall.c (ves_icall_System_Enum_get_value): impl.
37275
37276         * class.c (mono_class_create_from_typedef): do not set valuetype
37277         flag for System.ValueType and System.Enum
37278
37279 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37280
37281         * unicode.c (iconv_convert): fix big endian problem.
37282
37283 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37284
37285         * class.c: add asserts if we are ever going to scribble over memory.
37286         * socket-io.c: not all systems have AF_IRDA defined.
37287
37288 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37289
37290         * class.c (class_compute_field_layout): do not consider static
37291         fields to compute alignment
37292
37293 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37294
37295         * appdomain.c (mono_appdomain_get): impl.
37296         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37297
37298 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37299
37300         * icall.c: ignore "file://" prefix when loading an assembly.
37301
37302 2002-01-23  Dick Porter  <dick@ximian.com>
37303
37304         * socket-io.c:
37305         * icall.c:
37306         * Makefile.am: Added socket support
37307
37308 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37309
37310         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37311         code back.  This should return the assemblies that are loaded by
37312         the runtime on behalf of an application domain. 
37313
37314         The current implementation is still broken, it just returns every
37315         assembly loaded, but until we get real applications domain this
37316         will do.
37317
37318 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37319
37320         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37321         AppDomain object.
37322
37323 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37324
37325         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37326         the mono_class_from_name lookup.
37327         (ves_icall_get_parameter_info): ditto.
37328         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37329         method.
37330         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37331
37332 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37333
37334         * class.c: load also nested classes on class init.
37335         System.ValueType instance methods gets passed boxed
37336         values, unless methods in derived classed that get a pointer to the
37337         data.
37338         * icall.c: use better name parsing code in GetType().
37339         * image.c, image.h: add mono_image_loaded ().
37340         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37341         * reflection.c, reflection.h: added mono_reflection_parse_type().
37342
37343 2002-01-22  Veronica De Santis <veron78@interfree.it>
37344
37345         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37346         * threads.c : Added the implementation of internal calls for events
37347         * threads.h : Added prototypes of internal calls for events
37348         
37349 2002-01-21  Radek Doulik  <rodo@ximian.com>
37350
37351         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37352
37353 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37354
37355         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37356         (mono_class_value_size): use min_align
37357
37358 2002-01-20  Dick Porter  <dick@ximian.com>
37359
37360         * threads.h:
37361         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37362         so it compiles on w32.
37363
37364 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37365
37366         * metadata.c (mono_type_stack_size): impl.
37367
37368         * class.c (mono_class_get_field): impl. memberref token
37369
37370 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37371
37372         * icall.h : Added the internal calls mapping for CreateMutex_internal
37373                     and ReleaseMutex_internal.
37374         * threads.h : Added the prototype of mutexes internal calls.
37375         * threads.c : Added the implementations of mutexes internal calls.
37376
37377 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37378
37379         * metaparse.h: removed unused file.
37380         * reflection.c, reflection.h: added stream_data_align () function 
37381         to align data in streams and keep stream aligned. Add support for
37382         exception support in method headers.
37383
37384 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37385
37386         * unicode.c: make iconv_convert () return the number of bytess written
37387         in the output buffer.
37388
37389 2002-01-15  Dick Porter  <dick@ximian.com>
37390         * threads.c: Make the runtime's idea of infinite timeouts coincide
37391         with the class library's
37392
37393         Fix a particularly egregious bug in mono_thread_cleanup(). That
37394         code was so utterly bogus it must have been written on a Monday.
37395
37396 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37397
37398         * reflection.h: add subtypes field to TypeBuilder.
37399         * reflection.c: encode constants for literal fields.
37400         Handle subtypes. Fix user string token (and add a zero byte)
37401         at the end.
37402         
37403 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37404
37405         * class.c (mono_class_init): bug fix: assign slot numbers for
37406         abstract methods.
37407
37408 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37409
37410         * reflection.c: don't try to output a code RVA for abstract methods.
37411         Small fixes for method header format. Output parameter info to the
37412         ParamDef table. Save method overriding info to MethodImpl table.
37413         Fix property support. Allow typedef.extends to be a type in the
37414         building assembly.
37415         * verify.c: fix off-by-one error.
37416
37417 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37418
37419         * class.c: fix mono_class_from_mono_type () for szarray types.
37420         Remove unused cache check in mono_class_from_type_spec().
37421         * icall.c: *type_from_name () functions handle simple arrays and byref.
37422         * reflection.c: handle byref and szarray types. Handle methods without
37423         body (gets P/Invoke compilation working). Handle types and fields in
37424         get_token ().
37425         * reflection.h: add rank to MonoTypeInfo.
37426
37427 2002-01-10  Dick Porter  <dick@ximian.com>
37428
37429         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37430         internal calls
37431
37432 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37433
37434         * icall.c: initialize class in type_from_handle ().
37435         Loop also in parent classes for get_method ().
37436         * reflection.c: properly encode class and valuetype types.
37437         Start on encoding TypeBuilder types. Handle fieldrefs.
37438         Use correct length when registering a user string.
37439         Handle ConstructorBuilder and MonoMethod in get_token ().
37440         Make mono_type_get_object () aware of cached types.
37441         * object.c: back out change to mono_string_new ().
37442
37443 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37444         * object.c: mono_string_new should return a NULL when the string 
37445         passed in is NULL -- not try to deference it.
37446         
37447 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37448
37449         * icall.c: hack to make IsSubType work for TypeBuilders.
37450         * reflection.c: emit constructors before methods.
37451         Retrieve param names in mono_param_get_objects().
37452
37453 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37454
37455         * Makefile.am: fix list of headers and sources so automake 1.5
37456         doesn't complain. Removed \# at end of list.
37457
37458 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37459
37460         * reflection.c: get token for a method ref. Set return type of
37461         constructor to void.
37462         * loader.c: debug message.
37463         * class.c: typo fix.
37464
37465 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37466
37467         * icall.c: fix array init with rank > 1. FindMembers
37468         loops in parent class as well.
37469         * image.c: do not insert nested types in name cache.
37470         * reflection.c: warning fix.
37471         * reflection.h: add override method (for interface impl).
37472
37473 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37474
37475         * metadata.c: fix customattr decoding.
37476
37477 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37478
37479         * rawbuffer.cs: Added native Win32 implementation, avoids using
37480         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37481
37482 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37483
37484         * class.c: make the low-level routines handle the cache.
37485
37486 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37487
37488         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37489
37490 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37491
37492         * class.c: fix mono_array_element_size() for objects.
37493         * class.h, class.c: add properties to MonoClass and load them
37494         at init time.
37495         * icall.c: check with isinst() when assigning a value to an array
37496         instead of requiring the classes to match exactly.
37497         Implemented icall for System.Type::GetType().
37498         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37499         enums. Handle bindingflags when looking for methods and fields.
37500         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37501         and mono_metadata_methods_from_property().
37502         * reflection.h, reflection.c: added structures for propreties,
37503         parameters and enums. Implemented mono_property_get_object() and
37504         mono_param_get_objects().
37505
37506 2001-12-18  Dick Porter  <dick@ximian.com>
37507
37508         * file-io.c: Use mono_string_to_utf16() instead of
37509         mono_string_chars()
37510
37511         * object.c: Added mono_string_to_utf16(), which copies the non
37512         NULL-terminated MonoString into a new double-null-terminated
37513         buffer.
37514
37515 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37516
37517         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37518
37519 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37520
37521         * file-io.c: raise exceptions if handle is invalid.
37522
37523 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37524
37525         * assembly.c: yet another check for mscorlib.
37526         * class.c, class.h: load nesting info for classes.
37527         * icall.c: many new functions to support the Reflection classes.
37528         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37529         * reflection.h, reflection.c: mono_image_create_token(),
37530         mono_assembly_get_object(), mono_type_get_object(),
37531         mono_method_get_object(), mono_field_get_object(): methods to return
37532         objects that parallel the C representation of assemblies, types,
37533         methods, fields.
37534
37535 2001-12-11  Dick Porter  <dick@ximian.com>
37536
37537         * icall.c:
37538         * file-io.c: Internal calls for file IO.
37539
37540 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37541
37542         * tabledefs.h: missing FileAttributes.
37543         * verify.h, verify.c: use is_valid_string () to simplify and check for
37544         valid strings more correctly. Fix warnings and speeling.
37545         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37546         Check code: branches, maxstack, method calls.
37547
37548 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37549
37550         * object.c (mono_object_allocate): removed static, so that the jit
37551         can allocate value types.
37552
37553         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37554
37555 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37556
37557         * class.c: init enum types right away and register the
37558         token->MonoClass map in mono_class_create_from_typedef ().
37559         * verify.h, verify.c: first cut of the verifier.
37560         * pedump.c: add --verify switch to verify metadata tables.
37561         * tabledefs.h: add some missing enums.
37562
37563 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37564
37565         * class.c (mono_install_runtime_class_init): impl.
37566         (mono_class_init): renamed mono_class_metadata_init to
37567         mono_class_init, also removed the metadata_inited flag
37568
37569         * object.c (mono_object_isinst): use faster algorithm
37570
37571 2001-11-30  Radek Doulik  <rodo@ximian.com>
37572
37573         * mono-endian.h: reverted last change
37574         added function prototypes
37575
37576         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37577         add mono-endian.c back
37578
37579         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37580         for unaligned access, I've mistaked it with endianess. I am
37581         sorry.
37582         (mono_read16): fix reverted endianess
37583         (mono_read64): ditto
37584         (mono_read32): ditto
37585
37586 2001-11-30  Dick Porter  <dick@ximian.com>
37587
37588         * exception.c: Implement mono_exception_from_name()
37589
37590 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37591
37592         * metadata.h, metadata.c: remove params_size and locals_size and their
37593         calculation from the metadata code: they are only usefult to the
37594         interp.
37595
37596 2001-11-29  Radek Doulik  <rodo@ximian.com>
37597
37598         * object.c (mono_ldstr): swap bytes here, it's probably not the
37599         best place, but works for me now, I'll redo it once I know mono
37600         better, also note that I add PROT_WRITE and don't reset back, also
37601         note that it's only affects big endians, so x86 should be OK
37602
37603         * mono-endian.h (read16): use just glib macros for both endians
37604
37605         * mono-endian.c: removed as glib macros are used in in
37606         mono-endian.h so we don't need to care about endianess for read
37607         macros as glib does that for us already
37608
37609 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37610
37611         * class.h, class.h: take minimum alignment into consideration so
37612         that the fields of a class remain aligned also when in an array.
37613
37614 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37615
37616         * loader.h, loader.c: add mono_method_get_param_names().
37617         * class.c: 0-init class fields.
37618
37619 2001-11-26  Dick Porter  <dick@ximian.com>
37620
37621         * icall.c:
37622         * threads-types.h:
37623         * threads.c: New file that handles System.Threading on all platforms
37624
37625         * object.c: 
37626         * object.h: Remove the synchronisation struct from MonoObject,
37627         replace it with a pointer that gets initialised on demand
37628
37629         * Makefile.am: Replace all the system-specific threading code with
37630         a single file that uses the new wrapper library
37631
37632 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37633
37634         * class.c, class.h: add mono_install_trampoline() so that the runtime
37635         can register a function to create a trampoline: removes the ugly
37636         requirement that a runtime needed to export arch_create_jit_trampoline.
37637         * object.h, object.c: added mono_install_handler() so that the runtime
37638         can install an handler for exceptions generated in C code (with
37639         mono_raise_exception()). Added C struct for System.Delegate.
37640         * pedump.c: removed arch_create_jit_trampoline.
37641         * reflection.c: some cleanups to allow registering user strings and
37642         later getting a token for methodrefs and fieldrefs before the assembly
37643         is built.
37644         * row-indexes.h: updates and fixes from the new ECMA specs.
37645
37646 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37647
37648         * class.h, class.c: add enum_basetype field to MonoClass.
37649         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37650         to get index in the constant table reated to a field, param or
37651         property.
37652         * reflection.h, reflection.c: handle constructors. Set public-key and
37653         version number of the built assembly to 0.
37654         * row-indexes.h: update from new ECMA spec.
37655
37656 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37657
37658         * class.h, class.c: add a max_interface_id to MonoClass.
37659         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37660         since it's used to do that. Added mono_type_type_from_obj().
37661         Make GetType() return NULL instead of segfaulting if the type was not
37662         found. Handle simple arrays in assQualifiedName.
37663         * object.h: add a struct to represent an Exception.
37664         * reflection.c: output call convention in method signature.
37665         Add code to support P/Invoke methods and fixed offsets for fields.
37666
37667 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37668
37669         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37670         the value.
37671         * icall.c: use mono_array_addr instead of array->vector: fixes the
37672         reflection image writing.
37673         * reflection.c: init call convention byte to 0 in method signature.
37674         Encode the property signature. Don't output property-related methods
37675         twice. Really process the properties for a type (don't cast a field to
37676         a property, my mom always told me that).
37677         Fix 64 bit issues in pointer alignment in a different and more
37678         readable way.
37679
37680 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37681
37682         * loader.h: Removed type class from MonoDefaults, added monotype
37683
37684         * loader.c: Loaded MonoType, removed loading of Type
37685
37686         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37687         and fills in System.Type._impl with a RuntimeTypeHandle rather
37688         than the actual MonoClass *
37689
37690         (ves_icall_type_from_handle): change from type_class to
37691         monotype_class
37692
37693         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37694         implemented
37695
37696         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37697         implemented
37698
37699         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37700
37701         (ves_icall_System_Reflection_Assembly_GetType): implemented
37702
37703         (ves_icall_System_MonoType_assQualifiedName): implemented
37704
37705         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37706
37707 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37708
37709         * assembly.c (mono_assembly_open): Implement a cache for the
37710         assemblies. 
37711
37712         (mono_assembly_close): only destroy the assembly when the last
37713         reference is gone.
37714         
37715 2001-11-09  Dick Porter  <dick@ximian.com>
37716
37717         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37718
37719 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37720
37721         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37722
37723 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37724
37725         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37726         from Martin Weindel.
37727         * object.h: add mono_string_chars ().
37728
37729 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37730
37731         * reflection.c (build_compressed_metadata): Eliminates warnings
37732         and uses 64-bit clean code.
37733
37734         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37735         (mono_type_equal): Change signature to eliminate warnings.
37736
37737 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37738
37739         * icall.c, loader.c: remove the internalcall array constructors.
37740         Changes to match the new MonoArray structure.
37741         * object.h, object.c: an array object doesn't allocate an extra
37742         vector. Add mono_array_new_full () to create jagged arrays easily.
37743
37744 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37745
37746         * metadata.h, metadata.c: add mono_metadata_field_info () to
37747         retreive all the info about a field from vairous tables.
37748         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37749         * class.h, class.c: augment MonoClassField with more info.
37750         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37751         policy and load a field's RVA if needed.
37752
37753 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37754
37755         * class.c (mono_class_metadata_init): create a trampoline for all
37756         virtual functions instead of actually compiling them.
37757
37758 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37759
37760         * class.h, class.c: include name in MonoClassField.
37761         * class.c: fix fundamental type of System.Object and System.String.
37762         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37763         tokens in ldtoken.
37764         * icall.c: remove internalcalls for the Reflection stuff that is now
37765         done in C# code.
37766         * loader.c: mono_field_from_memberref () implementation.
37767         * mono-endian.c: thinko (s/struct/union/g).
37768         * object.c, object.h: make the mono_string_* prototypes actually use
37769         MonoString instead of MonoObject.
37770         * reflection.c, reflection.h: updates for changes in the reflection
37771         code in corlib: we use C structures that map to the actual C# classes.
37772         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37773         fat method header if needed and use the info from the ILGenerator for
37774         methods. Handle fields in types. Misc fixes.
37775
37776 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37777
37778         * class.c (mono_class_metadata_init): bug fix: always allocate
37779         space for static class data
37780
37781 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37782
37783         * class.c (mono_compute_relative_numbering): use relative
37784         numbering to support fast runtime type checks.
37785
37786 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37787
37788         * class.c (mono_class_create_from_typeref): added debugging output
37789         to print class name when MonoDummy is returned instead of real class
37790
37791 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37792
37793         * class.c (mono_class_metadata_init): interface offset table now
37794         contains pointers into the vtable - this is more efficient for the jit
37795
37796 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37797
37798         * class.c (mono_class_metadata_init): use a temporary vtable (the
37799         old algorithm only worked for the interpreter, but not for the jit)
37800
37801 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37802
37803         * loader.c (method_from_memberref): use mono_class_get to get the
37804         class of an array instead of using System.Array directly.
37805         (mono_get_method): also add MEMBERREF methods to the method cache
37806         which usefull for arrays.
37807
37808 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37809
37810         * pedump.c (arch_compile_method): added to compute vtable entry
37811
37812         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37813         number of interfaces.
37814         
37815         * class.h: merged MonoArrayClass into MonoClass
37816
37817         * class.c (mono_class_create_from_typedef): compute the vtable size and
37818         allocate space to include the vtable inside MonoClass
37819         (mono_class_metadata_init): initialize the vtable
37820
37821 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37822
37823         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37824         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37825         * image.c: endian fixes by Laurent Rioux.
37826         * object.h, object.c: rename MonoStringObject to MonoString and
37827         MonoArrayObject to MonoArray. Change some function names to conform to
37828         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37829         guint16* as first argument, so don't use char*.
37830         Provide macros to do the interesting things on arrays in a portable way.
37831         * threads-pthread.c: updates for the API changes and #include <sched.h>
37832         (required for sched_yield()).
37833         * icall.c: updates for the API changes above.
37834         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37835         platforms that need them.
37836
37837 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37838
37839         * class.c: set the correct type for all the fundamental
37840         type when loading the class.
37841
37842 2001-10-05  Dick Porter  <dick@ximian.com>
37843
37844         * threads-pthread.c (pthread_mutex_timedlock): Simple
37845         compatibility version for C libraries that lack this call.
37846
37847 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37848
37849         * class.c: MonoTypes stored in MonoClass are stored as
37850         fundamental MonoTypes when the class represents a
37851         fundamental type (System.Int32, ...).
37852         The TypeHandle return by ldtoken is a MonoType*.
37853         * icall.c: ves_icall_get_data_chunk () write out all the
37854         PE/COFF stuff. Implement ves_icall_define_method (),
37855         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37856         * image.c: properly skip unknown streams.
37857         * loader.h, loader.c: add type_class to mono_defaults.
37858         * metadata.c, metadata.h: export compute_size () as
37859         mono_metadata_compute_size () with a better interface.
37860         Typo and C&P fixes.
37861         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37862         * reflection.c, reflection.h: many cleanups, fixes, output method
37863         signatures and headers, typedef and typeref info, compress the metadata
37864         tables, output all the heap streams, cli header etc.
37865         * row-indexes.h: typo fixes.
37866
37867 2001-10-04  Dick Porter  <dick@ximian.com>
37868
37869         * object.h: Add a synchronisation mutex struct to MonoObject
37870
37871         * object.c (mono_new_object): Initialise the object
37872         synchronisation mutexes
37873
37874         * icall.c: System.Threading.Monitor internal calls
37875         
37876         * threads-pthread.h:
37877         * threads-pthread.c: System.Threading.Monitor internal calls
37878
37879         * threads-types.h: New file, includes the system-specific thread
37880         structures
37881         
37882         * threads-pthread-types.h:
37883         * threads-pthread-types.c: New files, handle pthread-specific
37884         synchronisation types
37885
37886         * threads-dummy-types.h: 
37887         * threads-dummy-types.c: New files of dummy support for
37888         thread-specific types
37889
37890         * metadata.c:
37891         * image.c:
37892         * pedump.c: include mono-endian.h not endian.h
37893         
37894         * Makefile.am: More threads files.
37895         Name mono-endian.h not endian.h
37896
37897 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37898
37899         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37900         stuff and implement a few more bits.
37901         * icall.c: a field needs to be dereferenced twice. Do not use the same
37902         name for two variables in the same scope.
37903         * image.c, image.h: cleanups.
37904
37905 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37906
37907         * class.c (mono_class_metadata_init): bug fix: compute the right size
37908
37909 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37910
37911         * icall.c: implemented some of the Reflection internalcalls.
37912         * image.c, image.h: start writing out the PE/COFF image.
37913         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37914         that does the reverse than decode_blob_size ().
37915         * object.c: use mono_metadata_encode_value (). Move here
37916         temporary implementation of mono_string_to_utf8 ().
37917         * rawbuffer.c: make malloc_map static.
37918
37919 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37920
37921         * metadata.c: fix type comparison for arrays.
37922         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37923         Added a couple of new classes to monodefaults.
37924         * icall.c: added a couple of Reflection-related internalcalls.
37925         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37926         Added a byval_arg MonoType to MonoClass.
37927
37928 2001-09-28  Dick Porter  <dick@ximian.com>
37929
37930         * icall.c:
37931         * threads-pthread.h: 
37932         * threads-pthread.c: Implemented internal calls for
37933         LocalDataStoreSlot operations.  Applied mutexes around all shared
37934         data.  Reworked the thread creation and Start() operations to
37935         avoid a race condition.
37936         
37937         * threads-dummy.h:
37938         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37939
37940 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37941
37942         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37943
37944 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37945
37946         * class.c, loader.c: warn and return NULL instead of erroring out.
37947         * icall.c: added System.AppDomain::getCurDomain().
37948         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37949
37950 2001-09-25  Dick Porter  <dick@ximian.com>
37951
37952         * threads-pthread.h:
37953         * threads-pthread.c: Implemented timed thread joining and added
37954         System.Threading.Thread::Join_internal internal call
37955
37956         * icall.c: Added System.Threading.Thread::Join_internal internal call
37957
37958         * threads-dummy.h:
37959         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37960
37961 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37962
37963         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37964         mono_string_intern () to implement the semantics of the ldstr opcode
37965         and the interning of System.Strings.
37966         * icall.c: provide hooks to make String::IsIntern and String::Intern
37967         internalcalls.
37968
37969 2001-09-23  Dick Porter  <dick@ximian.com>
37970
37971         * threads-dummy.c: 
37972         * threads-dummy.h: New files of dummy threading routines
37973
37974         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37975         support code based on system specifics
37976
37977         Rename PTHREAD_LIBS to THREAD_LIBS
37978         
37979 2001-09-23  Dick Porter  <dick@ximian.com>
37980
37981         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37982         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37983         internal calls.
37984         (mono_thread_init): Set up a Thread object instance to return when
37985         the main thread calls Thread.CurrentThread
37986         (mono_thread_cleanup): Wait for all subthreads to exit
37987
37988         * icall.c: New internal calls for System.Threading.Thread::Sleep
37989         (including Schedule) and CurrentThread
37990
37991         * threads.h: New file, to insulate thread-specific stuff from the
37992         rest of the code
37993
37994 2001-09-21  Dick Porter  <dick@ximian.com>
37995
37996         * threads-pthread.h: 
37997         * threads-pthread.c: New file, for handling pthreads-style
37998         threading support.  Start() now starts a new thread and executes
37999         the ThreadStart delegate instance.
38000
38001         * icall.c: Added the internalcall for
38002         System.Threading.Thread::Start_internal
38003
38004         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
38005
38006 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
38007
38008         * loader.c: work around the different signatures for delegates
38009         constructors csc generates in compiled code vs the ones compiled in mscorlib.
38010
38011 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38012
38013         * class.h, class.c: add mono_class_get_field_from_name ().
38014         * *: Fix C comments and other ANSI C issues.
38015
38016 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
38017
38018         * endian.h, assembly.c: fix some endianness issues.
38019
38020 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
38021
38022         * loader.h, load.c: add delegate_class to mono_defaults.
38023         Handle runtime provided methods in mono_get_method ().
38024
38025 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
38026
38027         * loader.c (mono_get_method): use pinvoke for internal call
38028
38029         * icall.c: use pinvoke for internal call
38030
38031         * loader.c (method_from_memberref): set the method name
38032
38033 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
38034
38035         * metadata.c: help the compiler generate better code for
38036         mono_class_from_mono_type ().
38037
38038 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
38039
38040         * class.c (mono_class_metadata_init): delayed computing of the
38041         class size to mono_class_metadata_init ()
38042
38043 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
38044
38045         * class.c, class.h: add an interfaces member to MonoClass.
38046         * image.c, image.h: add assembly_name field to MonoImage
38047         from the assembly table.
38048         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
38049
38050 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38051
38052         * class.c: Handle Array in mono_class_from_mono_type ().
38053         * metadata.c, pedump.c: some endian fixes.
38054
38055 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
38056
38057         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
38058         * metadata.c: fix small problem introduced with the latest commit.
38059
38060 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
38061
38062         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
38063         We don't need a MonoMetadata pointer anymore to compare signatures in
38064         mono_metadata_signature_equal (), update callers.
38065         Reduced memory usage an number of allocations for MonoMethodHeader and
38066         MonoMethodSignature.
38067
38068 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
38069
38070         * metadata.c: added compare for szarray.
38071
38072 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
38073
38074         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
38075         and add a couple more types to it and mono_defaults. Give an hint on
38076         classes that need implementing in our corlib and are referenced
38077         in mscorlib.
38078
38079 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
38080
38081         * class.h, class.c: keep track if a class is also an Enum.
38082         * loader.c: Implement a couple more types for use in libffi
38083         marshalling. Gives better diagnostics when failing to dlopen
38084         a library. Set method->klass for P/Invoke methods, too.
38085
38086 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
38087
38088         * class.c, class.h: add a MonoType this_arg to MonoClass that
38089         represents a pointer to an object of the class' type that
38090         can be used by the interpreter and later the type cache.
38091         Add best guess alignment info for valuetype objects.
38092
38093 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
38094
38095         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
38096         into MonoType: one less level of indirection and allocation and
38097         simplifies quite a bit of code. Added cache for MonoTypes that are
38098         used frequently, so that we don't need to allocate them all the time.
38099
38100 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
38101
38102         * class.c (mono_class_create_from_typedef): System.Enum is also a
38103         value type, although it does not derive from System.ValueType
38104         (maybe a bug in the ms compiler?)
38105
38106         * metadata.c (mono_type_size): return the right size for value types
38107
38108         * loader.c (mono_get_method): only initialize method header if not abstract
38109
38110         * class.c (mono_class_from_mono_type): use mono_default values. 
38111
38112 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
38113
38114         * *: use MonoClass pointers instead of <type_tokens>
38115         
38116         * class.h: new flag: metadata_inited.
38117
38118         * class.c (mono_class_metadata_init): impl.
38119         (mono_class_instance_size): impl.
38120         (mono_class_data_size): impl.
38121
38122 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
38123
38124         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
38125         MonoClass now has the name and name_space fields. 
38126         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
38127         mono_get_method () takes and optional MonoClass as argument.
38128         Removed mono_typedef_from_name() and added mono_class_token_from_name()
38129         instead that takes advantage of a map from class names to typedef
38130         tokens in MonoImage.
38131
38132 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
38133
38134         * metadata.c: zero is not a valid alignment boundary.
38135         Merge MONO_TYPE_VOID in default decoding code.
38136
38137 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
38138
38139         * image.h: merged MonoMetadata into MonoImage
38140
38141         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
38142         identify the type of elements.
38143
38144 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
38145
38146         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
38147         * cil-coff.h: split MonoMSDOSHeader and add size info.
38148         * image.c: add some consistency checks.
38149         * metadata.c: fix row size computation: one programmer
38150         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
38151         add explanation for the locator routine.
38152         Fix decoding of size in method header.
38153         
38154 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
38155
38156         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
38157         (g_concat_dir_and_file): Bring g_concat_dir_and_file
38158         function from gnome-libs.  This uses the right path separator
38159         based on the OS, and also works around a bug in some systems where
38160         a double slash is not allowed. 
38161         (default_assembly_name_resolver): Use g_concat_dir_and_file
38162         (mono_assembly_open): ditto.
38163
38164 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
38165
38166         * metadata.c (mono_metadata_signature_equal): impl.
38167
38168         * *: void is now a realy MonoType (instead of using NULL)
38169         
38170         * metadata.c (do_mono_metadata_parse_type): use
38171         mono_metadata_parse_type to parse void value.
38172
38173 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
38174
38175         * metadata.c, metadata.h: in the signature and method header store
38176         only the space required for holding the loca vars and incoming arguments.
38177
38178 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
38179
38180         * metadata.c (do_mono_metadata_parse_type): treat void like any
38181         other type (instead of assigning NULL);
38182
38183 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
38184
38185         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
38186
38187 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
38188
38189         * image.c (do_mono_image_open): added a cache for arrays.
38190
38191 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38192
38193         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
38194         decode a single column from a row in a metadata table and changes
38195         to take advantage of it in the typedef locator (gives a nice speed up).
38196         Store offset info for function params.
38197
38198 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
38199
38200         * image.h (MONO_IMAGE_IS_CORLIB): removed 
38201
38202 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
38203
38204         * assembly.c: how could mono_assembly_close () had ever worked?
38205         * metadata.c, metadata.h: provide offset info for local vars.
38206         Implement mono_type_size () to take care of alignment as well
38207         as size (it was mono_field_type_size in cli/class.c before).
38208
38209 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
38210
38211         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
38212
38213         * assembly.h (CORLIB_NAME): set to corlib.dll
38214
38215         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
38216
38217 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38218
38219         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
38220         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
38221         tokentype.h: massive namespace cleanup.
38222
38223 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38224
38225         * metadata.h, metadata.c: decode exception clauses when parsing method header.
38226
38227 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38228
38229         * metadata.c (mono_metadata_free_type): added check for type !=
38230         NULL (void) before calling mono_metadata_free_type()
38231
38232 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38233
38234         * metadata.h, row_indexes.h: added header with enumerations to use
38235         to index in the columns from tables in metadata and to decode coded
38236         tokens: we should start using this instead of embedding magic numbers
38237         all over the code.
38238
38239 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38240
38241         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38242         Move metadata_t info from cli_image_info_t to MonoImage, where
38243         it's easily accessible. Changed all the uses accordingly.
38244         Added the method and class caches to MonoImage.
38245         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38246         and mono_metadata_decode_value () signature to be more consistent
38247         with the other parse functions (and simplify code). Taken advantage
38248         of zero-length array allocation with GCC. Removed reduntant (and
38249         wrong) MonoFieldType struct and use MonoParam instead. Changed
38250         mono_metadata_parse_field_type () to use common code for parsing.
38251         Added mono_metadata_typedef_from_field () and
38252         mono_metadata_typedef_from_method () to lookup a typedef index from a
38253         field or method token.
38254         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38255
38256 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38257
38258         * metadata.c (mono_metadata_parse_field_type): Implement. 
38259         (do_mono_metadata_parse_type): Split engine from
38260         mono_metadata_parse_type, so that we can create smaller structures
38261         for things that just have one pointer to the MonoType (look at
38262         the MonoFieldType)
38263
38264 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38265
38266         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38267         as Jan Gray found out, it is incorrect. 
38268
38269 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38270
38271         * assembly.c: Implement asssembly loading.  This loads an image
38272         and loads all the referenced assemblies.  Come to think of it, we
38273         could always do lazy loading of the assemblies. 
38274
38275         * image.c (mono_image_open): Keep loaded images in a hashtable.
38276
38277         * image.h (MonoImage): Add reference count.
38278
38279 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38280
38281         * assembly.c (mono_assembly_open): Keep track of the file name in
38282         case the assembly has no ASSEMBLY table.
38283
38284         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38285         from get.c here.
38286
38287 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38288
38289         * metadata.c, metadata.h: decode local vars in method header
38290         parse function. Change callers accordingly.
38291
38292 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38293
38294         * metadata.h, cil-coff.h: protect against multiple inclusion.
38295         Added some new structures to hold information decoded from metadata:
38296         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38297         and relevant decoding/free functions.
38298         * metadata.c: implement decoding functions. Add warning for out of bounds
38299         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38300         all the info about a method signature and invocation. Remove check on
38301         uninitialized local var in parse_mh() and fix memory leak.
38302
38303 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38304
38305         * metadata.h: More macros.
38306
38307         * tokentype.h: New file.
38308
38309 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38310
38311         * assembly.c: added a consistency check and initialize
38312         some structures with g_new0().
38313         * metadata.c: fixed a couple more bugs in table size computation
38314         and add other checks for out-of bound access to metadata.
38315
38316 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38317
38318         * metatada.c: fix bugs computing table sizes. Spew a
38319         warning when index in string heap is out of bounds.
38320
38321 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38322
38323         * metadata.h: Add a couple of macros to manipulate tokens. 
38324
38325 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38326
38327         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38328         cli_section_tables).
38329
38330 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38331
38332         * metadata.c (mono_metadata_user_string): New function, provides
38333         access to the UserString heap. 
38334
38335 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38336
38337         * metadata.c: Add inline documentation.
38338
38339 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38340
38341         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38342         files. 
38343
38344 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38345
38346         * typeattr.h: New file, TypeAttribute flags. 
38347
38348 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38349
38350         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38351         mono_assembly_ensure_section): Section loading code.
38352         (load_section_tables): Load the sections.
38353
38354         * mono/metadata/metadata.c (mono_metadata_locate_token,
38355         mono_metadata_locate): Functions to locate the information
38356         definition given a token or a table and an index.
38357         (mono_metadata_compute_table_bases): New.
38358         (compute_size): New function to compute the sizes of the various
38359         tables.
38360
38361         * mono/metadata/metadata.h: Finish listing the different index
38362         types. 
38363
38364         * mono/metadata/pedump.c: Improve to dump new information.
38365
38366 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38367
38368         * mono/metadata/metadata.c: Entered all the tables matching
38369         Beta2. 
38370
38371         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2