Merge branch 'master' of http://github.com/mono/mono
[mono.git] / mono / metadata / ChangeLog
1 2010-07-30  Mark Probst  <mark.probst@gmail.com>
2
3         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Add casts to fix
4         compiler warnings on AMD64.
5
6 2010-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
7
8         Add support for calling vararg methods from SRE code.
9         This requires storing per-memberref signatures so
10         the JIT can know how many varargs parameters are
11         been passed.
12
13         * loader.c (mono_method_get_signature_full): If the
14         image is dynamic call mono_reflection_lookup_signature
15         to lookup the signature.
16
17         * reflection.c (mono_image_create_method_token): Save
18         the method object into the MonoDynamicImage::tokens.
19         Create a signature struct for MethodBuilders.
20         Save the signature into vararg_aux_hash so it can be
21         retrieved later.
22
23         * reflection.c (mono_reflection_lookup_signature): New
24         function. Check vararg_aux_hash for a signature before
25         returning method's own signature.
26
27         * metadata-internals.h (MonoDynamicImage): Add new
28         vararg_aux_hash hashtable.
29
30         * object-internals.h: Add mono_reflection_lookup_signature.
31
32         Fixes #626441
33
34 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
35
36         * verify.c (mono_method_verify): Don't move forward
37         with verification if a stack overflow is detected for
38         the ARGLIST opcode.
39
40         Fixes #601953
41
42 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
43
44         * class.c (mono_bounded_array_class_get): Fail arrays
45         of void or typedbyref. Those two types are not allowed
46         to be used with arrays. Failing them is easier and less
47         error prone than returning NULL.
48
49         Fixes #603279
50
51 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
52
53         * object.c (mono_get_delegate_invoke): Don't assert if
54         the Invoke method is not found. This can happen with
55         broken types and it's the caller resposibility to deal
56         with a null return.
57
58         Fixes #553403
59
60 2010-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
61
62         * class.c (mono_assembly_name_from_token): Handle
63         images with null assembly. This can happen with resource
64         or broken assemblies.
65
66         Fixes #623586.
67
68 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
69
70         * class.c (concat_two_strings_with_zero): Guard against
71         null strings.
72
73         Modified version of patch by Sebastien Pouliot.
74
75         Fixes #623653.
76
77 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
78
79         * image.c (mono_image_load_module): Handle the case of
80         module index equal or smaller than zero. It is possible
81         to embed a valid zero index into metadata so this case
82         must be explicitly handled.
83
84         Patch by Sebastien Pouliot.
85
86         Fixes #623581.
87
88 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
89
90         * metadata-verify.c (INVALID_IMPLMAP_FLAGS_BITS): Add non standard
91         bits for best fit on/off (4,5) and throw on unmappable on/off (12/13).
92
93         Fixes #622221.
94
95 2010-07-27  Geoff Norton  <gnorton@novell.com>
96
97         * sgen-archdep.h: Ensure we store the registers we actually
98         need to scan.
99
100 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * verify.c (do_invoke_method): Improve error message.
103
104 2010-07-27 Rodrigo Kumpera  <rkumpera@novell.com>
105
106         * verify.c (mono_generic_param_is_constraint_compatible): Don't
107         fail a contraint check even if the candidate has no constraints.
108         All constraints might resolve to the candidate itself so it can
109         have none.
110
111         Fixes #622225.
112
113 2010-07-25  Mark Probst  <mark.probst@gmail.com>
114
115         * sgen-internal.c: Only compile this if HAVE_SGEN_GC is defined.
116
117 2010-07-24  Mark Probst  <mark.probst@gmail.com>
118
119         * sgen-internal.c, sgen-gc.h, sgen-major-copying.c: Make the
120         internal allocator fast by keeping free-lists of chunks, not only
121         within chunks.  Align the chunks, so that on freeing we can get
122         the chunk without searching.
123
124 2010-07-24  Mark Probst  <mark.probst@gmail.com>
125
126         * sgen-internal.c, sgen-gc.c, sgen-gc.h, sgen-gray.c,
127         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning-stats.c,
128         sgen-pinning.c: Allocate fixed-size structs without specifying the
129         size, instead registering it once with its type.
130         Dynamically-sized need their size specified when being freed.
131
132 2010-07-24  Mark Probst  <mark.probst@gmail.com>
133
134         * sgen-major-copying.c, sgen-internal.c, sgen-gc.c, sgen-gc.h,
135         sgen-pinning.c: Copying major collector doesn't mess around with
136         internals of the internal allocator anymore, instead using public
137         functions.
138
139 2010-07-24  Mark Probst  <mark.probst@gmail.com>
140
141         * sgen-internal.c: Internal allocator in its own module.
142
143         * sgen-gc.c, sgen-gc.h, sgen-gray.c, sgen-los.c,
144         sgen-major-copying.c, sgen-marksweep.c, sgen-pinning.c,
145         sgen-pinning-stats.c: Remove internal allocator and call the
146         public functions now.
147
148         * Makefile.am: Added new file.
149
150 2010-07-24  Zoltan Varga  <vargaz@gmail.com>
151
152         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix warnings on amd64.
153
154 2010-07-24  Sanjoy Das <sanjoy@playingwithpointers.com>
155
156         * sgen-gc.h: Removed 'foo defined but not used' warnings for the
157           *_signal_num variables.
158
159 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
160
161         * file-io.c (ves_icall_System_IO_MonoIO_Read): Add a null check.
162         (ves_icall_System_IO_MonoIO_Write): Ditto.
163
164         * loader.c (mono_loader_cleanup): Delete loader_mutex, the shutdown races should
165         be fixed now.
166
167 2010-07-23  Zoltan Varga  <vargaz@gmail.com>
168
169         * loader.c (mono_loader_lock_if_inited): New helper function which can be called
170         during startup before the loader lock is initialized.
171         (mono_loader_unlock_if_inited): Ditto.
172
173
174 2010-07-21  Geoff Norton  <gnorton@novell.com>
175
176         * sgen-archdep.h: Fix the build on amd64-darwin.
177
178 2010-07-16  Zoltan Varga  <vargaz@gmail.com>
179
180         * object.c (mono_print_unhandled_exception): Fix a warning.
181
182 2010-07-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
183
184         * threadpool.c: use a monitor thread to start up new ones when needed.
185         Fixes bug #622398.
186
187 Thu Jul 15 18:44:44 CEST 2010 Paolo Molaro <lupus@ximian.com>
188
189         * reflection.c, class-internals.h, class.c, icall.c: support
190         reflection of default constant value for Re.Emit properties.
191
192 2010-07-14  Miguel de Icaza  <miguel@novell.com>
193
194         * reflection.c (load_cattr_value): Add support for encoding
195         DateTime constants into the blob.    Turns out that this is
196         required by .NET, it was only documented post 1.0.
197
198         * icall.c (ves_icall_type_GetTypeCodeInternal): Guard test for
199         System.Decimal and System.DateTime inside a mono_is_corlib_image
200         call.   A sample program showed that we could return the wrong
201         TypeCode just by creating a class with those names. 
202
203         * class.c (mono_is_corlib_image): Exposed this to other metadata/
204         code.
205
206 2010-07-14  Sebastien Pouliot  <sebastien@ximian.com>
207
208         * security-core-clr.c: Don't abort (only warn) if we cannot find 
209         a caller for relfecting code (transparent is assumed). Fix
210         get_method_access_exception to accept a NULL caller.
211
212 2010-07-14  Mark Probst  <mark.probst@gmail.com>
213
214         * sgen-gc.c: Heavy statistics on the internal allocator.
215
216 2010-07-13  Mark Probst  <mark.probst@gmail.com>
217
218         * sgen-marksweep.c, sgen-gc.h: Keep track of num_empty_blocks
219         properly and in a thread-safe way.
220
221 2010-07-13  Mark Probst  <mark.probst@gmail.com>
222
223         * sgen-gc.c, sgen-marksweep.c: Make object marking thread-safe.
224
225 2010-07-13  Mark Probst  <mark.probst@gmail.com>
226
227         * sgen-gc.c: Versions of safe_object_get_size() and
228         copy_object_no_checks() that work without the object's vtable
229         intact, by passing the correct vtable as an argument.
230
231 2010-07-13  Mark Probst  <mark.probst@gmail.com>
232
233         * sgen-marksweep.c: Make allocation of major sections thread-safe.
234
235 2010-07-13  Mark Probst  <mark.probst@gmail.com>
236
237         * sgen-gc.c, sgen-gc.h, sgen-los.c, sgen-major-copying.c,
238         sgen-marksweep.c: Update the heap boundaries thread-safe and lock
239         free if parallel mark is enabled.
240
241 2010-07-13  Mark Probst  <mark.probst@gmail.com>
242
243         * sgen-gc.c, sgen-gc.h, sgen-major-copying.c: Lock the internal
244         allocator if parallel mark (not committed yet) is enabled.
245
246 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
247
248         * reflection.c (inflate_mono_method): Handle dynamic
249         generic instances that have method.count set but
250         methods not. Fixes another crash from boo's test suite.
251
252 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
253
254         * icall.c (ves_icall_MonoMethod_get_base_method): If
255         the method slot is bigger than the class vtable, return
256         the original method. Makes booc work again.
257
258 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * verify.c (mono_generic_param_is_constraint_compatible):
261         The candidate type itself might satisty the required
262         constraints.
263
264         Fixes #621599.
265
266 2010-07-12 Rodrigo Kumpera  <rkumpera@novell.com>
267
268         * reflection.c (fix_partial_generic_class): Inflate the
269         generic instance parent in case it was changed after
270         MonoGenericClass was instantiated.
271
272         Fixes one of the issues from #389886.
273
274 2010-07-10  Mark Probst  <mark.probst@gmail.com>
275
276         * sgen-gray.c: Store only a pointer to one end of the gray queue.
277
278 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
279
280         * loader.c (mono_method_signature_checked): Release the domain
281         lock on failure.
282
283 2010-07-10  Mark Probst  <mark.probst@gmail.com>
284
285         * sgen-gc.c: Store the forwarding address in the first word of an
286         object, where the forwarding bit is stored.
287
288 2010-07-10  Mark Probst  <mark.probst@gmail.com>
289
290         * gc.c, gc-internal.h, sgen-gc.c, sgen-gc.h, sgen-os-mach.c: An
291         interface to register our Mach exception thread which will not be
292         suspended by stop-the-world.
293
294 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
295
296         * loader.c (mono_get_method_constrained): Properly unlock the
297         domain lock on failure. Use checked variant of
298         inflate_generic_signature.
299
300 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
301
302         * loader.c (mono_method_signature_checked): Use checked
303         variant of inflate_generic_signature.
304
305         Fixes #606353.
306
307 2010-07-10 Rodrigo Kumpera  <rkumpera@novell.com>
308
309         * metadata.c (mono_metadata_parse_type_internal): Don't use
310         cannonical types when a transient type was requested.
311
312         Fixes #608626.
313
314 2010-07-10  Mark Probst  <mark.probst@gmail.com>
315
316         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
317         All functions that touch the gray queue directly or indirectly now
318         take it as an argument.
319
320 2010-07-10  Mark Probst  <mark.probst@gmail.com>
321
322         * sgen-gray.c, sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c:
323         Put the gray queue data into a struct and pass it around.
324
325 2010-07-09 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * class.c (mono_method_can_access_method_full): Handle type
328         accessibility with very deep nested types.
329
330         * class.c (mono_method_can_access_field_full): Ditto.
331
332         Fixes #619300.
333
334 2010-07-10  Mark Probst  <mark.probst@gmail.com>
335
336         * sgen-gc.c, sgen-los.c, sgen-major-copying.c, sgen-marksweep.c,
337         sgen-scan-object.h: Use a macro for rounding up sizes and
338         addresses to ALLOC_ALIGN.
339
340 2010-07-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
341
342         * file-io.c: fix GetFileSystemEntries for patterns containing
343         directories.
344
345 2010-07-09  Mark Probst  <mark.probst@gmail.com>
346
347         * sgen-marksweep.c (major_finish_major_collection): Don't free
348         major heap blocks on 32 bit platforms because it can lead to
349         address space fragmentation.  We'll figure this out later.
350
351 2010-07-09  Mark Probst  <mark.probst@gmail.com>
352
353         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c: Free major
354         heap blocks for mark&sweep eventually.
355
356 2010-07-09  Mark Probst  <mark.probst@gmail.com>
357
358         * sgen-protocol.c: Fix build when binary protocol is disabled.
359
360 2010-07-09  Mark Probst  <mark.probst@gmail.com>
361
362         * sgen-protocol.c, sgen-gc.c: Make binary protocol lock-freely
363         thread-safe.
364
365 2010-07-08 Neale Ferguson <neale@sinenomine.net>
366
367         * sgen-archdep.h: Add support for s390x
368         * domain.c: Use gsize so that 64-bit big endian systems produce 
369         bitmap.
370
371 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
372
373         * pedump.c (verify_image_file): Initialize the vtable as well.
374
375 2010-07-07  Geoff Norton  <gnorton@novell.com>
376
377         * sgen-gc.h:  Not every system has sys/signal.h.  Prefer the posix
378         header.
379
380 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         * assembly.c (mono_assembly_load_reference): Replace a g_warning
383         with a mono_trace calls. This makes compiling MD a lot less scary.
384
385 2010-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
386
387         * verify.c (do_stobj): Improve error message.
388
389 2010-07-08  Mark Probst  <mark.probst@gmail.com>
390
391         * sgen-gc.c (OBJ_COMPLEX_ARR_FOREACH_PTR): Don't load the vtable
392         from the object because it might have pinned/forwarding bits set.
393
394 2010-07-06  Zoltan Varga  <vargaz@gmail.com>
395
396         * Makefile.am (sgen_sources): Add missing sgen files.
397
398 2010-06-07  Martin Baulig  <martin@ximian.com>
399
400         * mono-debug-debugger.c (mono_debugger_get_thread_abort_signal):
401         New helper function since mono_thread_get_abort_signal() is now
402         internal.
403
404 2010-06-07  Martin Baulig  <martin@ximian.com>
405
406         * mono-debug.h, debug-mono-symfile.h: Kill glib dependencies.
407
408 2010-07-02  Michael Hutchinson  <mhutchinson@novell.com>
409
410         * object-internals.h, object.h: Make mono_string_to_utf_8_checked 
411         public, as mono_string_to_utf_8 is deprecated.
412
413         * object.(c|h): Added mono_object_to_string, a public helper function 
414         that calls ToString on a MonoObject and returns a MonoString.
415
416         * object.c (mono_print_unhandled_exception): Use mono_object_to_string.
417
418 2010-07-01  Zoltan Varga  <vargaz@gmail.com>
419
420         * filewatcher.h filewatcher.h decimal.c threads-types.h: Applied patch
421         from Elijah Taylor (elijahtaylor@google.com). Fix some definitions to
422         match their declarations and vice-versa.
423
424
425 Wed Jun 30 12:08:36 CEST 2010 Paolo Molaro <lupus@ximian.com>
426
427         * class-internals.h, domain-internals.h: mark functions that are
428         needed by the llvm module.
429
430 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
431
432         * assembly.c (framework_assemblies): Add 3.5 assemblies.
433
434         * domain-internals.h (MonoRuntimeInfo): Increase version_sets
435         by one to have room to remap 3.5 assemblies.
436
437         * domain.c (supported_runtimes): Add 3.5 remapping information.
438
439 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
440
441         * reflection.c (mono_image_create_token): Handle a
442         FieldBuilder from a different assembly.
443
444         Fixes #611836.
445
446 2010-06-30 Rodrigo Kumpera  <rkumpera@novell.com>
447
448         * verify.c (do_store_static_field): Improve error
449         message.
450
451 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
452
453         * assembly.c: Revert r159692 since it breaks loading 3.5
454         assemblies under 2.0.
455
456 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
457
458         * icall.c (ves_icall_Type_make_array_type): Raise a TLE if a
459         TypedByRef is passed.
460
461         * icall.c (ves_icall_Type_make_byref_type): Ditto.
462
463         * icall.c (ves_icall_Type_MakePointerType): Ditto.
464
465         Fixes #612780.
466
467 2010-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
468
469         * assembly.c: Add a few more assemblies to the list of framework
470         assemblies.
471
472         Fixes #617714.
473
474 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
475
476         * class.c (mono_class_get_vtable_entry): Avoid a crash if mono_class_setup_vtable ()
477         fails.
478
479 2010-06-25  Mark Probst  <mark.probst@gmail.com>
480
481         * class.c (mono_class_inflate_generic_method_full_checked): Added
482         a comment regarding a hack in mini-trampolines.c.
483
484 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
485
486         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Use SIZEOF_VOID_P instead of
487         sizeof(SIZEOF_VOID_P) which is 4.
488
489         * gc.c (mono_gc_init): Move the GC disabled check to *-gc.c.
490
491 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
492
493         * null-gc.c boehm-gc.c: Define the mono_gc_ pthread wrapper functions for these
494         GCs too.
495
496         * *-gc.c (mono_gc_wbarrier_value_copy_bitmap): Implement this for all GCs.
497
498         * sgen-gc.c (mono_gc_is_moving): New function returning whenever this GC can move
499         objects.
500
501         * *-gc.c (mono_gc_set_desktop_mode): New function setting up the GC to work in
502         desktop mode.
503
504 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
505
506         * *-gc.c (mono_gc_get_description): New function returning a human readable
507         description of the current GC.
508
509 2010-06-24  Miguel de Icaza  <miguel@novell.com>
510
511         * mono-hash.c: Moved here from mono/utils as this file is
512         GC-aware, and the utils directory is not.
513
514 2010-06-23  Miguel de Icaza  <miguel@novell.com>
515
516         * Makefile.am: Add support for building a sgen-aware versions of
517         the libraries: libmonoruntimesgen.la libmonoruntimesgen-static.la,
518         they share all the components of the default, but use a differen
519         set of CFLAGS to enable SGEN instead.
520
521         Put the BOEHM defines in the CFLAGS definition. 
522
523         * domain-internals.h (MonoJitInfo): this structure used to have
524         different sizes depending on the GC that was configured (Boehm vs
525         SGen).   I have removed this difference for the sake of avoiding
526         the complexity of dealing with the mono/arch directory requiring
527         GC-specific changes to their Makefiles.
528
529 2010-06-23  Mark Probst  <mark.probst@gmail.com>
530
531         * sgen-gc.c, sgen-los.c, sgen-marksweep.c: Fix warnings.
532
533 2010-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
534
535         * metadata.c (mono_metadata_type_hash): Don't hash
536         the type kind for dynamic types since it can change.
537
538 2010-06-22 Geoff Norton  <gnorton@novell.com>
539
540         * sgen-os-mach.c: We cannot call malloc from the gc, so we need to use
541         alloca instead to prevent a deadlock.
542
543 2010-06-22  Geoff Norton  <gnorton@novell.com>
544
545         * domain.c: Allow gettings the tls key, since we need it for
546         cross thread tls poking in sgen-mach
547         * sgen-gc.(c|h), gc-internal.h: Rework sgen into having some functions
548         in external files for platform specific STW support.
549         * sgen-os-mach.c: Add a new mach kernel backend implementation of STW.
550         * sgen-os-posix.c: Move the existing posix signal based STW here.
551
552 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
553
554         * marshal.c (mono_array_to_lparray): Allow MONO_TYPE_PTR. Fixes #615952.
555
556 2010-06-21 Rodrigo Kumpera  <rkumpera@novell.com>
557
558         * object-internals.h: Map new PropertyBuilder fields.
559
560         * reflection.c (property_encode_signature): Emit an instance
561         signature if property's callconv is hasthis.
562
563         * appdomain.c: Bump corlib version.
564
565 2010-06-20  Jb Evain  <jbevain@novell.com>
566
567         * metadata-verify.c: do not consider the assembly invalid if it
568         doesn't have a #Blob stream as resource assemblies don't
569         necessarily have one.
570
571 2010-06-17  Geoff Norton  <gnorton@novell.com>
572
573         * sgen-archdep.h: sgen support for arm linux and darwin.
574
575 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
576
577         * loader.c (mono_method_get_header): Avoid a crash if the declaring method
578         has a faulty header.
579
580 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
581
582         * sgen-gc.c (mono_gc_wbarrier_value_copy_bitmap): Work in a similar
583         way to mono_gc_wbarrier_value_copy but takes a bitmap that
584         indicates which slots need a write barrier.
585
586 2010-06-14  Jonathan Pryor <jpryor@novell.com>
587
588         * Makefile.am (EXTRA_DIST): Add runtime.h.
589
590 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
591
592         * object.c (build_imt_slots): Don't crash if callbacks.get_imt_trampoline is not set.
593
594 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
595
596         * object.c (mono_method_add_generic_virtual_invocation): Fix the computation of the
597         IMT slot which is passed to callbacks.get_imt_trampoline.
598
599 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
600
601         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
602         imt trampoline per imt slot when using LLVM.
603
604 2010-06-10  Jonathan Pryor <jpryor@novell.com>
605
606         * object.c (mono_runtime_run_main): Move fire_process_exit_event() into
607           runtime.c:mono_runtime_shutdown().
608         * runtime.c: Added; adds mono_runtime_shutdown(), which invokes the
609           AppDomain.ProcessExit event in all AppDomains.
610
611 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
612
613         * marshal.c (mono_marshal_get_runtime_invoke): Don't set *exc to NULL, it is now
614         done by the caller.
615
616 2010-06-05  Mark Probst  <mark.probst@gmail.com>
617
618         * sgen-los.c: Keep bitmaps on chunk usage in LOS sections to speed
619         up freeing.
620
621 2010-06-05  Mark Probst  <mark.probst@gmail.com>
622
623         * sgen-gc.c, sgen-los.c: New LOS allocator that allocates large
624         segments of memory at once, to reduce the number of mmap/munmap
625         calls.
626
627 2010-06-05  Mark Probst  <mark.probst@gmail.com>
628
629         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: Protocol degraded
630         allocations and distinguish between normal, degraded and pinned
631         allocations.
632
633 2010-06-05  Mark Probst  <mark.probst@gmail.com>
634
635         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Make degraded
636         allocations count toward major collections and trigger major
637         collections from degraded allocations if appropriate.
638
639 2010-06-05  Mark Probst  <mark.probst@gmail.com>
640
641         * sgen-marksweep.c (ms_get_empty_block): Update heap boundaries.
642
643 2010-06-05  Mark Probst  <mark.probst@gmail.com>
644
645         * sgen-gc.c: Enable mark&sweep again.
646
647 2010-06-05  Mark Probst  <mark.probst@gmail.com>
648
649         * sgen-gc.c: Increase the maximum small object size to 8000 bytes.
650
651 2010-06-05  Mark Probst  <mark.probst@gmail.com>
652
653         * sgen-gc.c, sgen-major-copying.c, sgen-marksweep.c: Have only one
654         major heap allowance for minor collections, instead of two
655         separate ones for small and large objects.  This reduces the
656         number of major collections.
657
658 2010-06-04  Marek Habersack  <mhabersack@novell.com>
659
660         * icall.c (ves_icall_MonoType_GetEvent): be case insensitive is
661         the BFLAGS_IgnoreCase is raised
662
663 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
664
665         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Rewrite this so it returns
666         all information in a single structure. Return information about scopes as well.
667
668         * mono-debug.c (mono_debug_lookup_locals): Ditto.
669
670 2010-06-02  Geoff Norton  <gnorton@novell.com>
671
672         * appdomain.c: If we are running with IOMAP we might
673         have been provided a string that isn't case-aware for our file-
674         system, so we need to use io-portability to check if the file 
675         exists, rather than a simple glib test.
676
677         Fixes #608849
678
679 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
680
681         * verify.c (verify_generic_parameters): Verify if
682         there are not loops in constraints.
683
684 2010-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
685
686         * verify.c (is_compatible_boxed_valuetype): Constaints
687         must be recursively checked if one generic argument
688         has a constraint on another.
689
690         Fixes #610625.
691
692 2010-05-31  Miguel de Icaza  <miguel@novell.com>
693
694         * console-unix.c (terminal_get_dimensions): Fix my previous
695         botched commit and return the actual value obtained from the ioctl.
696
697 2010-05-29  Mark Probst  <mark.probst@gmail.com>
698
699         * sgen-gc.c: Always use DESC_TYPE_RUN_LENGTH for objects without
700         references so that we don't have to do the cache-cold fetch of the
701         class in copy_object_no_checks().
702
703 2010-05-29  Robert Jordan  <robertj@gmx.net>
704
705         * marshal.c (mono_marshal_asany): marshal LPWSTRs using
706         mono_marshal_string_to_utf16_copy () to avoid memory allocation
707         mismatches under Windows. Fixes pinvoke2:test_0_asany.
708
709 2010-05-28  Mark Probst  <mark.probst@gmail.com>
710
711         * sgen-gc.c: Change default nursery size to 4MB, because it
712         improves performance on many applications and benchmarks.
713
714 2010-05-28  Mark Probst  <mark.probst@gmail.com>
715
716         * sgen-gc.c, sgen-scan-object.h: Value types in arrays are not
717         always aligned to ALLOC_ALIGN.  To handle this, shift the size in
718         the GC descriptor by one bit, and don't encode the size for value
719         types not containing references.  Also get rid of
720         DESC_TYPE_STRING.
721
722 2010-05-28  Mark Probst  <mark.probst@gmail.com>
723
724         * sgen-gc.c: Don't depend on the size encoded in a GC descriptor
725         other than for remset processing.
726
727 2010-05-28  Mark Probst  <mark.probst@gmail.com>
728
729         * sgen-gc.c: More and better remset consistency checks.
730
731 2010-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
732
733         * sgen-gc.c: Add a note about the int[] trick to avoid some
734         memset.
735
736 2010-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
737
738         * sgen-gc.c (sort_addresses): Use heap sort since it has better
739         performance.
740
741         This helps programs with lots of threads or thread with big stacks
742         since the bottleneck the pin queue can get quite big.
743
744 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
745
746         * sgen-gc.c (search_fragment_for_size): Move fragment setup into
747         a separate function called setup_fragment.
748
749         * sgen-gc.c (search_fragment_for_size_range): Variant of
750         search_fragment_for_size that does search for a secondary smaller
751         size.
752
753         * sgen-gc.c (mono_gc_alloc_obj_nolock): Use search_fragment_for_size_range
754         for tlab allocation so small fragments are used.
755
756         This patch uses small fragments for tlab allocation when possible in order
757         to improve nursery utilization. With a fixed size tlab this patch is not very
758         usefull but once size gets dynamically adjusted, this will be invaluable.
759
760         Performance under pystone 500k is unchanged. Nursery utilization improves by
761         3.5% and 18 more fragments are used per minor GC.
762
763         Performance under modified binary-tree is unchanged. Nursery utilization
764         improves by 0.5% and 3 more fragments are used per minor GC.
765
766         These numbers make sense since as more pinning happens, more fragments are
767         created and so are the chances of having a bunch of small ones.
768
769 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
770         * sgen-gc.c (mono_gc_alloc_obj_nolock): Avoid wasting space     from
771         the current fragment when allocating a TLAB.
772
773         Reduces number of pystone 500k minor collections by 7%.
774
775 2010-05-25  Martin Baulig  <martin@ximian.com>
776
777         Applying a patch from Lucas Meijer <lucas@lucasmeijer.com>.
778
779         * debug-mono-symfile.c: Release memory from symfiles that were
780         loaded from memory.
781
782 2010-05-24  Zoltan Varga  <vargaz@gmail.com>
783
784         * marshal.c (mono_marshal_free_dynamic_wrappers): Avoid an assert when this is called
785         during shutdown.
786
787 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
788
789         * marshal.c (mono_marshal_get_runtime_invoke): Simplify the code computing the
790         target class and remove some dead code.
791
792 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
793
794         * metadata.c: Add a 'transient' argument to the MonoType creation functions, so
795         the MonoTypes inside method headers can be freed when the header is freed.
796
797 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
798
799         * threadpool.c: Fix the DISABLE_SOCKETS build.
800
801 2010-05-19 Martin Baulig  <martin@novell.com>
802
803         Fix #604911.
804
805         * threads.c (wait_for_tids_or_state_change): Use an
806         alertable WaitForMultipleObjectsEx().
807         (wait_for_tids): Likewise.
808
809 2010-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
810
811         * marshal.c (mono_marshal_init): Register mono_gchandle_get_target
812         icall.
813
814         * marshal.c (mono_delegate_to_ftnptr): Use a gchandle instead of
815         gc tracked memory.
816
817         * marshal.c (mono_marshal_emit_managed_wrapper): Retrieve the first
818         argument from a gchandle.
819
820         * marshal.c: Get rid of the delegate_target_locations hash table.
821
822         Fixes #605295.
823
824 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
825
826         * sgen-gc.c: Use _fast variants for string and array length.
827
828 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
829
830         * sgen-gc.c: Fix counters to be 64 bits.
831
832         * sgen-gc.c (dump_heap): Fix formating strings.
833
834 2010-05-17 Rodrigo Kumpera  <rkumpera@novell.com>
835
836         * sgen-gc.c (global_remset_location_was_not_added): New
837         function that implements a 2 element LRU cache for just
838         added remsets. It is used to avoid adding duplicate ones.
839
840         * sgen-gc.c (add_to_global_remset): Check cache before
841         adding new entry.
842
843         * sgen-gc.c (scan_from_remsets): Don't process global remsets
844         that fail the cache test.
845
846         * sgen-gc.c (scan_from_remsets): Simplify the global remset
847         loop removing one condtion that is not possible.
848
849         A 2 element LRU cache was chosen by profiling IronPython 2.6
850         pytones with 1M passes and corlib compilation.
851
852         For the ipy test duplication was originally 940.92, measured
853         by "Store remsets" divided by "Unique store remsets".
854
855         With a 2-element LRU, duplication went to 1.007. Without the
856         check in scan_from_remsets 1.438.
857
858         With a 16-elements LRU, duplication reduction was negligibe.
859         A single element cache was basically of no use.
860
861         With corlib compilation duplication went from  1.4 to 1.02.
862
863         Performance results is a 20% time decrease for ipy and 2%
864         with corlib.
865 2010-05-16  Zoltan Varga  <vargaz@gmail.com>
866
867         * mono-debug.c (mono_debug_cleanup): Fix a crash in the previous change.
868
869 2010-05-15  Geoff Norton  <gnorton@novell.com>
870
871         * mono-debug.c: Fix a leak of the global table on shutdown.
872
873 2010-05-15  Geoff Norton  <gnorton@novell.com>
874
875         * debug-mono-symfile.(c|h): Add mono_debug_symfile_free_location
876         to clean up MonoDebugSourceLocation's.
877
878 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
879
880         * class.c (mono_class_create_from_typedef): Fail a class
881         if there is a loop with its parent.
882
883         Fixes #598239.
884
885 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
886
887         * loader.c (mono_loader_set_error_type_load): Convert
888         a g_warninig to mono_trace_warning.
889
890 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
891
892         * class.c (mono_class_get_full): Release strings on failure
893         to avoid leaking them.
894
895 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
896
897         * class.c (mono_class_create_from_typedef): Only return
898         the class if no exceptions were detected.
899
900         * class.c (mono_class_create_from_typedef): Don't remove
901         broken classes from class_cache. Just set failure and
902         bail out.
903
904         This fixes a memory a memory leak where resolving the same
905         broken class multiple times resulted in a memory leak.
906
907         The right behavior would be to actually return the class
908         a let the caller figure it out.
909
910 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
911
912         * mono-ptr-array.h: Add mono_ptr_array_sort.
913
914         * reflection.c (mono_image_build_metadata): Replace that ugly
915         qsort call with mono_ptr_array_sort.
916
917 2010-05-13  Mark Probst  <mark.probst@gmail.com>
918
919         * sgen-gc.c: Switch to the copying major collector, because
920         Mark&Sweep is still buggy.
921
922 2010-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
923
924         * reflection.c (mono_image_build_metadata): Don't put managed
925         references on non-tracked memory.
926
927 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
928
929         * sgen-archdep.h (ARCH_COPY_SIGCTX_REGS): Fix this for amd64.
930
931 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
932
933         * icall.c: Switch to mono-ptr-array.h.
934
935 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
936
937         * Makefile.am: Add mono-ptr-array.h.
938
939         * mono-ptr-array.h: New header that implements
940         a GC tracked equivalent of g_ptr_array. 
941
942 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
943
944         * icall.c (ves_icall_Type_GetInterfaces): Rewrite this
945         method to avoid initializing the class.
946
947         Fixes #605115.
948
949 2010-05-12 Rodrigo Kumpera  <rkumpera@novell.com>
950
951         * icall.c (ves_icall_System_MonoType_getFullName): It
952         doesn't require to init the class.
953
954 2010-05-11  Miguel de Icaza  <miguel@novell.com>
955
956         * console-unix.c: Signal handlers now save and restore errno.   We
957         have never had a bug report about this, ioctl does change errno. 
958
959         Hide the unused method.   
960
961         Remove internal declarations from public headers.
962
963         Document what the signal handler is doing
964
965 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * sgen-gc.c (clear_unreachable_ephemerons): Clear
968         unreachable keys with a tombstone.
969
970         * sgen-gc.c (mark_ephemerons_in_range): Ignore
971         tombstone keys.
972
973 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
974
975         * icall-def.h:
976         * gc-internals.h:
977         * gc.c: New GC:get_ephemeron_tombstone.
978
979 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
980
981         * appdomain.c (create_exceptions): Rename to
982         create_domain_objects. Create the ephemeron tombstone object.
983
984         * domains-internals.h (MonoDomain): Add new field for the
985         ephemeron tombstone.
986
987         * domain.c (mono_domain_free): Set ephemeron_tombstone to
988         NULL.
989
990 2010-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
991
992         * sgen-gc.c (mono_gc_clear_domain): Both ephemerons
993         and dislinks must be processed before LOS since they
994         could end up with pointers to memory returned to the
995         OS.
996
997 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
998
999         * class.c (mono_class_alloc): New helper function to centralize memory allocation
1000         for classes, allocates either from the image mempool or from the heap.
1001
1002         * class.c: Use mono_class_alloc to allocate memory owned by classes.
1003
1004         * metadata.c (free_generic_class_dependents): Free more items belonging to
1005         generic classes.
1006
1007 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * reflection.c (mono_reflection_method_get_handle): Handle MonoGenericMethod
1010         as well. Fixes #604054.
1011
1012 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * metadata-verify.c: MS doesn't mind duplicates in the
1015         typeref table. Move it to full verification.
1016
1017         Fixes #600508.
1018
1019 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * image.c (do_mono_image_load): Report verification
1022         errors when loading an image fails.
1023
1024 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1025
1026         * reflection.c (mono_type_get_object): Remove chunk of code
1027         no longer in use.
1028
1029 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1030
1031         * icall-def.h
1032         * icall.c: Delete some unused icalls.
1033
1034 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1035
1036         * appdomain.c (mono_domain_has_type_resolve): Check for
1037         NULL domain objects to make pedump happy.
1038
1039         * object.c (mono_field_get_value): Assert on NULL object.
1040         It's the caller resposibility to check for this.
1041
1042         * object.c (mono_field_get_value_object): Ditto.
1043
1044         Fixes #601384.
1045
1046 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
1047
1048         * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
1049         checks can avoid doing a mono_class_init.
1050
1051         * icall.c: Remove mono_class_init from a bunch of icalls that
1052         don't need it.
1053
1054         Hopefully we're now lazy enough to fix most victims of #601431.
1055
1056 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1057
1058         * sgen-gc.c: Remove REMSET_ROOT_LOCATION.
1059
1060 2010-05-07  Mark Probst  <mark.probst@gmail.com>
1061
1062         * sgen-gc.c: Remove unnecessary checks in domain clearing code.
1063
1064 2010-05-07  Marek Habersack  <mhabersack@novell.com>
1065
1066         * culture-info-tables.h: updated to include en-TT culture. Fixes
1067         bug #594035
1068
1069 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         Move mono_class_init from mono_type_get_object to icalls.
1072         This causes massive memory savings for Assembly::GetTypes () and
1073         make it fail a lot less due to missing dependencies.
1074
1075         This is a conservative, naive change as it doesn't remove some
1076         mono_class_init from places that might not need them. Carefull
1077         review of those should follow.
1078
1079         * reflection.c (mono_type_get_object): Don't mono_class_init the
1080         returning type.
1081
1082         * reflection.c:
1083         * cominterop.c:
1084         * icall.c:
1085         * marshal.c: Call mono_class_init in functions receiving a MonoType
1086         object.
1087
1088         First step into fixing #601431.
1089
1090 2010-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1091
1092         * gc-internal.h: Add new functions required for ephemeron support.
1093
1094         * gc.c: Implement ves_icall_System_GC_register_ephemeron_array.
1095
1096         * icall-def.h: Add GC::register_ephemeron_array.
1097
1098         * object.c (compute_class_bitmap): sys.rt.cs.Ephemeronis an opaque type
1099         under sgen. Its fields must not be marked.
1100
1101         * sgen-gc.c (mono_gc_clear_domain): Call cleanup function for ephemerons.
1102
1103         * sgen-gc.c (finish_gray_stack): Mark all reachable ephemerons before
1104         handling finalizable objects. Clean dead ones after all finalizable
1105         handling.
1106
1107         * sgen-gc.c (dump_heap): Add new kind of internal memory.
1108
1109         * sgen-gc.c (null_ephemerons_for_domain): Remove from the list ephemeron
1110         arrays from the dead domain.
1111
1112         * sgen-gc.c (clear_unreachable_ephemerons): Clear dead ephemerons entries.
1113
1114         * sgen-gc.c (mark_ephemerons_in_range): Mark/Copy all ephemeron values
1115         whose keys are reachable.
1116
1117         * sgen-gc.c (mono_gc_ephemeron_array_add): Register the array into the
1118         list of live ephemeron arrays.
1119
1120 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1121
1122         * class.c (mono_class_layout_fields): Don't perform alignment
1123         if align is zero.
1124
1125         * class.c (mono_class_layout_fields): Init field related information
1126         to sane defaults.
1127
1128 2010-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
1129
1130         * verify.c (mono_verifier_verify_class): Verify the constraint
1131         of generic type definitions.
1132
1133 2010-05-04  Mark Probst  <mark.probst@gmail.com>
1134
1135         * sgen-marksweep.c: Simplify free list maintenance in sweep.
1136
1137 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1138
1139         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Unify
1140         major_do_collection() across the two major collectors.
1141
1142 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1143
1144         * sgen-gc.c: Add heavy statistics counter for re-added global
1145         remsets.
1146
1147 2010-05-02  Mark Probst  <mark.probst@gmail.com>
1148
1149         * sgen-marksweep.c, sgen-gc.c: Use one mark bit per ALLOC_ALIGN to
1150         get rid of a division in critical code.
1151
1152 2010-04-29  Mark Probst  <mark.probst@gmail.com>
1153
1154         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Have separate
1155         blocks for objects without references in mark&sweep, to improve
1156         performance.
1157
1158 2010-04-28  Mark Probst  <mark.probst@gmail.com>
1159
1160         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Bring heavy
1161         statistics up-to-date.
1162
1163 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1164
1165         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Support
1166         heap-dump for mark&sweep.
1167
1168 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * loader.c (mono_method_get_header): Move the is_inflated case before the
1171         wrapper case, as a method can be both.
1172
1173 2010-04-27  Mark Probst  <mark.probst@gmail.com>
1174
1175         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Don't do a
1176         separate pass to scan pinned and large object but use the gray
1177         queue like for regular objects.
1178
1179 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
1180
1181         * boehm-gc.c: Applied patch from Robert Nagy (robert@openbsd.org). Include
1182         string.h for memmove.
1183
1184         socket-io.c: Applied patch from Robert Nagy (robert@openbsd.org).
1185         ipaddress_to_struct_in6_addr() is only needed when
1186         defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ).
1187
1188 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1189
1190         * sgen-gc.c, sgen-marksweep.c, sgen-major-copying.c: Properly
1191         separate copy_object functions for major vs nursery.  Allows us to
1192         get rid of a few checks and the start and end parameters for many
1193         functions.
1194
1195 2010-04-25  Mark Probst  <mark.probst@gmail.com>
1196
1197         * sgen-marksweep.c, sgen-gc.c, sgen-major-copying.c,
1198         sgen-protocol.c, sgen-protocol.h, Makefile.am: Major Mark&Sweep
1199         collector.
1200
1201 2010-04-25  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * class.c (mono_class_create_from_typedef): Initialize class->nested_in after
1204         calling setup_mono_type () since the nested parent could recursively reference
1205         the nested class using generic constraints. Fixes #599469.
1206
1207 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1208
1209         * sgen-gc.c, sgen-pinning.c, sgen-major-copying.c: Major collector
1210         abstraction.
1211
1212 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1213
1214         * sgen-gc.c: Remove more unneeded code.
1215
1216 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1217
1218         * sgen-gc.c: Disable managed allocator and wbarrier when the
1219         binary protocol is enabled.
1220
1221 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1222
1223         * sgen-gc.c: Put nursery-fragment-cleaning into its own function.
1224
1225 2010-04-24  Mark Probst  <mark.probst@gmail.com>
1226
1227         * sgen-gc.c: Remove a few commented out and unneeded bits.
1228
1229 2010-04-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1230
1231         * threadpool.c: patch from Robert Nagy that fixes a nullref and
1232         uses mono_sem_wait instead of mono_sem_timedwait for openbsd.
1233
1234 2010-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1235
1236         * icall.c (ves_icall_type_is_assignable_from): Properly handle byref
1237         types.
1238
1239         Fixes #331126
1240
1241 2010-04-21  Mark Probst  <mark.probst@gmail.com>
1242
1243         * sgen-gc.c: Turn off semi-precise stack mark.
1244
1245 2010-04-20  Sebastien Pouliot  <sebastien@ximian.com>
1246
1247         * reflection.c (mono_custom_attrs_from_index): Use right function
1248         to free 'list' (i.e. g_list_free) if the verifier fails.
1249
1250 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1251
1252                 * verify.c: Handle the case where mono_type_get_underlying_type_any
1253                 returns NULL. Remove duplicated code between MONO_TYPE_GENERICINST
1254                 and MONO_TYPE_VALUETYPE in those case.
1255
1256                 Based on a slightly modified patch by Sebastien Pouliot  <sebastien@ximian.com>
1257
1258                 Hopefully Fixes #564253.
1259
1260 2010-04-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
1261
1262         * domain-internals.h: made threadpool_jobs volatile.
1263         * mono-wsq.c: add an assert to verify that the threadpool cleaned up
1264         all local jobs.
1265         * threadpool.c:
1266                 -When two threads try to initialize the socket IO pool,
1267                 the second one waits until the intialization is finished
1268                 instead of continuing right away.
1269                 -Add checks for domain unload: no items added in this case.
1270                 -Only measure the time every 10 elements added to the queue.
1271                 This is an experiment since linux x86 gettimeofday() sucks.
1272                 -Create new thread if there are none waiting for work items.
1273                 -There was a missing decrement of the busy threads.
1274                 -Make sure the local queue is cleaned up before exiting the
1275                 thread when the program ends.
1276
1277 2010-04-19 Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * reflection.c (mono_type_get_object): Normalize generics types
1280         as to how managed code expect them to be. A generic instance over
1281         the GTD arguments must have the same mirror as the GTD itself.
1282
1283         Fixes #473289.
1284
1285 2010-04-19  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * locales.c: Implement support for DISABLE_NORMALIZATION.
1288
1289 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * marshal.c (mono_marshal_get_native_func_wrapper): Set the marshal info to NULL,
1292         since it is not a MonoMethod.
1293
1294 2010-04-16  Sebastien Pouliot  <sebastien@ximian.com>
1295
1296         * icall-def.h: Add get_RequiresElevatedPermissions icall to
1297         System.Security.SecurityManager - used only by Moonlight
1298         * security-core-clr.c|h: Add Elevated Trust/Permission support
1299         for CoreCLR / Moonlight
1300
1301 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * boehm-gc.c (mono_gc_base_init): Applied patch from Robert Nagy
1304         (robert@openbsd.org). Fix GC_stackbottom calculation on OpenBSD.
1305
1306 2010-04-16  Marek Habersack  <mhabersack@novell.com>
1307
1308         * mono-perfcounters.c: added code for the "Mono
1309         Memory/Total Physical Memory" performance counter.
1310
1311         * mono-perfcounters-def.h: added definition of the "Mono
1312         Memory/Total Physical Memory" performance counter.
1313
1314 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1315
1316         * class.c (mono_class_get_method_by_index): Return NULL
1317         on type load failures.
1318
1319 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1320
1321         * class.c (mono_class_from_typeref): Check if the supplied
1322         image has an assembly bound to it.
1323
1324         Fixes #567884.
1325
1326 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1327
1328         * loader.c (mono_method_get_signature_full): Use new function
1329         inflate_generic_signature_checked to check for errors.
1330
1331         Fixes #560839.
1332
1333 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1334
1335         * loader.c (inflate_generic_signature): Add _checked variant
1336         and move this function to use it.
1337
1338 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1339
1340         * class.c (mono_class_setup_vtable_general): Use error checking
1341         version of mono_class_inflate_generic_method_full.
1342
1343         Fixes #596975.
1344
1345 2010-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1346
1347         * class.c (mono_class_inflate_generic_type_no_copy): Do proper
1348         error handling passing MonoError around.
1349
1350         Fixes #560336.
1351
1352 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1353
1354         * socket-io.c: make GetHostByName ("") work on windows.
1355         Fixes bug #456723.
1356
1357 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1358
1359         * object-internals.h:
1360         * threads.c: use a spin lock when accesing the per-thread appdomain
1361         list.
1362
1363 2010-04-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
1364
1365         * threads.c: no need to take the threads lock in push/pop appdomain.
1366
1367 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1368
1369         * reflection.c (_mono_reflection_parse_type): MS supports
1370         non-assembly-qualified types in a generic type parameter list
1371         when enclosed in '[]' (which signals that they should be a fqn).
1372
1373         This breaks ECMA specs for how type names are encoded in cattr
1374         blobs but F# does it.
1375
1376         Fixes #576342.
1377
1378 2010-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380         * icall.c (ves_icall_InternalInvoke): Check if the vtable is sane
1381         for instance methods/ctors.
1382
1383         Fixes #422113.
1384
1385 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1386
1387         * reflection.c: Use the new verifier support for checking
1388         custom attributes.
1389
1390         Fixes #595306.
1391
1392 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * metadata-verify.c: Implement structural verification
1395         of custom attributes. This check requires access to the
1396         loader since to resolve the size of an enum we have to
1397         look it up.
1398         We don't check if named argumenments are encoded in a
1399         compatible fashion to their underlying field/prop.
1400         Maybe we should?
1401
1402         * verify-internals.h: Add two new cattr verification API.
1403
1404 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1405
1406         * metadata-verify.c (decode_signature_header): Fix signature.
1407
1408 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1409
1410         * verify.c (mono_verifier_is_enabled_for_method): Handle
1411         assembly less images.
1412
1413         * verify.c (mono_verifier_is_class_full_trust): Ditto.
1414
1415 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1416
1417         * loader.c (mono_method_signature_checked): Properly
1418         init MonoError.
1419
1420         * loader.c (mono_method_signature): It's the calee
1421         resposibility to init the error object.
1422
1423 2010-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1424
1425         * metadata-verify.c (decode_signature_header): Do proper
1426         overflow checking.
1427
1428 Tue Apr 13 12:36:29 CEST 2010 Paolo Molaro <lupus@ximian.com>
1429
1430         * reflection.c: maintain the invariants required by
1431         mono_class_layout_fields() also in typebuilder_setup_fields ().
1432
1433 2010-04-11  Sebastien Pouliot  <sebastien@ximian.com>
1434
1435         * security-core-clr.c: Call mono_class_setup_methods in 
1436         get_default_ctor before checking klass->methods. Fix typo in
1437         comment
1438
1439 2010-04-10  Jb Evain  <jbevain@novell.com>
1440
1441         * domain.c (supported_runtimes): remove .net 4.0 beta 2 and
1442         add .net 4.0 RTM version.
1443
1444 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1445
1446         * reflection.c (resolve_object): Properly inflate generic
1447         methods when a context is supplied.
1448
1449         Fixes #591226.
1450
1451 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1452
1453         * verify.c (mono_method_verify): A switch op don't empty
1454         the stack for the next one. Fixes a bug when running fsi
1455         under --verify-all.
1456
1457 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1458
1459         * metadata-verify.c (is_valid_standalonesig_blob): Accept
1460         fields as valid standalone sig too. F# does generate them.
1461
1462         * metadata-verify.c (verify_typedef_table_full): Ignore
1463         what <module> extends.
1464
1465 2010-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1466
1467         * verify.c (do_invoke_method): It's ok to do use call with
1468         virtual, non-final methods if their class is sealed.
1469
1470 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * icall.c (ves_icall_MonoField_GetValueInternal): This function
1473         is a near identical copy of mono_field_get_value_object. So simply
1474         call it.
1475
1476         * object.c (mono_field_get_value_object): Handle literal fields
1477         on open generic classes.
1478
1479         Fixes #594942.
1480
1481 2010-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1482
1483         * reflection.c (mono_reflection_create_runtime_class): Setup
1484         parent/supertype information again since it can be changed
1485         without notice.
1486
1487 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1488
1489         * verify.c (verify_type_compatibility_full): Properly handle
1490         stores between arrays of primitives.
1491
1492         Fixes the verifier side of #555950.
1493
1494 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1495
1496         class.c (mono_bounded_array_class_get): Properly init
1497         cast_class to take the fact that uint[] and int[] can be
1498         casted between each other.
1499
1500         Fixes #555950.
1501
1502 2010-04-07  Geoff Norton  <gnorton@novell.com>
1503
1504         * domain.c: Avoid a deadlock on osx.  Fixes #565765
1505
1506 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * icall.c (ves_icall_System_Enum_ToObject): Avoid a crash for unfinished type
1509         builders. Fixes #594464.
1510
1511 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1512
1513         * icall.c (ves_icall_System_Environment_Exit): Shutdown the threadpool before
1514         waiting for all threads to suspend, as those threads can't be suspended.
1515
1516 2010-04-08  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * threads.c (mono_thread_suspend_all_other_threads): Call ensure_synch_cs_set ()
1519         to avoid crashes on newly created threads.
1520
1521 2010-04-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1522
1523         * file-io.c: reset the MonoIOStat structure in case of error.
1524         Fixes bug #582667.
1525
1526 2010-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1527
1528         * class.c (print_implemented_interfaces): Print proper type name.
1529
1530         * class.c (mono_class_setup_vtable): Don't try that hard to produce
1531         the override map for generic instances since it later ignored.
1532
1533         * class.c (mono_class_implement_interface_slow): Don't break for
1534         dynamic generic instances.
1535
1536         * object.c (mono_runtime_invoke_array): Add an assert for allocation.
1537
1538         * reflection.c (mono_reflection_method_get_handle): New method that
1539         resolves a method handle.
1540
1541         * reflection.c (mono_reflection_get_dynamic_overrides): Handle the
1542         case when we override methods from a dynamic generic instance interface.
1543
1544         Fixes #575941.
1545
1546 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1547
1548         * threadpool.c: don't attempt to close the pipe when it has not been
1549         created.
1550
1551 2010-04-05 Gonzalo Paniagua Javier <gonzalo@novell.com>
1552
1553         * threadpool.c: if there are no waiting threads, try to start a new
1554         one. This fixes the not-so-random hangs in System.ServiceModel tests.
1555         No need to use InterlockedCompareExchange to read volatile variables.
1556
1557 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1558
1559         * verify.c (verify_type_compatibility_full): Fail mixed valuetype
1560         and reference types that point to the same class.
1561
1562         Fixes #565598.
1563
1564 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         * verify.c (verify_stack_type_compatibility_full): Ignore constraints
1567         when verifying compatibility between a generic instance and a generic
1568         parameter.
1569
1570         * verify.c (check_is_valid_type_for_field_ops): Improve error message.
1571
1572         * verify.c (stack_slot_stack_type_full_name): Improve verification type
1573         name.
1574
1575         Fixes #587849.
1576
1577 2010-04-04  Mark Probst  <mark.probst@gmail.com>
1578
1579         * sgen-gc.c: Remove superfluous scanning of alloc-pinned objects.
1580
1581 2010-04-04  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * threads.c Applied some openbsd changes from Robert Nagy <robert@openbsd.org>.
1584
1585 2010-04-03  Marek Habersack  <mhabersack@novell.com>
1586
1587         * process.c: when cross-compiling with MinGW, force GetProcessId
1588         lookup using GetProcAddress.
1589
1590 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1591
1592         * sgen-gc.c: parse_environment_string_extract_number() must be
1593         static.
1594
1595 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1596
1597         * sgen-gc.c, sgen-gray.c: Macros for gray_object_enqueue() and
1598         gray_object_dequeue(), to make sure they're inlined.
1599
1600 2010-04-02  Mark Probst  <mark.probst@gmail.com>
1601
1602         * sgen-gc.c, sgen-gray.c: Fix a few debug levels, put a few
1603         asserts in inner loops into DEBUG and lower MAX_DEBUG_LEVEL.
1604
1605 2010-04-02  Jb Evain  <jbevain@novell.com>
1606
1607         * exception.c: remove dead code.
1608
1609 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * *-gc.c: Fix the signature of mono_gc_get_used/heap_size () to be consistent
1612         with mono-gc.h.
1613
1614 2010-04-01  Sanjoy Das <sanjoy@playingwithpointers.com>
1615
1616         * sgen-gc.c: Make the nursery size adjustable by the
1617         MONO_GC_PARAMS environment variable.
1618
1619         Code is contributed under MIT/X11 license.
1620
1621 2010-04-01 Gonzalo Paniagua Javier <gonzalo@novell.com>
1622
1623         * threadpool.c: threadpool threads wait is alertable.
1624         Fixes bug #592964.
1625         Reduced the stack size of the *poll_wait thread.
1626
1627 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
1628
1629         * exception.c|metadata-internals.h: Add new mono_get_exception_
1630         field_access_msg and mono_get_exception_method_access_msg 
1631         functions that accept a const char* parameter to provide more 
1632         details when the exception is thrown.
1633         * security-core-clr.c|h: Rework code to allow logging exceptions
1634         (export MONO_LOG_MASK="security") and to supply more details in
1635         [TypeLoad|MethodAccess|FieldAccess]Exception thrown. Also added
1636         mono_security_core_clr_is_field_access_allowed and 
1637         mono_security_core_clr_is_call_allowed to return an exception,
1638         with messages and logging, that can be emitted by method-to-ir.c
1639
1640 2010-04-01  Mark Probst  <mark.probst@gmail.com>
1641
1642         * sgen-gc.c, sgen-pinning-stats.c: In the heap-dump, dump each
1643         pinned object.
1644
1645 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * appdomain.c (mono_domain_assembly_postload_search): Avoid a crash/assert if
1648         the assembly name is not well formed utf8. Fixes #567882.
1649
1650 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * reflection.c (mono_reflection_create_generic_class): Set the flags field of
1653         the generic parameters from the builder. Fixes #473298.
1654
1655 2010-03-31  Miguel de Icaza  <miguel@novell.com>
1656
1657         * object.c (mono_class_proxy_vtable): Eliminate warning. 
1658
1659         * marshal.c (emit_marshal_boolean): Eliminate possible
1660         uninitialized local warning. 
1661
1662 2010-03-30  Sebastien Pouliot  <sebastien@ximian.com>
1663
1664         * class.c (mono_class_init): Postpone coreclr inheritance check
1665         until the end of the initialization (so we can check up the 
1666         default ctor manually for the core-clr inheritance rules).
1667         * security-core-clr.c: Add the missing (undocumented) checks on
1668         default constructors when verifying inheritance rules.
1669
1670 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1671
1672         * domain-internals.h (MonoJitExceptionInfo): Add new field
1673         handler_end to the data union. To be used to point the end
1674         of a finally block.
1675
1676 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1677
1678         * reflection.c: Add support for new v4 type
1679         System.Reflection.MonoModule that is the concrete version
1680         of Module which is abstract unver v4.
1681
1682 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1683
1684         * class.c (mono_class_init): Don't set class failure after
1685         inited = 1 is set. It must be done before.
1686
1687 2010-03-30  Andreas Färber  <andreas.faerber@web.de>
1688
1689         * mono-config.c: Add support for OS "haiku"
1690         * ChangeLog: Fix UTF-8 encoding
1691
1692         Code is contributed under MIT/X11 license.
1693
1694 Tue Mar 30 15:53:06 CEST 2010 Paolo Molaro <lupus@ximian.com>
1695
1696         * console-unix.c: fixed include logic for sys/ioctl.h.
1697
1698 2010-03-30  Mark Probst  <mark.probst@gmail.com>
1699
1700         * threads.c: Fix bitmap generation for TLS marking on 64 bit
1701         systems.
1702
1703 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * icall.c (ves_icall_System_Enum_get_underlying_type): Don't crash on
1706         unfinished/broken typebuilders.
1707
1708 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1709
1710         * sgen-gc.c: Use the same heuristic for the LOS target that we use
1711         for the minor section allowance.
1712
1713 2010-03-29  Raja R Harinath  <harinath@hurrynot.org>
1714
1715         * metadata-verify.c (INVALID_METHOD_IMPLFLAG_BITS): Allow bit 6
1716         "NoOptimization".
1717
1718 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1719
1720         * sgen-gc.c: Count bytes allocated with heavy statistics.
1721
1722 2010-03-29  Mark Probst  <mark.probst@gmail.com>
1723
1724         * sgen-gc.c: More detailed time statistics.
1725
1726 Mon Mar 29 11:52:34 CEST 2010 Paolo Molaro <lupus@ximian.com>
1727
1728         * gc-internal.h, sgen-gc.c, threads.c, utils/mono-hash.c:
1729         fix the user defined mark interface to pass a pointer
1730         to the object location and not the object itself.
1731
1732 2010-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1733
1734         * reflection.c (mono_method_body_get_object): Release
1735         the method header before the call to CACHE_OBJECT since
1736         this is a macro that returns.
1737
1738 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1739
1740         * class.c (inflate_generic_type): mono_metadata_type_dup
1741         already dupes array information, the g_memdup was just
1742         leaking memory.
1743
1744 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1745
1746         * verify.c: Add stack_peek function. Fix CEE_DUP
1747         to not read from invalid memory if push did expand
1748         the stack.
1749
1750 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * verify.c: Remove old table verification code that has
1753         been superseeded by the new metadata verifier.
1754
1755         * verify.h: Remove mono_image_verify_tables from the public
1756         API.
1757
1758         * pedump.c: Fix for removed bits.
1759
1760 2010-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1761
1762         * verify.c: Allocate stack slows lazily to reduce stack usage
1763         in case of methods with huge stacks. Reduces memory consumption
1764         for mcs yyparse from 459Mb to 1.8Mb.
1765
1766 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1767
1768         * threadpool.c: don't try executing items from domains being
1769         unloaded. Fixes appdomain-async-invoke test.
1770
1771 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1772
1773         * threadpool.c: spin while the threadpool initializes.
1774         * mono-wsq.c: if the WSQ has not been initialized or has been shut
1775         down, don't do anything.
1776
1777 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * threads.c (mono_thread_create_internal): Set the GC type of the
1780         threads_starting_up hash table.
1781
1782 2010-03-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1783
1784         * threadpool.c: reset 'state' to avoid returning non-null when the
1785         event type is not found.
1786
1787 Fri Mar 26 19:03:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1788
1789         * sgen-gc.c: make copy_object () take the address of the
1790         slot holding the reference. This allows saving memory stores
1791         when not needed and it allows keeping track of oldspace->nursery
1792         references for the card table code.
1793
1794 2010-03-26  Andreas Färber  <andreas.faerber@web.de>
1795
1796         * null-gc.c (mono_gc_invoke_with_gc_lock): Fix function name.
1797
1798         Code is contributed under MIT/X11 license.
1799
1800 Fri Mar 26 11:33:17 CET 2010 Paolo Molaro <lupus@ximian.com>
1801
1802         * object.c, threads.c, threads-types.h, threads.h: make the
1803         managed thread local storage references precisely tracked.
1804
1805 2010-03-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1806
1807         * threadpool.[ch]: reworked the threadpool:
1808                 -Threadpool threads use a work-stealing queue. Adding a work
1809                 item from a threadpool thread will queue it in the thread
1810                 local queue without locking (in most cases).
1811                 -epoll events are coalesced before being added to the IO
1812                 queue.
1813                 -Dynamically change the number of active threads
1814                 -Changed the global queue to be more GC friendly
1815
1816         * class-internals.h: add 2 new performance counters for the number of
1817         threads in the threadpool and the IO threadpool.
1818
1819         * object-internals.h: new field in MonoAsyncResult.
1820         * icall-def.h: new internal call for queueing work items.
1821
1822         * Makefile.am: add 2 new files.
1823
1824         * appdomain.c: bump up corlib version.
1825
1826         * mono-wsq.[ch]: an implementation of a work-stealing queue.
1827
1828         * mono-perfcounters-def.h:
1829         * mono-perfcounters.c: added 2 new performance counters.
1830
1831 2010-03-26  Mark Probst  <mark.probst@gmail.com>
1832
1833         * sgen-gc.c: More FIXME/TODO updates.
1834
1835 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1836
1837         * gc-internal.h, sgen-gc.c, sgen-gc.h, boehm-gc.c, null-gc.c: New
1838         function mono_gc_invoke_with_gc_lock() which invokes a function
1839         with the guarantee that no collection will occur during its execution.
1840
1841 2010-03-25  Mark Probst  <mark.probst@gmail.com>
1842
1843         * sgen-gc.c: Update a few comments.
1844
1845 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         * reflection.c: Add support for new v4 type
1848         System.Reflection.MonoAssembly that is the concrete version
1849         of Assembly which is abstract unver v4.
1850
1851 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1852
1853         * reflection.c (mono_reflection_get_custom_attrs_info): Protect
1854         code that uses System.Reflection.Emit in DISABLE_REFLECTION_EMIT.
1855
1856         Expose a few macros that are needed for SR but not SRE to the
1857         world (previous inside the SRE ifdef)
1858
1859 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1860
1861         * sgen-gc.c (gc_register_current_thread): We need
1862         stack_start_limit as well in the non-attribute pthread case.
1863
1864 2010-03-23 Rodrigo Kumpera  <rkumpera@novell.com>
1865
1866         * threads.c: Fix windows build.
1867
1868 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1869
1870         * thread-types.h: Add mono_thread_resume_interruption.
1871
1872         * threads.c: Add mono_thread_resume_interruption, this
1873         function should be called after the last protected handler
1874         found at interruption time has finished.
1875
1876 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * threads.c (ves_icall_System_Threading_Thread_ResetAbort):
1879         Check MonoInternalThread's ::state instead of ::abort_exc
1880         since the later can be lazily created.
1881
1882         This is specially problematic when running a finally block
1883         under AbortRequested state. ResetAbort must work, but the
1884         abort_exc object has not been created because interruption
1885         has not began.
1886
1887 2010-03-22  Geoff Norton  <gnorton@novell.com>
1888
1889         * locales.c: Its possible for CFStringGetCStringPtr
1890         to return null and not convert encodings.  Use
1891         CFStringGetCString instead.
1892
1893 Mon Mar 22 18:06:38 CET 2010 Paolo Molaro <lupus@ximian.com>
1894
1895         * class-internals.h, class.c, object.c: introduce compressed
1896         interface bitmaps (for now only under small config): this saves
1897         about 600 KB of runtime memory on gmcs bootstraps or monodevelop
1898         startups.
1899
1900 Mon Mar 22 16:03:34 CET 2010 Paolo Molaro <lupus@ximian.com>
1901
1902         * mono-debug.c: don't try to get the method header, it causes a
1903         deadlock and it is not used for anything anymore.
1904
1905 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * loader.c (mono_method_get_marshal_info): Fix the handling of dynamic methods
1908         broken by the last change.
1909
1910 2010-03-21  Andreas Färber  <andreas.faerber@web.de>
1911
1912         * socket-io.c: Don't depend on AF_SNA, AF_DECnet,
1913         SOCK_RDM.
1914         
1915         Code is contributed under MIT/X11 license.
1916
1917 2010-03-20  Sanjoy Das <sanjoy@playingwithpointers.com>
1918
1919         * sgen-gc.c (mono_gc_get_write_barrier): Handle non-aligned
1920         nursery.
1921
1922         Code is contributed under MIT/X11 license.
1923
1924 2010-03-19  Martin Baulig  <martin@ximian.com>
1925
1926         * mono-debug.c (MonoDebugWrapperData): Replace `cil_code' with a
1927         dummy field, containing an empty string.
1928         (mono_debug_add_method): Don't call mono_disasm_code() for wrappers.
1929
1930
1931 Fri Mar 19 17:26:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1932
1933         * class.c: setup_interface_offsets() refactor to not call
1934         mono_class_get_implemented_interfaces () more times than needed and
1935         to reduce the runtime memory requirements to be O(num_interfaces)
1936         instead of O(max_interface_id).
1937
1938 2010-03-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1939
1940         * mono-mlist.[ch]: add mono_mlist_set_next ().
1941
1942 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1943
1944         * domain-internals.h: Add MonoTryBlockHoleJitInfo struct and
1945         associated changes to support holes in the protected range of a
1946         try block.
1947
1948         * domain.c: Add mono_jit_info_get_try_block_hole_table_info, which
1949         retrieves the holes table from a given MonoJitInfo.
1950
1951 Tue Mar 16 13:11:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1952
1953         * object.h, object-internals.h, object.c, icall.c, gc-internal.h,
1954         debug-helpers.c, cominterop.c, process.c, sgen-gc.c, socket-io.c:
1955         hide the contents of the MonoString and MonoArray structs from the
1956         public API. Change the accessor macros to accessors functions where
1957         needed. Adjusted the array API to allow for pointer-sized lengths and
1958         starting positions, so 64 bit arrays can be optionally provided in an
1959         API compatible way if needed on 64 bit systems.
1960
1961 Tue Mar 16 10:18:07 CET 2010 Paolo Molaro <lupus@ximian.com>
1962
1963         * class-internals.h, class.c, loader.c, marshal.c, metadata.c,
1964         reflection.c: the MonoMethodNormal struct is now unused, so remove it.
1965
1966 Mon Mar 15 18:28:00 CET 2010 Paolo Molaro <lupus@ximian.com>
1967
1968         * class-internals.h: remove the method header from MonoMethod since
1969         from now on it will be transient. We have a header pointer for method
1970         wrappers, since in that case we need to keep track of it. For this
1971         reason, all the Reflection.Emit generated methods use MonoMethodWrapper
1972         structs now. The same happens with MonoMethodInflated.
1973         * class.c: reset the sre_method flag for inflated method structures:
1974         this makes the code that cares look at the header in the MonoMethodInflated
1975         structure.
1976         * loader.c: lookup the method header in the appropriate field now that
1977         it is removed from MonoMethod.
1978         * metadata-internals.h: add a flag to the method header to know if it
1979         can be freed inside mono_metadata_free_mh ().
1980         * method-builder.c: updates after moving the header field from
1981         MonoMethod to MonoMethodWrapper.
1982         * reflection.c: MonoMethods generated from Reflection.Emit use
1983         MonoMethodWrapper structs if they need a method header now (later take
1984         advantage of this and remove all the current unsafe uses of method_aux_hash).
1985         * metadata.c: make method header parsing not leak when verification
1986         fails. Alloc it with g_malloc() and free it in mono_metadata_free_mh().
1987         These changes save a few hundred KB of runtime memory in a mcs
1988         bootstrap or a monodevelop startup.
1989
1990 2010-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1991
1992         * verify.c: Improve error message.
1993
1994 2010-03-12  Jb Evain  <jbevain@novell.com>
1995
1996         * reflection.c (add_exported_type): populate the exported
1997         table with the type's nested type.
1998
1999 2010-03-10  Mark Probst  <mark.probst@gmail.com>
2000
2001         * sgen-gc.c (STRING_SIZE): Semi-revert r153342.  I'm an idiot who
2002         can't read parentheses.
2003
2004 2010-03-10  Mark Probst  <mark.probst@gmail.com>
2005
2006         * threads.c (thread_cleanup): Add a guard to dereferencing
2007         "thread" to avoid an unlikely race condition.
2008
2009 2010-03-09  Sebastien Pouliot  <sebastien@ximian.com>
2010
2011         * assembly.c: Fix crash in moon-unit when aname->culture is NULL
2012         instead of an empty string.
2013
2014 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2015
2016         * object-internals.h (_G_BOOLEAN_EXPR): Fix the definition of this to explicitly
2017         convert to a boolean, recent gcc versions compile this differently.
2018
2019 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2020
2021        * sgen-gc.c (safe_object_get_size): Avoid a function call so this can really be
2022        inlined.
2023
2024 2010-03-09  Mark Probst  <mark.probst@gmail.com>
2025
2026         * sgen-gc.c (STRING_SIZE): Off by one.
2027
2028 2010-03-09  Mark Probst  <mark.probst@gmail.com>
2029
2030         * sgen-archdep.h: Fix the signal context register access for
2031         AMD64.
2032
2033 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
2034
2035         * sgen-gray.c: Get rid of the unused 'start' field in GrayQueueSection.
2036
2037 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         * verify.c: Store the initial basic block returned by mono_basic_block_split
2040         so we can release the whole list and not just the first one.
2041
2042 Mon Mar 8 17:30:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2043
2044         * verify.c, debug-helpers.c, profiler.c, loader.c,
2045         mono-basic-block.c, mono-debug.c, reflection.c: prepare to make
2046         MonoMethodHeader a transient entity.
2047
2048 2010-03-08  Zoltan Varga  <vargaz@gmail.com>
2049
2050         * sgen-gc.c (scan_needed_big_objects): Call drain_gray_stack () to avoid
2051         uncontrolled growth of the gray stack.
2052
2053         * sgen-gray.c: Rewrite this so it behaves like a stack, not a queue, so recently
2054         added items are removed first, improving cache locality. Avoid freeing queue
2055         segments in the fast path, use the list of segments as the free list, truncate
2056         it to its max size at the start of collection.
2057
2058 Mon Mar 8 10:13:52 CET 2010 Paolo Molaro <lupus@ximian.com>
2059
2060         * metadata-internals.h: more memory savings, both with small config and without.
2061
2062
2063 Sat Mar 6 19:12:12 CET 2010 Paolo Molaro <lupus@ximian.com>
2064
2065         * appdomain.c, domain-internals.h, domain.c, object.c:
2066         make class_vtable_hash into an array to reduce memory usage.
2067
2068 Sat Mar 6 18:16:35 CET 2010 Paolo Molaro <lupus@ximian.com>
2069
2070         * mempool.c, class-internals.h, class.c, icall.c, metadata.c,
2071         object-internals.h, object.c, reflection.c, threadpool.c:
2072         reduce resource usage when the small config is selected.
2073         In particular, up to 64K of methods/fields/properties/events
2074         are allowed and "other" methods in events are ignored.
2075
2076 Fri Mar 5 19:05:47 CET 2010 Paolo Molaro <lupus@ximian.com>
2077
2078         * threads.c: reduce resource usage when compiled for a small config.
2079
2080 2010-03-05  Mark Probst  <mark.probst@gmail.com>
2081
2082         * sgen-gc.c: Also collect number of degraded-alloced objects with
2083         heavy statistics.
2084
2085 2010-03-04  Geoff Norton  <gnorton@novell.com>
2086
2087         * assembly.c: Only support OSX bundling if the bundle is 
2088         actually detectable.
2089
2090 2010-03-04  Geoff Norton  <gnorton@novell.com>
2091
2092         * loader.c: The marshal specs are freed at the end of the call
2093         but it explicitly frees the strings as well as the container,
2094         so we need to dup them too to avoid referencing free'd memory.
2095
2096 2010-03-04  Geoff Norton  <gnorton@novell.com>
2097
2098         * icall-def.h:
2099         * icall.c: Add a new private internal icall to construct
2100         an object from its type without running the ctor.
2101
2102 Thu Mar 4 15:37:09 CET 2010 Paolo Molaro <lupus@ximian.com>
2103
2104         * profiler.c: allow multiple profiler engines to be loaded
2105         at the same time.
2106
2107 Wed Mar 3 20:19:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2108
2109         * profiler-private.h, profiler.c, profiler.h, sgen-gc.c: introduce
2110         profiler event to track object moves.
2111
2112 Wed Mar 3 19:20:39 CET 2010 Paolo Molaro <lupus@ximian.com>
2113
2114         * object.c, profiler.c, profiler.h, string-icalls.c:
2115         remove the reduntant MONO_PROFILE_STRING_ALLOC profiler event.
2116
2117 2010-03-03  Miguel de Icaza  <miguel@novell.com>
2118
2119         * decimal.c (mono_double2decimal): Add support for reducing the
2120         scale of a decimal.  It turns the 0.6000000000000 into 0.6 as
2121         expected.
2122
2123 2010-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2124
2125         * icall-def.h:
2126         * icall.c: Implement System.MonoType::get_core_clr_security_level icall.
2127
2128 2010-03-03  Marek Habersack  <mhabersack@novell.com>
2129
2130         * mono-config.c (mono_config_parse_assembly_bindings): added -
2131         parses assembly binding redirections from appdomain's config
2132         file.
2133
2134         * metadata-internals.h: added definition of a new function -
2135         mono_config_parse_assembly_bindings - to support parsing assembly
2136         binding redirections defined in appdomain's config file.
2137
2138         * domain-internals.h: added two new fields to _MonoDomain - a list
2139         of assembly bindings and a flag to parse the config file only
2140         once.
2141
2142         * assembly.c (assembly_binding_maps_name): empty culture name and
2143         NULL culture name are considered equal.
2144         (mono_assembly_apply_binding): added support for domain specific
2145         assembly binding redirections, read from the appdomain's
2146         configuration file. Fixes bug #580185
2147
2148 Wed Mar 3 11:46:06 CET 2010 Paolo Molaro <lupus@ximian.com>
2149
2150         * appdomain.c, domain.c, icall.c, image.c, marshal.c, object.c,
2151         reflection.c, socket-io.c, threadpool.c, threads.c: removed 1.1/1.0
2152         support.
2153
2154 2010-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2155
2156         * reflection.c (mono_image_get_memberref_token): Extract mono_image_add_memberef_row
2157         from this function. The new function receive the parent token instead of a type.
2158
2159         * reflection.c (mono_image_get_methodref_token_for_methodbuilder):
2160         * reflection.c (mono_image_get_ctorbuilder_token): Use new function to encode
2161         typebuilders. This make it possible to properly encode generic type builders since
2162         their unmanaged type don't have generics data while unfinished.
2163
2164         Fixes #583655.
2165
2166 2010-03-02  Mark Probst  <mark.probst@gmail.com>
2167
2168         * sgen-gc.c, sgen-protocol.c, sgen-protocol.h: New facility for
2169         writing binary log files (can be enabled by #define'ing
2170         BINARY_PROTOCOL) for better debugging of timing-dependent bugs or
2171         bugs in longer running programs.
2172
2173 Mon Mar 1 19:35:32 CET 2010 Paolo Molaro <lupus@ximian.com>
2174
2175         * metadata.c: added some API documentation.
2176
2177 2010-03-01  Robert Jordan  <robertj@gmx.net>
2178
2179         * filewatcher.h: Include glib.h to fix the MSVC build.
2180
2181 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * class-internals.h (MonoClass): Get rid of the reflection_info field, add
2184         a GC handle instead. This is a bit slower to access, but avoids burdening the
2185         GC with 100s of individual roots.
2186
2187         * reflection.c (mono_class_get_ref_info):
2188         (mono_class_set_ref_info):
2189         (mono_class_free_ref_info): New internal helper fuctions.
2190
2191         * reflection.c appdomain.c icall.c class.c: Use the new helper functions instead
2192         of accessing klass->reflection_info directly.
2193
2194         * sgen-gc.c (alloc_complex_descriptor): Fix the computation of the number of
2195         words.
2196
2197         * gc.c (alloc_handle): Create a GC descriptor for the 'entries' array, free
2198         the previous array.
2199
2200 2010-02-28  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * marshal.c (get_runtime_invoke_type): Avoid sharing byref with I, as the latter
2203         needs an indirection.
2204
2205 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * generic-sharing.c: Removed, moved its contents to mini/mini-generic-sharing.c,
2208         so all generic sharing code is in one place.
2209
2210         * class.c (get_implicit_generic_array_interfaces): Fix the last change so
2211         we don't call setup_interface_offsets () for unfinished types.
2212
2213 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * class.c (mono_class_generic_sharing_enabled): Move this to
2216         generic-sharing.c.
2217
2218         * image.c: Add an unload hook which is called before an image is unloaded.
2219
2220         * generic-sharing.c: Use the unload hook to unregister per-image data, to avoid
2221         metadata.c having to depend on generic sharing.
2222
2223 Fri Feb 26 19:23:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2224
2225         * class.c: reduce size of ridiculously large cache.
2226
2227 2010-02-26  Martin Baulig  <martin@ximian.com>
2228
2229         * mono-debug.h
2230         (MONO_DEBUGGER_MINOR_VERSION): Bump to 5.
2231
2232         * threads.c (mono_thread_internal_reset_abort): New method; resets
2233         the abort, but doesn't throw any exception if no abort was requested.
2234
2235 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * class.c (get_implicit_generic_array_interfaces): Call
2238         mono_class_setup_interface_offsets () before accessing
2239         eclass->interface_offsets_count. This only shows up on platforms without IMT for
2240         some reason.
2241
2242 Thu Feb 25 12:12:44 CET 2010 Paolo Molaro <lupus@ximian.com>
2243
2244         * environment.c, environment.h, icall.c: make the GetOSVersionString()
2245         icall internal.
2246
2247 Thu Feb 25 11:37:50 CET 2010 Paolo Molaro <lupus@ximian.com>
2248
2249         * metadata.c, metadata.h: make MONO_TYPE_IS* functional without
2250         direct access to the MonoType fields.
2251
2252 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * threads.h: Move some internal functions which were added to this header by
2255         mistake to threads-types.h.
2256
2257         * class.c (mono_class_init): Get rid of mono_setup_vtable_in_class_init.
2258
2259 Wed Feb 24 17:45:27 CET 2010 Paolo Molaro <lupus@ximian.com>
2260
2261         * class-internals.h, class.h, object.h: make MonoRemoteClass
2262         and mono_remote_class() internal.
2263
2264 Wed Feb 24 17:05:18 CET 2010 Paolo Molaro <lupus@ximian.com>
2265
2266         * metadata-internals.h, class-internals.h, metadata.h: make the
2267         MonoType guts internal as well.
2268
2269 Wed Feb 24 16:02:42 CET 2010 Paolo Molaro <lupus@ximian.com>
2270
2271         * reflection.h: the MonoTypeNameParse guts are internal now.
2272         * assembly.c, assembly.h, image.h: the MonoAssemblyName guts
2273         are internal now, provide accessors as needed.
2274         * metadata.h, metadata-internals.h: the MonoMethodSignature
2275         guts are internal now.
2276         * Makefile.am: mempool.h is an internal header now.
2277         * *.h, *.c: remove glib.h usage from the public headers.
2278
2279 2010-02-24  Atsushi Enomoto  <atsushi@ximian.com>
2280
2281         * culture-info-table.h : regenerated.
2282
2283 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
2284
2285         * metadata.c: Add mono_method_get_header_summary which returns minimal
2286         information about the header of a method. This is the information used
2287         by the inline oracle to reject methods.
2288
2289         This method doesn't decode local variables and doesn't cache it's result,
2290         so it should cause a minimal reduction in memory usage.
2291
2292         * metadata-internals.h: Add MonoMethodHeaderSummary structure and
2293         mono_method_get_header_summary.
2294
2295 2010-02-22  Jeffrey Stedfast  <fejj@novell.com>
2296
2297         * threads.c (mono_thread_exit): Make sure that the main thread is
2298         non-null before dereferencing it.
2299
2300 2010-02-21  Geoff Norton  <gnorton@novell.com>
2301
2302         * Makefile.am: Add CoreFoundation linkage on darwin to properly get the current
2303         locale.
2304         * locaes.c: When running on darwin, try to get the local from CoreFoundation 
2305         before falling back to the posix lookup.
2306
2307 2010-02-19  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * threads.c (mono_thread_suspend_all_other_threads): Ignore threads which have
2310         the DONT_MANAGE flag set.
2311
2312 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2313
2314         * domain.c: Remove old v1 version strings. Let the runtime
2315         default to 2.0 instead of failing because it can't find a
2316         working 1.0 instalation.
2317
2318 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2319
2320         * domain.c: Add v4 RC version string.
2321
2322 2010-02-19  Rodrigo Kumpera  <rkumpera@novell.com>
2323
2324         * mono-basic-block.c (mono_opcode_value_and_size): Use pointer variant
2325         of overflow checking function.
2326
2327 2010-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2328
2329         * reflection.c (mono_reflection_method_on_tb_inst_get_handle): Handle non
2330         generic methods.
2331
2332         * reflection.c (mono_reflection_get_custom_attrs_info): Handle compiler context
2333         cases for ParameterInfo.
2334
2335         Fixes #579493.
2336
2337 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * class.c (mono_class_get_cctor): Fix support for dynamic classes, which doesn't
2340         have has_cctor set. Fixes #575946.
2341
2342 2010-02-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2343
2344         * appdomain.c: display a warning if the parsing the config file
2345         produces any error.
2346         Skip the BOM in UTF-8 files.
2347         Copy the AppDomainSetup before setting the privateBinPath so that the
2348         correct configuration file is read.
2349
2350 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * object.c: Instead of using one vtable trampoline, allow the JIT to use one
2353         vtable trampoline per vtable slot index. Not used yet.
2354
2355 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2356
2357         * icall-def.h:
2358         * icall.c: add internal call that returns the system page size.
2359
2360 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
2361
2362         * debug-helpers.c (mono_method_desc_search_in_image): Handle short names like
2363         'int' for system classes.
2364
2365 Fri Feb 12 18:36:02 CET 2010 Paolo Molaro <lupus@ximian.com>
2366
2367         * icall.c, icall-def.h: new icall to check for sufficient
2368         stack space.
2369
2370 2010-02-12  Mark Probst  <mark.probst@gmail.com>
2371
2372         * reflection.c (ensure_complete_type): Check that reflection_info
2373         is set, too.  Fixes crash of corlib testsuite with -O=-all.
2374
2375 2010-02-11  Rodrigo Kumpera  <rkumpera@novell.com>
2376
2377         * attrdefs.h:
2378         * tabledefs.h: Add NoOptimization flag.
2379
2380 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2381
2382         * sgen-gc.c: Don't consider it a missing remset if the target
2383         object is pinned - we might have done the store but not added the
2384         remset yet.
2385
2386 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2387
2388         * sgen-gc.c: When checking for missing remsets, don't assert on
2389         the first one, but print them all and then assert.
2390
2391 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2392
2393         * sgen-gc.c (find_in_remset_loc): Handle the small bitmap case.
2394
2395 2010-02-09  Miguel de Icaza  <miguel@novell.com>
2396
2397         * console-unix.c: On OSX Control-Y is assigned to
2398         VDSUSP (non-Posix), the
2399         suspend-program-next-time-it-tries-to-read-input command (this is
2400         different than C-z, which suspends immediately).
2401
2402         Do the same thing that bash does and ignore this setting,
2403         making our repl/getline support pasting.
2404
2405 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2406
2407         * sgen-gc.c: Simple plausibility check for scan_starts.
2408
2409 2010-02-10  Mark Probst  <mark.probst@gmail.com>
2410
2411         * sgen-gc.c: Round up when calculating the number of scan starts.
2412
2413 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2414
2415         * reflection.c: Export mono_get_object_from_blob.
2416
2417         * object-internals.h: Ditto.
2418
2419         * icall.c: New icall property_info_get_default_value to get the default
2420         value of a property. Since using this is not common, no caching is done.
2421
2422         * icall-def.h: Add new icall.
2423
2424 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2425
2426         * class.c: Add mono_class_get_property_default_value.
2427
2428         * class-internal.h: Export mono_class_get_property_default_value.
2429
2430 2010-02-10  Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * reflection.c (mono_image_get_property_info): Encode the default value of a property.
2433
2434 Wed Feb 10 14:48:45 CET 2010 Paolo Molaro <lupus@ximian.com>
2435
2436         * sgen-gc.c: introduced critical regions to allow some lockless
2437         operations and increase scalability.
2438
2439 2010-02-10  Geoff Norton  <gnorton@novell.com>
2440
2441         * reflection.c: Support building with DISABLE_REFLECTION
2442
2443 2010-02-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
2444
2445         * threadpool.c: Fixes for SetMinThreads and SetMaxThreads.
2446         Closes bug #566057.
2447
2448         * exception.c: fix typo in comment.
2449
2450 2010-02-09  Rodrigo Kumpera  <rkumpera@novell.com>
2451
2452         * icall.c (param_info_get_type_modifiers): Handle the case when the member object is a
2453         property. This happens which instances returned by PropertyInfo::GetIndexParameters ().
2454
2455         * reflection.c (mono_reflection_get_custom_attrs_info): Ditto.
2456
2457         * object-internals.h: Export mono_class_is_reflection_method_or_constructor as part of
2458         the internal API.
2459
2460         Fixes #574434.
2461
2462 2010-02-09  Mark Probst  <mark.probst@gmail.com>
2463
2464         * threads.c: Removed two assertions that were too strict.  Added a
2465         clarifying comment.  Fixes #577090.
2466
2467 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * domain.c (mono_jit_info_table_find): Avoid looking in the root domain, since
2470         the caller has no way of knowing the domain which owns the returned MonoJitInfo.
2471
2472         * appdomain.c (create_exceptions): Call mono_thread_push/popappdomain_ref ().
2473
2474         * verify.c (mono_type_get_stack_name): Fix a warning.
2475
2476 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * marshal.c (mono_marshal_get_wrapper_info): Rename from
2479         mono_marshal_wrapper_info_from_wrapper.
2480
2481         * marshal.c (mono_marshal_set_wrapper_info): Rename from
2482         mono_marshal_method_set_wrapper_data, and export.
2483
2484         * boehm-gc.c sgen-gc.c null-gc.c: Get rid of mono_gc_get_allocator_type, store
2485         the allocator type in a AllocatorWrapperInfo structure instead, which is accesible
2486         by calling mono_marshal_get_wrapper_info ().
2487
2488         * sgen-gc.c (mono_gc_get_managed_allocator): Add a specialized allocator for
2489         small objects which does no size checks.
2490
2491 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2492
2493         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
2494
2495 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2496
2497         * verify.c (mono_method_verify): Use the new basic block formation pass
2498         to avoid verifying dead basic blocks. This is the same behavior as the
2499         runtime MS verifier.
2500
2501 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
2502
2503         * mono-basic-block.c:
2504         * mono-basic-block.h: New implementation of a basic block formation pass.
2505         The formation pass does static liveness analysis as well to detect dead
2506         basic blocks.
2507
2508 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
2509
2510         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
2511         'this' argument in icalls.
2512
2513 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
2516
2517 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2518
2519         * object.c, domain.c: When using SGen, we must register
2520         vtable->type as a root if it's not a MonoType, because then it
2521         wasn't pin-alloced.
2522
2523 2010-02-01  Mark Probst  <mark.probst@gmail.com>
2524
2525         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
2526         at the start of nursery collections, because we might have had
2527         degraded allocations which changed next_data.
2528
2529 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
2532         custom attr so this function works in cross-compiling mode.
2533
2534 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * class.c (make_generic_param_class): Initialize interface offsets since we
2537         set klass->inited. Fixes #574819.
2538
2539 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
2540
2541         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
2542         calling the JIT domain cleanup hook.
2543
2544 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2545
2546         * pedump.c (main): Properly set the verifier mode when running the metadata
2547         verifier.
2548
2549 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
2550
2551         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
2552         overlapping fields now that we're called before has_references is set.
2553
2554         * pedump.c (dump_verify_info): Clear any loader error before verifying another
2555         method. Otherwise all sort of weird stuff happens.
2556
2557 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * object.c (mono_field_get_value_object): Handle nullable types correctly.
2560         Fixes #572874.
2561
2562 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
2563
2564         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
2565         Fixes #573322.
2566
2567 2010-01-23  Mark Probst  <mark.probst@gmail.com>
2568
2569         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
2570         pin_staging_area_index is greater than 0.
2571
2572 2010-01-22 Miguel de Icaza (miguel@novell.com)
2573
2574         * loader.c: Since we do nothing with the error returned, pass NULL
2575         to ignore the error.
2576
2577 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2578
2579         * reflection.c (typebuilder_setup_fields): Pretend field setup already
2580         happened before starting to encode the actual fields. This avoid ciclic
2581         dependencies and eventual crashes.
2582
2583         Fixes #572660.
2584
2585 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2586
2587         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
2588         atomic and remove the half-constructed hack in SGen.
2589
2590 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
2593         has a recursive reference to itself.
2594
2595         Fixes #571863.
2596
2597 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
2598
2599         * loader.c (mono_method_signature): Fix error message.
2600
2601 2010-01-21  Mark Probst  <mark.probst@gmail.com>
2602
2603         * sgen-gc.c: Reuse to-space sections between nursery collections.
2604
2605 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2606
2607         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
2608         from the current assembly or mscorlib. Fixes bug #322957.
2609
2610 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * marshal.c: Calculate the target class of the delegete invoke wrappers using
2613         get_wrapper_target_class.
2614
2615 2010-01-19  Mark Probst  <mark.probst@gmail.com>
2616
2617         * sgen-gc.c: Fix warnings.
2618
2619 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2620
2621         * verify.c (store_local): Better error message.
2622
2623 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2624
2625         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
2626         arguments.
2627
2628 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2629
2630         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
2631         function is generics variance aware.
2632
2633 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
2634
2635         * security-core-clr.c (mono_security_core_clr_can_access_internals):
2636         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
2637
2638 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
2639
2640         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
2641           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
2642
2643         Code is contributed under MIT/X11 license.
2644
2645 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2646
2647         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
2648         on a GTD.
2649
2650 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2651
2652         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
2653         return a point to a wrapper specific info structure describing the wrapper.
2654         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
2655  
2656 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2657  
2658         * sgen-gc.c: Make minor collection section allowance adaptive,
2659         depending on the amount of memory reclaimed in the last major
2660         collection.  If more memory was reclaimed (i.e. more garbage
2661         produced), do the next collection earlier.
2662
2663 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2664
2665         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
2666         to itself.
2667
2668         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
2669         the token as parameter.
2670
2671         * verify-internals.h: Ditto.
2672
2673         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
2674
2675         Fixes #571460.
2676
2677 2010-01-18  Mark Probst  <mark.probst@gmail.com>
2678
2679         * sgen-gc.c: Make store_remset_buffer_index long.
2680
2681 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2682
2683         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
2684
2685         Fixes #569579.
2686
2687 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
2690         off precise marking if it is available.
2691         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
2692
2693 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
2696
2697         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
2698         pinned objects.
2699
2700         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
2701         to the array allocator.
2702
2703 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2704
2705         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
2706         result of mono_compile_method (), it already includes an ftnptr.
2707
2708 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
2711
2712 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2713
2714         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
2715         hash value which doesn't depend on glib/eglib versions.
2716         (mono_metadata_type_hash): Use it.
2717
2718         * object.c (mono_method_get_imt_slot): Ditto.
2719
2720 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
2721
2722         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
2723         independently of the GTD.
2724
2725         * class.c (mono_class_setup_fields): Fail if field has negative offset.
2726
2727         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
2728         to the upper limit since instance_size includes this amount.
2729
2730         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
2731
2732         Fixes #569544.
2733
2734 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2735
2736         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
2737         with static methods.
2738
2739         * object.c (build_imt_slots): Avoid asserting when static methods are
2740         encountered in an interface.
2741
2742 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2743
2744         * sgen-gc.c (to_space_expand): Fix assertion.
2745
2746 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
2747
2748         * string-icalls.c: missing declaration fixes.
2749         * sgen-gc.c: portability fixes.
2750
2751 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2752
2753         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
2754
2755         * class.c:
2756         * cominterop.c:
2757         * icall.c:
2758         * object.c: 
2759         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
2760
2761 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
2762
2763         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
2764         it can fail loading the type.
2765
2766         * class.c: Add mono_class_inflate_generic_class_checked.
2767
2768         * class.c:
2769         * verify.c:
2770         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
2771
2772 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * loader.c (mono_method_signature_checked): New internal function taking an
2775         MonoError argument.
2776
2777         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
2778         Fixes build on rh 7.3.
2779
2780 2010-01-10  Aaron Bockover  <abockover@novell.com>
2781
2782         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
2783         at runtime in the same way as on Windows, which yields a relocatable
2784         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
2785         of the running mono process.
2786
2787         On TARGET_ARM, fallback () will always be executed.
2788
2789 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2790
2791         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
2792
2793 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2794
2795         * class.c (mono_class_is_assignable_from_slow): Support variant
2796         generic delegates.
2797
2798         * class.c (mono_class_implement_interface_slow): Support types with
2799         variant generic arguments.
2800
2801 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2802
2803         * verify.c: Remove some code duplication.
2804
2805 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2806
2807         * object.c: Update docs.
2808
2809 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2810
2811         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
2812
2813         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
2814         fallback trampoline as well.
2815
2816         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
2817         out argument that is set to TRUE if the match was direct. 
2818
2819         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
2820
2821         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
2822
2823 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2824
2825         * class.c: Add mono_class_interface_offset_with_variance function that does same
2826         as mono_class_interface_offset but takes variance into account.
2827
2828         * class-internal.h: Export mono_class_interface_offset_with_variance.
2829
2830         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
2831
2832 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2833
2834         * object.c:
2835         * icall.c:
2836         * class.c: Add some FIXME for due to variant generic arguments.
2837
2838         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
2839         can't use the simple bitfield check, so call mono_class_is_assignable_from if
2840         the bitfield check fails.
2841
2842 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2843
2844         * class.c (mono_class_is_assignable_from): Rework the generics variance code
2845         to be easier to read and fix bugs in the case a non generic type implements a variant
2846         interface.
2847
2848         * class.c (mono_class_has_variant_generic_params): Make non static.
2849
2850         * class-internals.h: Export mono_class_has_variant_generic_params as part of
2851         the private API.
2852
2853 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2854
2855         * assembly.c: fix MONO_PATH debug output.
2856
2857 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
2858
2859         * culture-info-table.h : regenerated.
2860
2861 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2862
2863         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
2864         types that are meant to not have a parent.
2865
2866 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
2869         from the image mempool, so it is not leaked.
2870
2871 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
2874
2875 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
2876
2877         * verify.c (verify_valuetype_layout_with_target): Fix case
2878         that can lead to infinite recursion. Fix bug #567861
2879
2880 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2881
2882         * pedump.c: Run code verifier even if image verification fails
2883         due to a failed type we. This allows more errors to be shown.
2884
2885 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2886
2887         * class.c (count_virtual_methods): Remove the assert and now
2888         fail properly.
2889         
2890         * class.c (setup_interface_offsets): This can fail now.
2891
2892         * class.c (mono_class_setup_vtable_general): Check for parent vtable
2893         errors. Check setup_interface_offsets errors.
2894
2895         * class.c (setup_interface_offsets): Simplify the return error logic
2896         and remove class_init_ok.
2897
2898         Fixes #560327.
2899
2900 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2901
2902         * class.c (mono_class_init): Do class verification at the beginning. Add
2903         some asserts to avoid tripping into invalid memory.
2904
2905         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
2906         g_error and a decent message.
2907
2908         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
2909
2910         Fixes #567548.
2911
2912 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2913
2914         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
2915         as inline functions instead of defining them in mempool.c.
2916
2917         * metadata-internals.h (MonoImageSet): New structure representing a set of
2918         MonoImages, which own a collection of generic instances.
2919
2920         * metadata.c: Get rid of the global generic caches, instead assign each generic
2921         instance to the image set which consists of all the images referenced by the
2922         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
2923         the memory used by generic instances to be allocated from a per image-set mempool
2924         later.
2925
2926 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
2929
2930 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * appdomain.c (zero_static_data): Fix a warning.
2933
2934         * locales.c (construct_culture_from_specific_name): Applied patch from
2935         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
2936         not found. Fixes #567900.
2937
2938 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
2939
2940         * loader.c (mono_method_get_signature_full): Remove two asserts.
2941         Return NULL instead so that the verifier can handle both cases 
2942         gracefully.
2943
2944 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2945
2946         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
2947         so we can properly fail types instead of crashing.
2948
2949         Fixes #567676.
2950
2951 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2952
2953         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
2954         generic method.
2955
2956 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2957
2958         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
2959
2960 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
2963         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
2964         we can't remove it from it since we don't hold the lock.
2965         (mon_new): Free the orphaned events here when a mon structure is added to the
2966         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
2967         this down.
2968
2969 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2970
2971         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
2972         as max stack might be zero.
2973
2974         Fixes #562320.
2975
2976 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2977
2978         Rework all uses of mono_class_setup_methods to accept that it can fail now.
2979
2980         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
2981         instances if the GTD did.
2982
2983         * class.c (mono_class_setup_properties): Ditto.
2984
2985         * class.c (mono_class_setup_events): Ditto.
2986
2987         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
2988
2989         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
2990         error setting.
2991
2992         * class.c (mono_class_init): Fail if GTD did.
2993
2994         * cominterop.c:
2995         * generic-sharing.c:
2996         * icall.c:
2997         * loader.c:
2998         * object.c:
2999         * verify.c: Properly handle failure of mono_class_setup_methods.
3000
3001 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
3002
3003         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
3004         mono_class_inflate_generic_method_full internal.
3005
3006         * class.c (inflate_generic_context): Now takes a MonoError argument.
3007
3008         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
3009         errors.
3010
3011 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
3014         they cannot be patched. Partly fixes #564408.
3015
3016 2009-12-24  Mark Probst  <mark.probst@gmail.com>
3017
3018         * metadata-internals.h, reflection.c: Use the
3019         MonoDynamicImage.handleref hash table only with unmanaged keys,
3020         and add a managed hash table handleref_managed for managed keys.
3021
3022 2009-12-24  Mark Probst  <mark.probst@gmail.com>
3023
3024         * sgen-gc.c: Unset to-space bumper between collections.  It might
3025         become invalid due to degraded allocations.
3026
3027 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
3028
3029         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
3030         with the one from the original method.
3031
3032         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
3033         compatibility.
3034
3035         * verify-internals.h: Add new function to the internal API.
3036
3037 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
3038
3039         * culture-info-tables.h: regenerated it to include the Georgian culture.
3040
3041 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
3042
3043         * sgen-gc.c: Include mono/utils/memcheck.h.
3044
3045         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
3046         instead of the current domain, since the two might not match if this is called
3047         from the debugger.
3048
3049         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
3050         domain which created this assembly.
3051
3052 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
3055
3056 2009-12-17  Mark Probst  <mark.probst@gmail.com>
3057
3058         * sgen-gc.c: Managed implementation of the specialized generic
3059         store write barrier.
3060
3061 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
3062
3063         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
3064         A private virtual newslot method is used to implement an interface method without exposing
3065         it to users. When querying for public instance methods, such method would hide a public one
3066         on a parent type.
3067
3068         Fixes #564379.
3069
3070 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
3073         conventions.
3074
3075 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3076
3077         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
3078
3079 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3080
3081         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
3082         as they are no longer used.
3083         
3084          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
3085
3086         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
3087
3088 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3089
3090         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
3091         if the owner class has not been finished before returning reflection_info.      
3092
3093         Fixes #565127.
3094
3095 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
3098         param doesn't have custom attributes. Fixes #565117.
3099
3100         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
3101         #565120.
3102
3103 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3104
3105         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
3106
3107 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
3108
3109         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
3110         same amount done by a core-clr enabled runtime.
3111
3112 2009-12-15  Marek Habersack  <mhabersack@novell.com>
3113
3114         * appdomain.c (mono_make_shadow_copy): make sure access mode of
3115         the target files is reset to writable by owner and readable by
3116         everyone else to prevent problems when updating shadow copies of
3117         files whose source is read-only. Fixes bug #556884
3118
3119 2009-12-15  Mark Probst  <mark.probst@gmail.com>
3120
3121         * class.c (mono_generic_class_get_class): Allocate the generic
3122         class via malloc again, so that it can be freed when any one of
3123         the images of its constituent types is closed.
3124
3125         * metadata.c: When closing an image, don't free generic insts and
3126         generic classes right away, but put them into a list for later
3127         freeing.
3128
3129         * image.c, metadata-internals.h: Store the free list and in the
3130         second pass of closing an image, free it.
3131
3132 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3133
3134         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
3135
3136         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
3137         types in type_hash.
3138
3139         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
3140
3141 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3142
3143         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
3144         user type.
3145
3146         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
3147         is used.
3148
3149 2009-12-14  Miguel de Icaza  <miguel@novell.com>
3150
3151         * verify.c (mono_method_verify): The Unused opcodes produce an
3152         InvalidProgramException on .NET
3153
3154 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
3155
3156         * loader.c (mono_method_get_header): Move assert after the verifier
3157         has been called on the method header.
3158
3159 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3160
3161         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
3162
3163         * appdomain.c: Bump corlib version.
3164
3165 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3166
3167         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
3168         types as well since otherwise generic instances would not return UT as arguments but
3169         their undelying system type.
3170
3171         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
3172         to reflect the fact that they can have now multiple different types.
3173
3174         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
3175
3176         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
3177
3178         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
3179
3180         * reflection.c (mono_reflection_register_with_runtime): Init super types
3181         if the image is not dynamic.
3182
3183         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
3184         check if the generic type definition is a TypeBuilder.
3185
3186         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
3187         doesn't belong to a dynamic image, skip initialization.
3188
3189         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
3190         base definition is not a dynamic type.
3191
3192 2009-12-11  Marek Habersack  <mhabersack@novell.com>
3193
3194         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
3195         mono_profiler_string_allocation
3196
3197         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
3198         if string profiling is enabled, call
3199         mono_profiler_string_allocation
3200
3201         * profiler.h: added two MonoProfileFlags -
3202         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
3203         installation functions for the hooks below.
3204
3205         * profiler-private.h, profiler.c: added two hooks:
3206         mono_profiler_string_allocation called whenever a string is
3207         allocated by InternalAllocateStr and mono_profiler_iomap called
3208         whenever IOMAP code performs an adjustement on a file path.
3209
3210 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
3211
3212         * boehm-gc.c: fixed race condition while getting the target of a
3213         disappearing link (bug #522233).
3214
3215 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3216
3217         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
3218         the error.
3219
3220 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
3221
3222         * reflection.c: Add mono_reflection_register_with_runtime icall to
3223         allow a MonoGenericClass to register itself as the managed mirror of
3224         a given generic instance.
3225         This is a temporary workaround until all MGC instantiation happens in
3226         managed code.
3227
3228         * object-internals.h: Ditto.
3229
3230         * icall-def.h: Ditto.
3231
3232 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3233
3234         * sgen-gc.c (find_in_remsets): Also search the generic store
3235         remsets.
3236
3237 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3238
3239         * sgen-gc.c: Don't access class names in debugging code when
3240         unloading a domain, because they might not be valid anymore.
3241
3242 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3243
3244         * domain.c, domain-internals.h: New function mono_domain_unset().
3245
3246         * appdomain.c (unload_thread_main): Detach the thread again at the
3247         end.
3248
3249         * threads.c: When a thread exists or is detached, unset its domain
3250         so that it's NULL when, for example, a pthread destructor runs.
3251
3252         * sgen-gc.c: Assert that there is no domain set after a thread is
3253         done.
3254
3255 2009-12-10  Mark Probst  <mark.probst@gmail.com>
3256
3257         * class.c (mono_generic_class_get_class),
3258         metadata.c (free_generic_class): Allocate generic MonoClass's from
3259         the image mempool, not via malloc.  The problem with malloc is
3260         that when unloading a domain those classes are freed before
3261         clearing the heap and SGen needs the classes.  Rewriting the
3262         unloading code to do the free later would be more work and there's
3263         no point in using malloc anyway.
3264
3265 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
3266
3267         * loader.c (mono_method_signature): Always call mono_loader_unlock 
3268         before returning.
3269
3270 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3271
3272         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
3273         user string blobs.
3274
3275         * verify-internals.h: Add new function to the internal API.
3276
3277         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
3278         check if it's a valid string.
3279
3280         * object.c (mono_ldstr): Ditto.
3281
3282         Fixes #561943.
3283
3284 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3285
3286         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
3287         from a method before returning it. This is the expected behavior.
3288
3289 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3290
3291         * reflection.c (inflate_method): Handle the case of a regular system type.
3292
3293 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3294
3295         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
3296         gathering code.
3297
3298         * mempool.c, mempool-internals.h: New function
3299         mono_mempool_get_bytes_allocated().
3300
3301         * Makefile.am: sgen-pinning-stats.c added.
3302
3303 2009-12-08  Mark Probst  <mark.probst@gmail.com>
3304
3305         * sgen-gc.c (create_allocator): Only use the fast path if the
3306         object size is within the small object size limit.
3307
3308 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3309
3310         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
3311         possibly adding padding to sizeof (GCMemSection).
3312
3313 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3314
3315         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
3316         reference is not in the nursery.
3317
3318 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
3319
3320         * class.c (mono_class_from_typeref): Bounds check idx against the 
3321         assemblyref table.
3322
3323 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3324
3325         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
3326         through the potential roots, then sort the results and find the
3327         pinned objects from there.
3328
3329         * Makefile.am: sgen-pinning.c added.
3330
3331 2009-12-07  Mark Probst  <mark.probst@gmail.com>
3332
3333         * sgen-gc.c: Record generic stores in specialized remset buffers.
3334
3335 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3336
3337         * sgen-gc.c: Make pinned chunks the same size as major heap
3338         sections, and align them as well, so that we can check whether an
3339         object is in a pinned chunk or a major section in constant time.
3340
3341 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3342
3343         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
3344
3345 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3346
3347         * sgen-gc.c: Make all major heap sections the same size (currently
3348         128k) and allocate them on aligned addresses.  Small heap sections
3349         give us better granularity with pinned objects - we can free up
3350         much more memory.
3351
3352 2009-12-06  Mark Probst  <mark.probst@gmail.com>
3353
3354         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
3355         output removed.
3356
3357 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3358
3359         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
3360
3361         * mono/metadata/assembly.c: When opening an assembly image, pass the real
3362         names in addition to the runtime generated one.
3363
3364         * mono/metadata/image.h: Add a function to take the real name of the assembly
3365         image.
3366
3367         * mono/metadata/image.c: If a real name has been passed to load an assembly,
3368         use it instead of the runtime generated one.
3369
3370         Code is contributed under MIT/X11 license.
3371
3372 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
3375         before the other checks to prevent problems if the DateTime class is blittable.
3376         Hopefully fixes #559600.
3377
3378 2009-12-05  Mark Probst  <mark.probst@gmail.com>
3379
3380         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
3381         returns the largest string length that will not be put into the
3382         LOS.
3383
3384         * sgen-gc.c, gc-internal.h: New function that returns the largest
3385         object size that will not be put into the LOS.
3386
3387         * appdomain.c: Bump corlib version.
3388
3389 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3392
3393         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
3394
3395 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3396
3397         * reflection.c (inflate_method): Fix signature.
3398
3399         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
3400         in managed code.
3401
3402 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3403
3404         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
3405
3406 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3407
3408         * sgen-gc.c: Abstract to-space handling.
3409
3410 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3411
3412         * loader.c (find_method_in_class): Ignore methods with broken signatures.
3413
3414         Fixes #559906.
3415
3416 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3417
3418         * sgen-gc.c: Only add references from outside the nursery to
3419         within the nursery to the global remset list.
3420
3421 2009-12-03  Mark Probst  <mark.probst@gmail.com>
3422
3423         * appdomain.c (create_exceptions): Set the domain temporarily if
3424         necessary to avoid cross-domain references.
3425
3426 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3427
3428         * verify.c (get_stack_type): Return that the type is invalid instead of
3429         asserting.
3430
3431         * verify.c (mono_method_verify): Verify that all locals and arguments
3432         have valid stack types.
3433
3434         Fixes #559913.
3435
3436 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3437
3438         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
3439         bounds checking overflow aware.
3440
3441         Fixes #559910.
3442
3443 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3444
3445         * verify.c (do_invoke_method): Check for invalid method signatures.
3446
3447         Fixes #553450.
3448
3449 2009-12-02  Jb Evain  <jbevain@novell.com>
3450
3451         * appdomain.c (MONO_CORLIB_VERSION): bump.
3452         * icall-def.h (get_base_definition): renamed to get_base_method
3453         and add a boolean argument indicating we want the original
3454         method definition, or the immediate base method.
3455         * icall.c: apply the get_base_definition to get_base_method change.
3456
3457 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3458
3459         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
3460
3461         Fixes #558042.
3462
3463 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
3464
3465         * class.c: remove asserts for invalid type token in
3466         mono_class_name_from_token(), mono_assembly_name_from_token() and
3467         mono_class_create_from_typedef () (fixes bug #553318).
3468
3469 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
3470
3471         * metadata.c, class.c, loader.c: remove assert after bsearch() for
3472         incorrect assemblies (bug #553322).
3473
3474 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3475
3476         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
3477
3478         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
3479
3480         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
3481
3482         * class.c (inflate_generic_context): Ditto.
3483
3484         * loader.c (method_from_methodspec): Ditto.
3485
3486         Fixes #558230.
3487
3488 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3489
3490         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
3491
3492         * class.c (mono_class_create_from_typespec): Ditto.
3493
3494         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
3495
3496         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
3497
3498         Fixes #558184.
3499
3500 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
3501
3502         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
3503
3504         * verify.c (verify_delegate_compatibility): Ditto.
3505
3506         * verify.c (do_newobj): Ditto.
3507
3508         Fixes #558046.
3509
3510 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3511
3512         * sgen-gc.c: Use a gray queue instead of requiring that gray
3513         objects are in a contiguous region.
3514
3515         * sgen-gray.c: The gray queue implementation.
3516
3517         * Makefile.am: sgen-gray.c added.
3518
3519 2009-12-02  Mark Probst  <mark.probst@gmail.com>
3520
3521         * appdomain.c: When unloading a domain, zero its static data and
3522         perform a minor collection when using SGen.  That will get rid of
3523         all the remsets pointing into that domain's static data.
3524
3525         * sgen-gc.c: Allow remsets into static data.  By doing this we
3526         need less checks so we're more efficient.
3527
3528 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3529
3530         * verify.c (mono_method_verify): Check for catch clauses with broken
3531         types.
3532
3533         Fixes #558465.
3534
3535 2009-12-01  Jb Evain  <jbevain@novell.com>
3536
3537         * class.c (make_generic_param_class): set the namespace of
3538         the generic parameter class from its owner, if available.
3539
3540 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3541
3542         * verify.c (code_bounds_check): Do proper overflow checking.
3543
3544         * verify.c (mono_method_verify): The number of switch entries is
3545         an unsigned int. Properly bounds check it.
3546
3547         Fixes #558594.
3548
3549 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3550
3551         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
3552         mono_metadata_method_has_param_attrs which only checks if a given param
3553         list has a non zero flags entry.
3554
3555         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
3556         to inform how many params should we expect to decode.
3557
3558         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
3559         as it's faster than mono_metadata_get_param_attrs.
3560
3561         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
3562         add mono_metadata_method_has_param_attrs.
3563
3564 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3565
3566         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
3567         failures.
3568
3569         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
3570         is -1 but its class is broken.
3571
3572         Fixes #558522.
3573
3574 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3575
3576         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
3577         for parameter overflow.
3578
3579         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
3580         of mono_metadata_get_param_attrs.
3581
3582         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
3583         API.
3584
3585         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
3586
3587 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * class.c (mono_class_setup_fields): Check for fields with broken types.
3590
3591         Fixes #558741.
3592
3593 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
3594
3595         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
3596         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
3597         its TypeBuilder::CreateType ().
3598
3599         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
3600         if not needed.
3601
3602         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
3603         to make setup_interface_offsets happy.
3604
3605         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
3606         compilation now works.
3607
3608 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * appdomain.c (create_exceptions): New helper function extracted from
3611         mono_runtime_init () to precreate objects used during exception handling.
3612         (mono_runtime_init): Call it.
3613         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
3614
3615 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3616
3617         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
3618         compilation until the proper one is found.
3619
3620 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * class.c (mono_class_setup_vtable_general): Cache the result of
3623         get_virtual_methods () since it can be slow because of the metadata
3624         optimization.
3625
3626         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
3627         from a MonoValueHashTable for now, since the later is based on an earlier
3628         version of hpj's internal probing code and seems to have serious collision
3629         issues.
3630
3631         * loader.c (mono_get_method_full): Update after the change above.
3632
3633 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3634
3635         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
3636
3637 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3638
3639         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
3640         the GTD instead of the DGC instead of crashing.
3641
3642         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
3643         required. Inflate fields if needed.
3644
3645         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
3646         finished. Renamed.
3647
3648 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
3649
3650         * class.c (check_interface_method_override): Check for NULL signatures and fail
3651         the type.
3652
3653         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
3654
3655         Fixes #553428.
3656
3657 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
3658
3659         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
3660         the MONO_METHOD_FLAGS column instead of decoding the whole row.
3661
3662 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3663
3664         * loader.c (field_from_memberref): Resolve the class first then the field
3665         signature. Remove a lot of duplicated code and make sure we don't pass valid
3666         values to mono_loader_set_error_field_load.
3667
3668         Fixes #553306.
3669
3670 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
3671
3672         * class.c (inflate_generic_type): Change code to use new signature of
3673         mono_error_set_bad_image.
3674
3675         Fixes #558124.
3676
3677 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
3678
3679         * verify.c (mono_method_verify): Don't free ctx.params items if 
3680         we aborted while inflating the ctx.locals. Complete previous fix
3681
3682 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
3683
3684         * verify.c (mono_method_verify): Use the uninflated type name, 
3685         when the inflated is null, to report errors. Also take care when
3686         freeing, not to free everything since, in case of an error, some
3687         stuff would be copies (i.e. not allocated by the function itself)
3688         Fix bug #558145
3689
3690 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3691
3692         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
3693         or overflow. The caller must have done this check explicitly. This guard us
3694         from accessing invalid memory.
3695
3696         * verify.c (do_push_static_field): Check for stack overflow.
3697
3698         Fixes #553333.
3699
3700 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
3701
3702         * loader.c (find_method_in_class): Don't crash if the signature cannot
3703         be resolved.
3704
3705         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
3706         of asserting for the case of invalid params.
3707
3708         Fixes #553304.
3709
3710 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
3711
3712         * image.c (mono_image_load_module): Fix crash when a bad assembly
3713         has no module at all (fix bug #553412) and also replace the 
3714         g_assert with a return NULL (documented return value for failure)
3715
3716 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
3719
3720 2009-11-23  Miguel de Icaza  <miguel@novell.com>
3721
3722         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
3723         file attribute to managed code and avoid doing the mask/attribute
3724         checks here. 
3725
3726 2009-11-22  Miguel de Icaza  <miguel@novell.com>
3727
3728         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
3729         the managed world.
3730
3731         * icall-def.h: New entry points.
3732         
3733 2009-11-19  Mark Probst  <mark.probst@gmail.com>
3734
3735         * process.c: Don't put references to managed objects into a
3736         g_ptr_array.
3737
3738 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
3739
3740         * class.c (can_access_internals): Allow CoreCLR to participate in
3741         allowing (or not) [InternalsVisibleTo] between assemblies.
3742         * security-core-clr.c|h: Make sure that only trusted code (a 
3743         superset of platform code) can access the internals of platform
3744         code.
3745
3746 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
3747
3748         * reflection.c: use the correct base class to get the virtual method
3749         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
3750
3751 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
3752
3753         * security-core-clr.c (get_caller_no_reflection_related): 
3754         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
3755         it's still reflection and must be filtered correctly.
3756
3757 2009-11-16  Mark Probst  <mark.probst@gmail.com>
3758
3759         * object.c (compute_class_bitmap): Fix for large bitmaps.
3760
3761 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
3762
3763         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
3764
3765         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
3766         koush@koushikdutta.com). Disable GC_no_dls on android.
3767
3768 2009-11-12  Mark Probst  <mark.probst@gmail.com>
3769
3770         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
3771         tlab_next points outside the TLAB because the allocator was
3772         interrupted.
3773
3774 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3775
3776         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
3777
3778 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3779
3780         * object-internals.h: Change signature for mono_string_to_utf8_image.
3781
3782         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
3783         argument.
3784
3785         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
3786         exceptions due to mono_string_to_utf8.
3787
3788 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3789
3790         * object-internals.h: Change signature for mono_string_to_utf8_mp.
3791
3792         * object.c (mono_remote_class): Make sure all resources are released before
3793         raising an exception.
3794
3795         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
3796
3797 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3798
3799         * mono-perfcounters.c (network_get_impl): Change variable initialization
3800         ordering to fix potential memory leak in case of exceptions.
3801
3802         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
3803         encoded strings.
3804         
3805 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
3806
3807         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
3808         variable initialization ordering to fix potential memory leak in case
3809         of exceptions.
3810
3811 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
3814         needed.
3815
3816 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3817
3818         * appdomain.c: Fix shadow path code to better deal with exceptions.
3819
3820 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3821
3822         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
3823         exception in the middle of the runtime code.
3824
3825 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
3826
3827         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
3828         leak memory with broken envvar value.
3829
3830 2009-11-06  Mark Probst  <mark.probst@gmail.com>
3831
3832         * reflection.c (mono_reflection_setup_internal_class): Because
3833         nested classes are not added to the name cache, we must put them
3834         in the reflection_info_unregister_classes list.
3835
3836 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
3837
3838         * class.c: When CoreCLR is enabled don't call mono_init_com_types
3839         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
3840         platform (trusted) code. Instead we return a TypeLoadException to
3841         be thrown later. This is the exception thrown by Silverlight 2 if
3842         a type, inside application (user) code is marked with [ComImport]
3843
3844 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3845
3846         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
3847         mono_is_debugger_attached () too.
3848
3849         * mono-debug.c (mono_is_debugger_attached): New helper function.
3850         (mono_set_is_debugger_attached): Ditto.
3851
3852 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3853
3854         * object-internals.h: Add mono_string_to_utf8_checked.
3855
3856         * object.c: Implement mono_string_to_utf8_checked.
3857
3858 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3859
3860         * class.c: Add missing check for load errors after every
3861         call to mono_class_setup_fields
3862
3863         Fixes #552282.
3864
3865 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3866
3867         metadata-verify.c (verify_tables_schema): Fix the error message.
3868
3869 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3870
3871         * metadata.c: Change event table schema to use TDOR for event type
3872         as this is what it's meant to be.
3873
3874         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
3875         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
3876         entry.
3877
3878         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
3879         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
3880         rows in MONO_TABLE_GENERICPARAM.
3881
3882         Fixes #552289.
3883
3884 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3885
3886         * class.c (mono_image_add_to_name_cache): Assert on duplicate
3887         insertion.
3888
3889         * reflection.c (mono_reflection_setup_internal_class): Avoid
3890         registering a gc root the same MonoClass multiple times.
3891         Don't register nested types on the global scope as they should
3892         not be available there.
3893
3894 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3895
3896         * culture-info-tables.h: regenerated.
3897
3898 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3899
3900         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
3901
3902 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
3903
3904         * string-icalls.c|h: Remove string internal calls that are not 
3905         used anymore by the class libraries.
3906         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
3907         which is not used in the class librairies.
3908         * icall-def.h: Update tables.
3909
3910 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3911
3912         * class.h: Move mono_class_inflate_generic_type_checked...
3913
3914         * class-internals.h: to here and make it internal. We don't want to
3915         further expose MonoGenericContext. 
3916
3917 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3918
3919         * verify.c (mono_method_verify): Improve error message.
3920
3921 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3922
3923         * reflection.c (fieldref_encode_signature): If field_image is NULL then
3924         the token is already properly encoded. Fixs 4.0 build.
3925
3926 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3927
3928         * locales.c (construct_number_format): Check if the number index is
3929         valid before trying to use it, if not, just return.
3930         
3931 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
3934         since that loses the abort state. Fixes #539394.
3935
3936 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3937
3938         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
3939         explicit this argument to the call signature.
3940         (mono_marshal_get_icall_wrapper): Ditto.
3941
3942 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3943
3944         * reflection.c (fieldref_encode_signature): Add new field_image parameter
3945         to indicate which assembly to use when resolving a custom-mod.
3946
3947         Fixes handling of volatile fields used across assemblies as reported in #551513.
3948
3949 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3950
3951         * loader.c: Improve error messages.
3952
3953 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3954
3955         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
3956         of interfaces. Fixes IKVM.
3957
3958         * class.c (mono_class_setup_vtable_general): Improve debug spew.
3959
3960 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3961
3962         * verify.c (verifier_inflate_type): Return the inflated type on success.
3963
3964 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3965
3966         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
3967
3968         * threads.c (mono_thread_attach): Call the profiler thread start callback.
3969
3970         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
3971
3972         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
3973         flag set.
3974
3975         * profiler.c: Add new profiler callbacks for runtime invoke.
3976
3977         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
3978
3979 2009-11-01  Mark Probst  <mark.probst@gmail.com>
3980
3981         * sgen-gc.c: Keep track of the reason for a major collection and
3982         write it to the heap-dump file.
3983
3984 2009-10-31  Miguel de Icaza  <miguel@novell.com>
3985
3986         * threads.c: refactor the code that initializes the
3987         thread_start_args into a reusable function and use this in the two
3988         methods that start up threads.
3989
3990 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
3991
3992         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
3993         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
3994
3995 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3996
3997         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
3998         Until now, we only had the per-cpu(core) counters.
3999
4000 2009-10-28  Mark Probst  <mark.probst@gmail.com>
4001
4002         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
4003         mono_gc_get_suspend_signal(), which returns the suspend signal
4004         number used by the GC.
4005
4006 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
4007
4008         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
4009
4010         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
4011         signalling start_notify.
4012
4013 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4014
4015         * appdomain.c: do not test the st_mode field for shadow-copies.
4016         Fixes bug #545276.
4017
4018 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4019
4020         * threadpool.[ch]: added hooks for thread start/finish and item
4021         processing begin/end. For monotouch use only.
4022
4023 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * threads.c (mono_thread_get_name): New helper function.
4026
4027         * reflection.c (resolve_object): Set handle_class for strings too.
4028         (mono_reflection_create_custom_attr_data_args): New helper function to decode
4029         a cattr blob into a set of arrays and structures without creating the custom
4030         attributes themselves.
4031         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
4032
4033         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
4034
4035         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
4036         function.
4037
4038 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4039
4040         * verify.c: Replace calls to mono_class_inflate_generic_type with
4041         mono_class_inflate_generic_type_checked. Fixes #480005.
4042
4043 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4044
4045         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
4046         object since not all paths lead to callees initing it.
4047
4048 2009-10-23  Alp Toker  <alp@nuanti.com>
4049
4050         Fix embedding API breakage from r144688. mono-compiler.h is an internal
4051         header and should not be shipped:
4052
4053         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
4054         which is specific to the mono build. Not going to work.
4055
4056 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
4057
4058         * security-manager.c: Report if core-clr is active from
4059         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
4060         to allow Moonlight BCL to behave appropriately (both in browser
4061         and outside, e.g. smcs)
4062
4063 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4064
4065         * mono-config.c: ignore UTF-8 BOM and report parser errors.
4066         Fixes bug #549108.
4067
4068 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4069
4070         * class.c: fix typo.
4071
4072 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
4073
4074         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
4075         a MonoError parameter.
4076
4077         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
4078         version that can does proper error handling.
4079
4080         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
4081
4082         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
4083
4084         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
4085
4086 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
4089         NO_UNALIGNED_ACCESS is defined.
4090
4091 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * marshal.c (mono_string_builder_to_utf16): Applied patch from
4094         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
4095         Fixes #549173.
4096
4097 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4098
4099         * sgen-gc.c: Shorten sections whenever possible.
4100
4101 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4102
4103         * sgen-gc.c: Use our portable semaphore #defines.
4104
4105 2009-10-22  Mark Probst  <mark.probst@gmail.com>
4106
4107         * sgen-gc.c: A debug option for dumping the heap layout to a file
4108         after each collection.
4109
4110 2009-10-21  Mark Probst  <mark.probst@gmail.com>
4111
4112         * sgen-gc.c: Make managed write barriers atomic via
4113         thread-restarts.
4114
4115 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4116
4117         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
4118         methods. Fixes #543021.
4119
4120 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4121
4122         * socket-io.[ch]: fix VS build.
4123
4124 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
4125
4126         * icall-def.h:
4127         * socket-io.[ch]: implemented SendFile.
4128
4129 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * class.c (mono_class_create_from_typedef): Initialize class->element_class
4132         before the interfaces to avoid crashes later if class initialization fails.
4133         Fixes #548417.
4134
4135         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
4136         Fixes #548276.
4137
4138 2009-10-20  Marek Safar  <marek.safar@gmail.com>
4139
4140         * domain.c: Bump 4.0 version.
4141
4142 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
4143
4144         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
4145         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
4146         check since 'pubkey' can't be NULL at this stage
4147         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
4148         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
4149         initialization of 'iter'
4150
4151 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
4152
4153         * cominterop.c : Search the interface parts of vtable to find 
4154           method matches.  Fixes 547030.
4155
4156         Code is contributed under MIT/X11 license.
4157
4158 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
4159
4160         * marshal.c: BeginInvoke cannot be called on multicast delegates with
4161         multiple targets. Fixes bug #574426.
4162
4163 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4164
4165         * profiler.h: Put here the definition of
4166         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
4167         (and fix the build...).
4168
4169 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
4170
4171         * profiler.c, profiler.h, profiler-private.h:
4172         Added support for different ways of getting call chains in stat mode.
4173
4174 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4175
4176         * object.c, object-internals.h: New function for computing the
4177         size of an array, factored out of mono_array_new_full().  Use
4178         SGen's functions for allocating arrays and vectors.
4179
4180         * sgen-gc.c, gc-internal.h: Special functions for allocating
4181         arrays and vectors without race conditions.  A managed array
4182         allocator method.
4183
4184         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
4185
4186 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4187
4188         * object.c, object.h, icall.c: Write barriers do the copying now,
4189         as well, so no need for an additional memcpy.
4190
4191         * sgen-gc.c: Lock when storing remsets.  Do the memory
4192         copying/moving in the write barriers.
4193
4194         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
4195
4196         * reflection.c: Added an assert.
4197
4198 2009-10-12  Mark Probst  <mark.probst@gmail.com>
4199
4200         * threads.c, process.c: A few missing write barriers.
4201
4202 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
4203
4204         * mono-perfcounters.c, mono-perfcounters-def.h: Add
4205         network performance counters for bytes sent per second, bytes
4206         received per second, and bytes total per second.
4207
4208         Code is contributed under MIT/X11 license.
4209
4210 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4211
4212         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
4213         Fix warning.
4214
4215 2009-10-09  Mark Probst  <mark.probst@gmail.com>
4216
4217         * threads.c, object-internals.h, object.c: Move code for
4218         transferring an object to a different domain (via
4219         serialization/remoting) to object.c.
4220
4221         * object.c (call_unhandled_exception_delegate): If the exception
4222         is in a different domain than the delegate, transfer the exception
4223         to that domain.
4224
4225 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
4228         Fixes #322934.
4229
4230 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
4233
4234 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4235
4236         * object.c (mono_method_return_message_restore): Handle the case
4237         where the argument is an instance of a generic type.  Fixes
4238         #544446.
4239
4240 2009-10-06  Mark Probst  <mark.probst@gmail.com>
4241
4242         * object.c (set_value): Write barrier fix - we must pass the
4243         count, not the size.
4244
4245 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
4246
4247         * domain.c (mono_init_internal): Print a useful error message when encountering
4248         an old mscorlib, instead of crashing. Fixes #544307.
4249
4250 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
4251
4252         * appdomain.c (copy_app_domain_setup): Fix a warning.
4253
4254         * debug-helpers.c (dis_one): Ditto.
4255
4256 2009-10-04  Mark Probst  <mark.probst@gmail.com>
4257
4258         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
4259         into the new domain, instead of referencing the original one.
4260
4261         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
4262         non-static.
4263
4264         * appdomain.c: Corlib version bump.
4265
4266 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4267
4268         * threadpool.c: one more...
4269
4270 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4271
4272         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
4273         threads to die because we're shutting down. delgate5.exe works again.
4274
4275 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
4276
4277         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
4278           ccw_interface_hash table when a ccw is finalized.
4279
4280         Code is contributed under MIT/X11 license.
4281
4282 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4283
4284         * assembly.c, domain.c, image.c, metadata-internals.h: Split
4285         domain and image unloading into two steps.  We must do this
4286         because clearing the domain in SGen requires the class metadata to
4287         be intact, but we need to free the mono_g_hash_tables in case a
4288         collection occurs during domain unloading and the roots would trip
4289         up the GC.
4290
4291 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4292
4293         * object-internals.h: Remove serialized culture fields from
4294         MonoInternalThread.
4295
4296         * icall-def.h, thread-types.h, threads.c: Remove serialized
4297         culture icalls.
4298
4299         * appdomain.c: Corlib version bump.
4300
4301 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
4302
4303         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
4304         Fixes #543133.
4305
4306 2009-09-30  Mark Probst  <mark.probst@gmail.com>
4307
4308         * sgen-gc.c: Try to shorten the new section after a major
4309         allocation to avoid ever-growing sections.
4310
4311 2009-10-13  Martin Baulig  <martin@ximian.com>
4312
4313         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
4314         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
4315         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
4316         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4317
4318         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
4319
4320 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
4321
4322         * threadpool.c: fixed the order in which 'completed' and the wait
4323         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
4324         No need to use the wait_handle field of ASyncCall. Make sure the
4325         threadpool is active when adding a job or queueing an idle thread.
4326
4327 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
4328
4329         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
4330
4331         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
4332         when using --compile-all.
4333
4334 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4335
4336         * metadata.c (free_generic_class): Unregister the field_objects
4337         roots if we're using SGen.
4338
4339 2009-09-27  Mark Probst  <mark.probst@gmail.com>
4340
4341         * reflection.c (mono_dynamic_image_free): Deregister the GC root
4342         for GenericParamTableEntry.gparam.
4343
4344 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4345
4346         * marshal.c: don't create the handle when calling. It is created later
4347         if needed.
4348
4349 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4350
4351         * sgen-gc.c: Warning fixes.
4352
4353 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4354
4355         * sgen-gc.c: New debug option "xdomain-checks", which scans the
4356         whole heap for cross-domain references before each collection.
4357
4358         * sgen-scan-object.h: The scan action can now use SCAN to scan the
4359         object.
4360
4361         * threadpool-internals.h, threadpool.c: New function
4362         mono_thread_pool_is_queue_array() for checking whether a given
4363         array is used as a (cross-domain) queue by the thread pool code.
4364
4365 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4366
4367         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
4368         searches the whole heap for objects containing a specific
4369         reference.  Only for debugging.
4370
4371 2009-09-26  Mark Probst  <mark.probst@gmail.com>
4372
4373         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
4374
4375         * icall-def.h, threads.c, threads-types.h: New icalls for copying
4376         byte arrays between domains.
4377
4378 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
4379
4380         * threadpool.c:
4381         * class-internals.h:
4382         * mono-perfcounters-def.h:
4383         * mono-perfcounters.c:
4384         -There is a list of idle threads
4385         -Each of those idle threads wait on their own WaitHandle instead
4386         of all of them using the same semaphore. When a new work item is
4387         added, the job is assigned directly to an idle thread or a newly
4388         created one if possible and then the handle for that thread is
4389         signaled. Compare that to the current approach where all the
4390         threads in the pool compete to dequeue a job from the same
4391         queue.
4392         -New struct ThreadPool that brings together the bunch of static
4393         variable for each threadpool (IO and regular).
4394         -New performance counters: # of items added and its rate per
4395         threadpool. The rate will be used later, perhaps together with
4396         other perf. counters, to decide when idle threads should exit.
4397
4398 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
4399
4400         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
4401         Fix typo on Windows build.      
4402         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
4403         
4404         Code is contributed under MIT/X11 license.
4405
4406 2009-09-25  Mark Probst  <mark.probst@gmail.com>
4407
4408         * object-internals.h: The Thread class is split up into Thread and
4409         InternalThread now.  We have exactly one InternalThread per
4410         thread, and at most one Thread per appdomain per thread.  Most
4411         data is stored in InternalThread.  All InternalThread objects live
4412         in the root domain.
4413
4414         * class-internals.h: Add internal_thread_class to MonoDefaults.
4415
4416         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
4417         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
4418         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
4419         resulting from the split of the Thread class.
4420
4421         * gc-internal.h: Prototype for new function for checking whether a
4422         thread is the finalizer thread.
4423
4424         * appdomain.c: Corlib version bump.
4425
4426 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4427
4428         * appdomain.c|h: Add a mono_domain_try_unload method which is
4429         equivalent to mono_domain_unload, except that it returns an exception
4430         instead of throwing it. Make mono_domain_unload use the
4431         mono_domain_try_unload method to avoid code-duplication.
4432
4433 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
4434
4435         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
4436         a problem.
4437
4438 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
4439
4440         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
4441         aborting when a conversion is not implemented.
4442
4443 2009-09-23  Miguel de Icaza  <miguel@novell.com>
4444
4445         * verify.c: when comparing culture strings, use g_ascii_strcmp
4446
4447         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
4448         when comparing public key tokens to use memcmp on 16 bytes.   I do
4449         not believe this ever worked as advertised in the past.
4450
4451         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
4452         which would have always failed earlier.
4453
4454 2009-06-25  Miguel de Icaza  <miguel@novell.com>
4455
4456         * gc.c: Raise a NullArgumentException if the object passed is
4457         null.
4458
4459 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * image.c (mono_image_close): Atomically decrement the reference count and
4462         remove the image from the hash tables, to prevent another thread from seeing a
4463         dying MonoImage. Fixes #541194.
4464
4465 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4466
4467         * threadpool.c: actually use the minimum number of 'completion ports'
4468         (for us is just a potential worker thread).
4469
4470 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4471
4472         * threadpool.c: remove ares_htable. It does not make sense any more
4473         since the same objects are now stored in GC-tracked arrays while they are
4474         in the queue.
4475
4476 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4477
4478         * threadpool.c: increase the minimum length of the queues to 128.
4479         Remove warning.
4480
4481 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
4482
4483         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
4484         return the modified signature used by string ctors.
4485
4486 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
4487
4488         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
4489         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
4490         method, to be used by full-aot.
4491
4492 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
4495         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
4496         be known to be good.
4497
4498         * class.c (mono_class_init): Fail array types if their element type fails initialization
4499         as well.
4500
4501         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
4502         initialization, additionally we request the element_type vtable to be initialized as well.
4503
4504         This is fine and should not increase the working set in any meaningful way since it's reasonable
4505         to assume       that most code will create an array and eventually populate it, which will require the
4506         type's vtable to be initialized.
4507
4508         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
4509
4510 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
4511
4512         * normalization-tables.h : regenerated.
4513
4514 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
4515
4516         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
4517         a leb128 encoding can take up to 5 bytes.
4518
4519 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4520
4521         * class.c (verify_class_overrides): Remove useless argument.
4522
4523         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
4524         before interface enumeration as this is no longer required.
4525
4526 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
4527
4528         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
4529         used under mono_class_init context. This functions avoid any code path that
4530         calls mono_class_init, which leads it to be slow as some things like the interface
4531         bitmap are not available.
4532
4533         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
4534         of it's own broken version. Fixes the verifier part of #538588.
4535
4536         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
4537         API.
4538
4539 2009-09-15  Mark Probst  <mark.probst@gmail.com>
4540
4541         * class.c (mono_class_init): Always set an exception in a class if
4542         vtable setup fails.  Fixes #538577.
4543
4544         * generic-sharing.c: Raise an exception if mono_class_vtable()
4545         returns NULL.
4546
4547 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
4548
4549         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
4550         methods of vtypes, as they could be incorrectly shared with static methods
4551         taking an IntPtr argument.
4552
4553 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
4554
4555         * domain.c:
4556         * object.c:
4557         * class-internals.h: renamed waithandle_class to
4558         manualresetevent_class.
4559         * marshal.c: propagate the exception if a remoting BeginInvoke call
4560         fails.
4561
4562 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * object.c: Properly handle vtable failures.
4565
4566 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4567
4568         * socket-io.c: Assert on vtable failure.
4569
4570         * mono-mlist.c: Assert on vtable failure.
4571
4572 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * marshal.c: Assert on vtable failure.
4575
4576 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * icall.c: Properly handle vtable failures.
4579
4580 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
4583
4584 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4585
4586         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
4587
4588         * console-unix.c (do_console_cancel_event): Same.
4589
4590 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * class-internals.h: Add mono_class_vtable_full function that allows control
4593         if an exception should be raised or not.
4594
4595         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
4596         to do what its documentation say, that is to return NULL and set exception_type on
4597         failure.
4598
4599         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
4600         and change the code to honor it.
4601
4602 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * verify.c: Fix typo in error message.
4605
4606 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
4607
4608         * security-core-clr.c: Fix default_platform_check so it can run
4609         the runtime coreclr tests (without an infinite recursion when
4610         throwing an exception).
4611
4612 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4613
4614         object.c (mono_delegate_ctor_with_method): Guard against null method.
4615
4616 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4617
4618         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
4619         that should be replaced with error handling later.
4620
4621 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4622
4623         * marshal.c (mono_delegate_end_invoke): Fix warning.
4624
4625 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4626
4627         * loader.c (mono_field_from_token): Properly handle invalid
4628         dynamic tokens.
4629
4630 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4631
4632         * pedump.c (verify_image_file): Skip types that can't be
4633         decoded.
4634
4635 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4636
4637         * verify.c: Look for recursive valuetypes only against the
4638         type been initialized as this is a lot simpler and works.
4639
4640 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
4641
4642         * verify.c: Ensure that fields are properly loaded before
4643         checking them.
4644
4645 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
4646
4647         * object.c (mono_object_get_virtual_method) : Call 
4648           mono_cominterop_get_invoke if the object is a COM object.
4649
4650         Code is contributed under MIT/X11 license.
4651
4652 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
4653
4654         * verify.c: Check for recursive valuetype definitions.
4655
4656 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
4657
4658         Use inheritance-aware interface offsets. Inherited types use the same offsets
4659         of their parents. This reduce offset duplication in case more than one type in
4660         the inheritance tree explicitly implements the same interface.
4661
4662         This also removes a source of vtable bubbles found in #532409. An abstract type
4663         isn't required to provide abstract methods to all interfaces it implements, which
4664         resulted in a bubble with the previous scheme as the child would get a non-full
4665         vtable from its parent. We fail all concrete types with vtable bubbles, so this
4666         should be fixed.
4667
4668         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
4669         it's expected to not cause any significant increase beyond that.
4670
4671         * class.c (setup_interface_offsets): Compute super class iface offsets
4672         first to force sharing.
4673
4674         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
4675         dumping only the relevant ones.
4676
4677         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
4678         methods a new slot regardless if they belong to an interface or not. This allows
4679         an inherited type to override the iface method separately from the class one.
4680
4681 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
4682
4683         * threadpool.c: make the Sleep() alertable to prevent delays exiting
4684         applications that take less than 2s to execute.
4685         Bug #524984 fixed.
4686
4687 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
4688
4689         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
4690
4691         * object.c (mono_get_runtime_callbacks): New helper function to return
4692         the runtime callbacks.
4693
4694         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
4695         mono_get_runtime_build_info () as the display name.
4696         
4697 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
4698
4699         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
4700         argument, since NEWARR expects a native int. Fixes #481559.
4701
4702 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4703
4704         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
4705         against broken SRE methods.
4706
4707 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4708
4709         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
4710         a NULL variable. Abort early on failure.
4711
4712 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
4713
4714         * class.c (can_access_type): Fail visibility test for non nested
4715         types with nested visibility.
4716
4717 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
4718
4719         * assembly.c (parse_public_key): Avoid allocating (and not 
4720         freeing) the public key array when it's not requested by the 
4721         caller.
4722         * threads.c (mono_thread_manage, mono_thread_create_internal, 
4723         ves_icall_System_Threading_Thread_Thread_internal): Free 
4724         allocated memory on error.
4725
4726 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4727
4728         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
4729
4730 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4731
4732         * class.c (mono_class_setup_fields): Remove duplicated local variable
4733         named gklass.
4734         Rename gklass to gtd to reflect the fact that it points to the generic
4735         type definition.
4736         Remove the duplicated call to mono_class_setup_fields on gtd and move
4737         the error check to the beginning.
4738
4739 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4740
4741         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
4742         Remove cruft of the previous patch.
4743
4744 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4745
4746         * metadata-verify.c (verify_method_table): Check for abstract + final.
4747         Fixes #534175.
4748
4749 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4750
4751         * verify.c (verify_class_fields): Check for duplicate fields.
4752
4753 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4754
4755         * metadata-verify.c: Verify the typeref table for duplicates.
4756
4757 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
4758
4759         This reverts r140936 and properly handles interfaces with static methods. The
4760         right fix is to ensure vtables without bubles which is an easier to verify
4761         constraint. We should avoid such special cases as of the reverted patch as those
4762         only make the runtime more brittle.
4763
4764         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
4765         static methods on interfaces.
4766
4767         * class.c (setup_interface_offsets): Use the number of virtual methods when
4768         calculating interface offsets instead of the number of methods. This way we
4769         avoid bubles on the layout.
4770
4771 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
4772
4773         * metadata-verify.c (verify_metadata_header): Some very smart
4774         obfuscators like to add extra stream headers. Ignore them.
4775
4776 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
4779         methods correctly.
4780
4781 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
4782
4783         * metadata-verify.c: Verify for duplicated types.
4784
4785 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
4786
4787         * metadata-verify.c (verify_typedef_table): Verify for nested types
4788         without an entry on the nested class table.
4789
4790 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
4791
4792         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
4793         <tom_hindle@sil.org>. Add locking around hash table accesses.
4794
4795 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4796
4797         * verify.c (mono_verifier_verify_class): Verify all interface if
4798         really are interfaces. Fixes #534184.
4799
4800 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
4801
4802         * pedump.c: Initialize all types during metadata validation so we report
4803         errors only detected as part of class initialization.
4804
4805 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
4806
4807         * metadata-verify.c (verify_method_table): PInvoke requires method to
4808         be static. Fixes #534189
4809
4810 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
4813         being NULL.
4814
4815 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4816
4817         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
4818         for holes or bad methods. Fixes #525314.
4819
4820 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4821
4822         * class.c (setup_interface_offsets): Don't allocate slot
4823         for the same interface multiple times. This creates bubbles
4824         that waster space and make vtable verification harder.
4825
4826         The same interface get a slot multiple times since we need
4827         to get the closure of all implemented interfaces, which means
4828         the same interface is reported multiple times.
4829
4830 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4831
4832         * verify.c (mono_verifier_verify_class): Don't check the fields
4833         of generic instances since the context on which they got expanded
4834         might lead to false positives.
4835
4836         Such thing happens when a generic type is inflated in the context
4837         of a generic method and the inflated type of a field turns into a
4838         generic method argument, which causes the checking code to think
4839         it's an invalid class when it's not.
4840
4841 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
4842
4843         * verify.c (mono_type_is_valid_in_context): Verify if type
4844         is NULL and remove duplicate test.
4845
4846 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4847
4848         * verify.c (mono_verifier_verify_class): Check fields for
4849         invalid generic arguments.
4850
4851 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4852
4853         * class.c (verify_class_overrides): Verify if for static
4854         and non virtual methods.
4855
4856 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4857
4858         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
4859         Check for errors after retrieving the vtable.
4860
4861 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4862
4863         * class.c (mono_class_setup_vtable_general): Verify
4864         if method overrides are valid before processing them.
4865
4866 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * marshal.c (mono_array_to_lparray): Fix minimal build with
4869         cominterop disabled.
4870
4871         * marshal.c (mono_free_lparray): Same.
4872
4873 2009-08-21  Mark Probst  <mark.probst@gmail.com>
4874
4875         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
4876         the hash function for the ares_htable.
4877
4878 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
4879
4880         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
4881         bit for assembly flags. MS is ok with it but there is no spec anywhere
4882         on its mean
4883
4884 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4885
4886         * class.c (mono_class_create_from_typedef): Emit profiler events
4887         in all cases.
4888
4889 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4890
4891         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
4892         Release memory on failure.
4893
4894 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
4897         to the internal API.
4898
4899         * metadata.c (get_constraints): Use a single-linked table as we don't
4900         traverse it backward. Fail and return FALSE if only of the contraint types
4901         is not found.
4902
4903         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
4904         to mono_metadata_load_generic_param_constraints except for having a return value.
4905         This has to be done since the later is part of the public API.
4906
4907         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
4908         and fail the type.
4909
4910         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
4911         and fail the method.
4912
4913 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4914
4915         * metadata-verify.c (is_valid_method_header): Add work-around to deal
4916         with MS broken behavior of emmitting EH section sizes without the
4917         header size added.
4918
4919 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4920
4921         * metadata.c (mono_type_create_from_typespec): Don't allocate image
4922         memory until we're sure that we'll need it. This avoids leaking for
4923         broken types or duplicated instantiation.
4924
4925 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4926
4927         * metadata-verify.c (is_valid_method_header): Fix stupid formating
4928         mistake.
4929
4930 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4931
4932         * metadata-verify.c (is_valid_method_header): Fix number of clauses
4933         and expected size calculation.
4934
4935 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4936
4937         * class.c (mono_class_get_field_idx): Add fixme for broken
4938         behavior for types with multiple fields with the same name.
4939         I would rather fix it, but have no idea on how to generate
4940         such artifact for testing.
4941
4942 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4943
4944         * verify.c (verifier_load_field): We should allow references to
4945         fields to be made using the generic type definition. It's up to
4946         the loader system to fail invalid ops.
4947
4948         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
4949         are invalid.
4950
4951 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4952
4953         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
4954
4955         * metadata-internals.h: Fix declaration of 
4956         mono_metadata_interfaces_from_typedef_full.
4957
4958         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
4959         heap_alloc_result parameter that controls if the result should be
4960         g_malloc'd.
4961
4962         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
4963         array be g_malloc'd and properly document this public API function.
4964
4965 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4966
4967         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
4968         remove METHOD_HEADER_TINY_FORMAT1.
4969
4970         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
4971
4972         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
4973
4974         Both spec and MS uses only 2 bits to enumerate the kind of header.
4975         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
4976         is superfluous, only used for tiny headers with odd code lengths.
4977
4978         This change also make sure that mono doesn't wronly interpret bit 2
4979         of fat header flags, which is currently reserved.
4980
4981 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4982
4983         * metadata.c (do_mono_metadata_parse_type): Do error
4984         checking for element types. Don't abort if presented
4985         with a broken type kind.
4986
4987 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4988
4989         * metadata.c (mono_metadata_parse_method_signature_full):
4990         Gracefully fail bad vararg signatures.
4991
4992 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4993
4994         * profiler.c:
4995         * class.c: Fix warnings for uninitialized variables.
4996
4997 2009-08-18  Christian Hergert  <chris@dronelabs.com>
4998
4999         * icall.c: Fix _NSGetEnviron method declaration warning.
5000
5001 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5002
5003         * icall.c:
5004         * reflection.c: Make bitwise checks explicit.
5005
5006 2009-08-18  Christian Hergert  <chris@dronelabs.com>
5007
5008         * debug-helpers.c:
5009         * marshal.c: Fix printf warnings.
5010
5011 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
5012
5013         * reflection.c (encode_cattr_value): Fix a warning.
5014
5015 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5016
5017         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
5018         of array bounds.
5019
5020 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * loader.c (mono_method_signature): Don't assert on broken
5023         signature. Print a more useful error message.
5024
5025 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5026
5027         * loader.c (mono_method_get_marshal_info): Assert if
5028         signature is invalid. Bounds check stores to the
5029         mspecs array;
5030
5031 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5032
5033         * loader.c (field_from_memberref): Fix warning.
5034
5035 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5036
5037         * loader.c (mono_method_get_param_names): Check if signature
5038         is null. Don't store beyond the size of the name array.
5039
5040 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5041
5042         * loader.c (mono_get_method_constrained): Check if signature
5043         is null.
5044
5045 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5046
5047         * loader.c (mono_loader_set_error_bad_image): Improve
5048         error messages.
5049
5050 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5051
5052         * loader.c (mono_get_method_full): Convert an assertion
5053         into a loader error.
5054
5055 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * class-internals.h, class.c: Better naming and documentation.
5058
5059 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
5060
5061         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
5062         obj is NULL.
5063
5064 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5065
5066         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
5067         parsing fails.
5068
5069 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5070
5071         * loader.c (mono_loader_error_prepare_exception): Handle missing field
5072         errors with no class set.
5073
5074         * loader.c (field_from_memberref): If the field signature is of the wrong
5075         type fail with a MissingFieldException instead of a BadImageException as
5076         this is the behavior observed on MS. 
5077
5078 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5079
5080         * loader.c (field_from_memberref): Don't crash if either the field
5081         signature or the typespec class are invalid.
5082
5083 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5084
5085         * verify.c (verifier_load_field): Don't allow field related
5086         ops to reference fields on generic type definition.
5087
5088 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5089
5090         * metadata-verify.c: Add new warning level for errors specified
5091         by ECMA 335 but that MS ignores.
5092
5093         * metadata-verify.c (verify_method_table): Make compiler controled
5094         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
5095         this check is safe because the end result will only be some visibility
5096         exceptions been thrown.
5097
5098 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
5099
5100         * verify.c (get_boxable_mono_type): Don't allow the
5101         use of the generic type definition on boxed type positions.
5102
5103         Fixes #531237.
5104
5105 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5106
5107         * threadpool.c: Make sure no cross-domain references remain in
5108         ares_htable or the arrays that are thrown away when resizing.
5109
5110 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5111
5112         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
5113         list of classes for which we have to unregister reflection_info
5114         with the GC and which are not in the namespace cache.
5115
5116         * reflection.c (mono_reflection_initialize_generic_parameter): Add
5117         the class to the list.
5118
5119 2009-08-14  Mark Probst  <mark.probst@gmail.com>
5120
5121         * domain.c (mono_domain_free): Unregister the GC roots in
5122         MonoDomain.
5123
5124 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5125
5126         * reflection.c (mono_reflection_type_get_handle): Fix typo.
5127
5128 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
5129
5130         * class.c: Add mono_class_get_field_from_name_full which does
5131         the same as mono_class_get_field_from_name but does check field
5132         signature as well.
5133
5134         * class-internals.h: Export mono_class_get_field_from_name_full as
5135         part of the internal API.
5136
5137         * loader.c (field_from_memberref): Search fields by name and signature
5138         as it's valid to have two fields with same name but different types.
5139
5140         Fixes #528055.
5141
5142 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
5143
5144         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
5145
5146         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
5147
5148         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
5149         System.Type.
5150
5151 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
5152
5153         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
5154
5155         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
5156
5157 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5158
5159         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
5160         to sgen-scan-object.h, which can be included and parameterized via
5161         macros.
5162
5163         * Makefile.am: sgen-scan-object.h added.
5164
5165 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5166
5167         * gc.c: #define GC_dont_gc if we're compiling with SGen.
5168
5169 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5170
5171         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
5172         before clearing a domain in the GC.
5173
5174 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5175
5176         * exception.c (mono_exception_from_name_domain): Actually create
5177         the exception in the specified domain.
5178
5179         * appdomain.c (mono_domain_create_appdomain_internal): Create the
5180         OutOfMemoryException a bit later so that the domain is inialized
5181         "enough" that it works.
5182
5183 2009-08-12  Mark Probst  <mark.probst@gmail.com>
5184
5185         * threads.c (thread_cleanup): Clean up the cached_culture_info
5186         array to prevent cross-domain references.
5187
5188 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
5189
5190         * metadata.c: more documentation for MonoType accessors.
5191
5192 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
5193
5194         Fix incorrect size definitions where the tail array isn't a list
5195         of pointers
5196         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
5197         define size.
5198         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
5199         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
5200         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
5201
5202 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5203
5204         * reflection.h:
5205         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
5206
5207 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5208
5209         * metadata.c:
5210         * loader.c:
5211         * metadata-internals.h:
5212         * method-builder.c:
5213         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
5214
5215 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5216
5217         * cominterop.c:
5218         * metadata.c:
5219         * metadata.h:
5220         * loader.c:
5221         * marshal.c:
5222         * reflection.c: #define for sizeof in MonoType and
5223         MonoMethodSignature.
5224
5225 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5226
5227         * domain.c:
5228         * domain-internals.h: add and use #define's instead of sizeof()
5229         for MonoJitInfo and MonoJitInfoTable.
5230
5231 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5232
5233         * object.c:
5234         * class.h: use #define instead of sizeof() for MonoRemoteClass.
5235
5236 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5237
5238         * metadata.c:
5239         * metadata.h:
5240         * object.c:
5241         * class-internals.h:
5242         * generic-sharing.c:
5243         * marshal.c: use a #define instead of sizeof() for a few
5244         structures that use a zero-length array.
5245
5246 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5247
5248         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
5249         to handle inflated generic methods.
5250
5251         * appdomain.c: Bump corlib version.
5252
5253         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
5254         instances.
5255
5256         * reflection.c (fixup_method): Same
5257
5258         * reflection.c (resolve_object): Same.
5259
5260         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
5261         g_error and a decent message.
5262
5263 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
5264
5265         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
5266         from the object because it could not yet be available globally
5267         (it happens if the profiler tries to create a gchandle on the
5268         MonoThread object of a thread that is still registering itself
5269         with the runtime).
5270
5271 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
5272
5273         * reflection.c (mono_generic_class_get_object): Initialized the
5274         managed type arguments array.
5275
5276         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
5277
5278         * appdomain.c: Bump corlib version.
5279
5280 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
5283         #527902.
5284
5285 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5288         Avoid a crash if synch_cs is not set.
5289         
5290         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
5291         Handle the case when the handle is 0.
5292
5293         * appdomain.c: Bump corlib version.
5294
5295 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
5296
5297         * reflection.c (mono_type_get_object): Fix a warning.
5298
5299 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5300
5301         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
5302         descriptor here.  We assume it's already been computed.
5303
5304         * generic-sharing.c (instantiate_other_info): Compute the GC
5305         descriptor for info type MONO_RGCTX_INFO_KLASS.
5306
5307 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5308
5309         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
5310         type, so don't use MONO_OBJECT_SETREF to set a field.
5311
5312 2009-08-01  Mark Probst  <mark.probst@gmail.com>
5313
5314         * gc.c: We were missing one case where invoking a finalizer would
5315         not reset the domain.  Also, in the finalizer thread loop, assert
5316         that we're in the root domain.
5317
5318 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5319
5320         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
5321         if the type is not an array.
5322
5323 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5324
5325         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
5326         method bound to the declaring type of the method. Raise an exception
5327         if the type is not a generic param.
5328
5329 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
5330
5331         * class.c (print_unimplemented_interface_method_info): Print the
5332         full type name.
5333
5334         * class.c (mono_class_setup_vtable_general): When dealing with a
5335         generic instance first check if the generic type definition is
5336         not broken.
5337
5338 2009-02-11 Tom Hindke <tom_hindle@sil.org>
5339
5340         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
5341
5342         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
5343
5344         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
5345
5346         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
5347
5348         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
5349
5350         Code is contributed under MIT/X11 license
5351
5352 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
5353
5354         * verify.c: Fix naming of stelem and ldelem.
5355
5356 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5357
5358         * generic-sharing.c: Replace the templates lock with the loader
5359         lock because of very hard to resolve deadlock issues.
5360
5361 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * icall.c (ves_icall_Type_GetMethodsByName): Use 
5364         mono_class_get_vtable_size () instead of accessing klass->vtable_size
5365         directly. Fixes #525338.
5366
5367         * class.c (mono_class_get_vtable_size): New helper function.
5368
5369         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
5370         the field belongs to the type. Fixes #525733.
5371
5372 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5373
5374         * sgen-gc.c: When we stop a thread and its stack top is not within
5375         its allocated stack (because it's in an altstack signal handler),
5376         restart it and stop it again, until it is.
5377
5378 2009-07-30  Mark Probst  <mark.probst@gmail.com>
5379
5380         * sgen-gc.c: Take a thread's stack top and registers from the
5381         sigcontext in the suspend signal handler.
5382
5383         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
5384         stuff to sgen-archdep.h.
5385
5386         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
5387         caller, because have code in sgen-archdep.h to acquire that data.
5388
5389 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
5390
5391         * profiler.c, profiler.h, profiler-private.h:
5392         Added support for keeping track of code chunks and buffers.
5393
5394 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
5395
5396         * metadata-verify.c: Fix endianness problems on decoding functions.
5397         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
5398
5399 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5400
5401         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
5402         schema for vectors and one dimension SZARRAY.
5403
5404 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5405
5406         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
5407         schema for vectors and one dimension SZARRAY.
5408
5409 2009-07-27  Mark Probst  <mark.probst@gmail.com>
5410
5411         * icall-def.h, thread-types.h, threads.c: New separate icalls for
5412         Interlocked.(Compare)Exchange with object arguments, which invoke
5413         write barriers.
5414
5415 2009-07-26  Miguel de Icaza  <miguel@novell.com>
5416
5417         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
5418         passed invalid arguments.   Fixes another crasher in the
5419         Silverlight test suite.
5420
5421         * class.c (mono_class_array_element_size): Return 0 for the size
5422         of the class;  This fixes the crasher exposed by :
5423
5424         typeof (void).MakeArrayType ();
5425
5426         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
5427         if there is no method to dereference.    Put all the code that
5428         depends on this inside the if (method) block.
5429
5430         This fixes the crasher exposed by Microsoft's Silvelright CLR test
5431         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
5432
5433         With this change, we pass the test.
5434         
5435         * reflection.c (mono_reflection_sighelper_get_signature_local):
5436         Only dereference the assembly if it has been set.    Fixes a
5437         crasher exposed by #525328
5438
5439 2009-07-25  Mark Probst  <mark.probst@gmail.com>
5440
5441         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
5442         don't perform the store in mono_gc_wbarrier_generic_nostore().
5443         Remove the second argument (value), which is not needed.
5444
5445 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
5448         the build.
5449
5450         * boehm-gc.c: Ditto.
5451         
5452 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5453
5454         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
5455         not perform the store itself.  Introduce
5456         mono_gc_wbarrier_generic_nostore(), which is the same as
5457         mono_gc_wbarrier_generic_store(), except it doesn't perform the
5458         store.
5459
5460 2009-07-24  Mark Probst  <mark.probst@gmail.com>
5461
5462         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
5463         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
5464         we still need the memcpy().
5465
5466 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5467
5468         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
5469         so that big arrays are handled correctly.  Always use
5470         safe_object_get_size() to calculate array object sizes, which
5471         takes bounds into account.
5472
5473 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5474
5475         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
5476         GC descriptor is computed before we use it.
5477
5478 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5479
5480         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
5481         write barrier if necessary.
5482
5483 2009-07-22  Mark Probst  <mark.probst@gmail.com>
5484
5485         * icall-def.h, icall.c, thread-types.h: New separate icall for
5486         VolatileWrite(object&,object) that uses a write barrier.
5487
5488         * console-unix.c, file-io.c, icall.c, threads.c: Use write
5489         barriers in icalls which write to "ref" or "out" arguments.
5490
5491 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
5492
5493         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
5494         handler in a separate icall, to reduce the size of the wrappers.
5495
5496 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5497
5498         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
5499
5500 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5501
5502         * metadata-verify.c (parse_field): Allow byref field.
5503
5504         * metadata-verify.c (parse_locals_signature): Allow byref locals.
5505
5506         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
5507
5508 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
5509
5510         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
5511         Fixes #522784.
5512
5513 2009-07-20  Robert Jordan  <robertj@gmx.net>
5514
5515         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
5516         Fix invalid IL in valuetype handling (STOBJ must push the
5517         corresponding class). Fixes bug #523149.
5518
5519         Code is contributed under MIT/X11 license.
5520
5521 2009-07-20  Geoff Norton  <gnorton@novell.com>
5522
5523         * gc.c: Use proper semaphores where available on posix and darwin.
5524
5525 2009-07-19  Geoff Norton  <gnorton@novell.com>
5526
5527         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
5528
5529 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         * refletion.c (is_sre_usertype): Change name to is_usertype and
5532         invert it's result so it returns true if the type is an user type
5533         and not the opposite.
5534
5535         * reflection.c (is_*_type): Change all of those to use new macro
5536         check_corlib_type_cached that cached the type lookup so we don't
5537         need to do string comparisons all the type. Changed the signature
5538         to take a MonoClass instead.
5539
5540         * reflection.c: Change mono_image_create_token and resolve_object
5541         to use is_sre_* functions.
5542
5543 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5544
5545         * sgen-gc.c: Check for writes to the stack in the managed
5546         wbarrier as well.
5547
5548 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5549
5550         * sgen-gc.c: When a thread is unregistered, don't free its remsets
5551         but put them on a list which is processed with the other thread's
5552         remsets.
5553
5554 2009-07-18  Mark Probst  <mark.probst@gmail.com>
5555
5556         * sgen-gc.c: Fix and enable the internal allocator instead of
5557         using malloc/free (which causes deadlocks).
5558
5559 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5560
5561         * refletion.c: Fix builds with SRE disabled by adding a minimal
5562         implementation of mono_reflection_type_get_handle.
5563
5564 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5565
5566         * refletion.c: Make mono_reflection_type_get_handle non static.
5567
5568         * object-internals.h: Export mono_reflection_type_get_handle.
5569
5570         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
5571         unmanaged handle using mono_reflection_type_get_handle.
5572
5573 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * refletion.c: Replace all reads of MonoReflectionType::type with
5576         calls to mono_reflection_type_get_handle. Only the functions that
5577         deal with constructing TypeBuilder::type have not been changed
5578         because they have to deal with NULL values.
5579
5580         This is a first step into supporting reflection types that don't
5581         map directly into their unmanaged counterpart.
5582
5583 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * metadata-verify.c (parse_locals_signature): Don't complain
5586         on signature with zero locals since MS generates it and doesn't
5587         bother with.
5588
5589 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * reflection.c (mono_image_get_array_token): Resolve return
5592         type using mono_reflection_type_get_handle.
5593
5594         * reflection.c (mono_image_get_array_token): Resolve array method
5595         parent type using mono_reflection_type_get_handle.
5596
5597 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * reflection.c (mono_image_basic_init): Applied patch from
5600         <Dax@daxxfiles.net>. Set the public key token from the assembly
5601         builder. Fixes #518909.
5602
5603         * appdomain.c: Bump corlib version.
5604
5605 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * class.c (mono_class_needs_cctor_run): Make this return false if
5608         the class has no cctor.
5609
5610 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5611
5612         * sgen-gc.c: When the minor GC needs to allocate a new section,
5613         invoke the major GC afterwards.
5614
5615 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
5616
5617         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
5618           Applying the window_style field to the SHELLEXECUTEINFO struct.
5619
5620         Code is contributed under MIT/X11 license.
5621
5622 2009-07-13  Mark Probst  <mark.probst@gmail.com>
5623
5624         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
5625         locking earlier.  Fix it in the managed allocator by making sure
5626         that no thread is stopped there before the GC runs.  If we do stop
5627         a thread there, we restart it and let it run a but, until it stops
5628         somewhere else.
5629
5630         * gc-internal.h, gc.c: Function for getting the IP from a signal
5631         context via a function registered by mini.
5632
5633 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
5634
5635         * object-internals.h (MonoIntPtr): New structure describing a boxed
5636         IntPtr.
5637
5638         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
5639         returns. Fixes #519953.
5640
5641         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
5642
5643 2009-07-09  Mark Probst  <mark.probst@gmail.com>
5644
5645         * class-internals.h, generic-sharing.c: New RGCTX info type for
5646         getting a remoting invoke with check wrapper.
5647
5648 2009-07-07  Geoff Norton  <gnorton@novell.com>
5649
5650         * icall-def.h: Fix the enable-minimal build.
5651
5652 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5653
5654         * object-internals.h: Add MonoReflectionDerivedType.
5655
5656         * reflection.c: Implement support for PointerType.
5657         Fixed tons of warnings.
5658
5659 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5660
5661         * object-internals.h: Add MonoReflectionByRefType.
5662
5663         * reflection.c: Implement support for ByRefType.
5664
5665 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5666
5667         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
5668
5669         * object-internals.h: Add MonoReflectionArrayType and
5670         mono_reflection_create_unmanaged_type.
5671
5672         * reflection.c: Implement support for ArrayType.
5673
5674 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
5675
5676         * metadata-verify.c (is_valid_method_header): Parse EH block
5677         flags correctly.
5678
5679 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5680
5681         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
5682         processing the disappearing links, and process disappearing links
5683         in a loop until no new objects are copied.
5684
5685 2009-07-03  Mark Probst  <mark.probst@gmail.com>
5686
5687         * object.c (handle_enum): Invoke the write barrier when copying
5688         value type instances.
5689
5690         * sgen-gc.c: Register remsets for unmanaged write barriers only
5691         when the address written to is actually on the heap.  This makes
5692         set_value() in object.c work without requiring that the result be
5693         on the heap.
5694
5695 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5696
5697         The runtime wrappers are all bound to a given type that must
5698         exist in the same image. For regular images we use the <Module>
5699         type, which is required to exist for all images.
5700
5701         The <Module> type can't be used for dynamic images because it
5702         might not exist at the time the wrapper is required, so we create
5703         a synthetic type to use instead.
5704
5705         The current code works because of the 2 stage setup of MonoClass,
5706         but once this is gone it will no longer work.
5707
5708         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
5709
5710         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
5711
5712         * object-internals.h: Export mono_image_set_wrappers_type icall
5713         as part of the internal API.
5714
5715         * marshal.c (get_wrapper_target_class): If the image is dynamic,
5716         use MonoDynamicImage::wrappers_type instead of the <Module> type.
5717
5718         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
5719         image wrappers_type to the provided value.
5720
5721 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
5722
5723         * appdomain.c (deregister_reflection_info_roots): No need
5724         to use the image lock here.
5725
5726 2009-07-02  Mark Probst  <mark.probst@gmail.com>
5727
5728         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
5729
5730 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * threads.c: Store the thread start argument in a hash table instead of
5733         registering it as a root, as libgc doesn't support unregistering roots
5734         under windows, leading to 'too many root sets' errors when many threads
5735         are created.
5736
5737         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
5738         shutdown, they can still be referenced by the other dying objects.
5739         Fixes #514506.
5740
5741 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5742
5743         * socket-io.c: DontLinger does not allow LingerOptions.
5744
5745 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5746
5747         * metadata-verify.c: The spec doesn't mention that it's possible to add
5748         custom attribute to a generic parameter. Fixed.
5749
5750 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5751
5752         * class.c (inflate_generic_type): Don't crash while trying to output a message
5753         on why we're aborting.
5754
5755 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5756
5757         * socket-io.c: DontLinger can take an int or a boolean too.
5758
5759 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
5760
5761         * gc.c: check for a null argument to SuppressFinalize () and
5762         ReRegisterForFinalize ().
5763
5764 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5765
5766         * loader.c (method_from_methodspec): Call into the verifier to check
5767         the signature.
5768
5769         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
5770
5771         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
5772         part of the internal API.
5773
5774 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5775
5776         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
5777         the signature.
5778
5779         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
5780
5781         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
5782         part of the internal API.
5783
5784 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5785
5786         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
5787         the signature.
5788
5789         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
5790         blob verification.
5791
5792         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5793         part of the internal API.
5794
5795 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
5798         when doing basic verification. 
5799
5800         This check must be done since the runtime peeks into signatures in much
5801         more places than it does decoding so it makes sense to ensure that all
5802         pointers to blob objects are well formed.
5803
5804 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5805
5806         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
5807         Use proper overflow dectection. Fix usage of it.
5808
5809 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5810
5811         * loader.c (field_from_memberref): Call into the verifier to check
5812         the signature.
5813
5814         * loader.c (mono_method_get_signature_full): Same.
5815
5816         * loader.c (method_from_memberref): Same.
5817
5818         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
5819
5820         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
5821         part of the internal API.
5822
5823 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5824
5825         * threadpool.c (mono_thread_pool_add): If the domain is unloading
5826         or unloaded, still return an AsyncResult, but don't add it to the
5827         threadpool.
5828
5829 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5830
5831         * threads.c: fix missing colon when DEBUG is defined.
5832
5833 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5834
5835         * threadpool.c: Don't add new calls to a threadpool if the domain
5836         of the call is unloading or unloaded.  When dequeuing a job, null
5837         the reference in the queue.
5838
5839 2009-06-25  Mark Probst  <mark.probst@gmail.com>
5840
5841         * sgen-gc.c (null_link_in_range): Add the dislink for the old
5842         generation if an object was moved.
5843
5844 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
5845
5846         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
5847           parameters of type SAFEARRAY[VARIANT].
5848
5849         * reflection.c (encode_marshal_blob): Properly generate element type
5850           (SafeArraySubType marshal attribute option).
5851
5852         Code is contributed under MIT/X11 license.
5853
5854 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
5855
5856         * reflection.c: in mono_method_clear_object () really ensure all the
5857         objects are removed.
5858
5859 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5860
5861         * loader.c (mono_method_signature): Call into the verifier to check
5862         the method signature.
5863
5864         * metadata-verify.c (verify_method_table): Move signature verification
5865         to verify_method_table_full.
5866
5867         * metadata-verify.c: Add mono_verifier_verify_method_signature.
5868
5869         * verify-internals.h: Export mono_verifier_verify_method_signature as
5870         part of the internal API.
5871
5872 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5873
5874         * loader.c (mono_method_get_header): Call into the verifier to
5875         check the method header.
5876
5877         * metadata-verify.c: Add mono_verifier_verify_method_header.
5878
5879         * verify-internals.h: Export mono_verifier_verify_method_header as
5880         part of the internal API.
5881
5882 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5883
5884         * class.c (mono_class_find_enum_basetype): Call into the verifier to
5885         check the field signature. Replace an assert with an explicit check.
5886
5887         * class.c (mono_class_setup_fields): Call into the verifier to check
5888         the field signature.
5889
5890         * metadata-verify.c: Add mono_verifier_verify_field_signature.
5891
5892         * verify-internals.h: Export mono_verifier_verify_field_signature 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): Simplify this function
5898         by moving code outside of the loop and not decoding static fields.
5899
5900 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5901
5902         * metadata-verify.c (verify_typedef_table): Check the extends
5903         token here. Move to here a flags check from verify_typedef_table_full.
5904
5905 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
5906
5907         * metadata-verify.c (is_valid_method_header): Fix a warning.
5908
5909         * metadata-internals.h (MonoImage): Remove the unused 
5910         static_rgctx_invoke_wrapper_cache.
5911
5912         * image.c marshal.c: Ditto.
5913
5914 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5915
5916         * image.c (do_mono_image_load): Enable table data verification.
5917
5918 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5919
5920         * metadata-verify.c (is_valid_constant): Fix nullref check.
5921
5922 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
5923
5924         * metadata-verify.c (is_valid_constant): Fix string bounds check.
5925
5926 2009-06-22  Mark Probst  <mark.probst@gmail.com>
5927
5928         * sgen-gc.c: Managed allocation with pthreads TLS.
5929
5930         * threads.c, threads-types.h: Functions for the JIT to tell the
5931         runtime whether it supports the MONO_TLS opcode.
5932
5933 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5934
5935         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
5936         without methods.
5937
5938 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5939
5940         * metadata-verify.c (is_valid_constant): Fix the string length check.
5941         Use safe overflow checking. Add decent error messages.
5942
5943 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5944
5945         * metadata-verify.c: Move remaininh blob checks to the offline
5946         verification path.
5947
5948 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
5949
5950         * metadata-verify.c: Move more blob checks to the offline verification
5951         path.
5952
5953 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
5954
5955         * object-internals.h : Adding interrupt_on_stop field.
5956
5957         * threads.c (mono_thread_request_interruption) : On Windows exit the
5958           thread if interrupt_on_stop is set.
5959
5960         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5961          Removing old interrupt logic and setting the interrupt_on_stop for the
5962          thread when calling accept.
5963
5964         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
5965          setting the interrupt_on_stop for the thread when calling accept.
5966
5967         Contributed under MIT/X11 license.
5968
5969 2009-06-20  Martin Baulig  <martin@ximian.com>
5970
5971         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
5972
5973 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
5976         running in no-exec mode.
5977
5978 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5979
5980         * metadata-verify.c (verify_method_table): Move header
5981         checking to verify_method_table_full.
5982
5983         * metata-verify.c (mono_verifier_verify_full_table_data):
5984         Call verify_method_table_full.
5985
5986 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5987
5988         * metadata-verify.c (verify_field_table): Move signature
5989         checking to verify_field_table_full.
5990
5991         * metata-verify.c (mono_verifier_verify_full_table_data):
5992         Call verify_field_table_full.
5993
5994 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
5995
5996         * metadata-verify.c (verify_typedef_table): Move remaining
5997         stuff to verify_typedef_table_full.
5998
5999 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6000
6001         * metadata-verify.c: Kill is_corlib from VerifyContext.
6002         It is only used by the offline mode.
6003         So we better remove it from the runtime path.
6004
6005 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
6008         function that perform the offline metadata verification steps.
6009
6010         * metadata-verify.c (verify_typedef_table): Move some checks to
6011         verify_typedef_table_full and make it been called by new function
6012         mono_verifier_verify_full_table_data.
6013
6014         * pedump.c: Call mono_verifier_verify_full_table_data.
6015
6016         * verify-internals.h: Export mono_verifier_verify_full_table_data as
6017         part of the internal API.
6018
6019 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6020
6021         * metadata-verify.c (typedef_is_system_object): Fix System.Object
6022         check.
6023
6024         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
6025         flags bits. SupportLastError was confused as bit 7 instead of 6.
6026
6027         * metadata-verify.c (verify_implmap_table): Fix import scope verification
6028         to check against the module ref table instead of module.
6029
6030         * metadata-verify.c (verify_implmap_table): Fix corlib check.
6031
6032         * pedump.c: Call mono_image_load_names.
6033
6034 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
6035
6036         * image.c: Extract mono_image_load_names from do_mono_image_load.
6037
6038         * metadata-internals.h: Export mono_image_load_names as part of
6039         the internal API.
6040         
6041 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * metadata.c (mono_metadata_cleanup): Free the generic method cache
6044         first, as it could reference data in the other caches.
6045
6046 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * metadata-verify.c: Finished with method header verification.
6049
6050 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6051
6052         * metadata-verify.c: Added more header verification code.
6053         Now only EH clauses are missing.
6054
6055 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
6056
6057         * marshal.c (get_runtime_invoke_type): Don't share primitive types
6058         for return values.
6059
6060 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6061
6062         * metadata-verify.c: Initial method header verification.
6063
6064 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
6065
6066         * metadata-verify.c (verify_import_table): The IAT contents
6067         might end been patched by the windows DL when running with
6068         coree enabled.
6069
6070 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
6071
6072         * class.c (mono_class_from_typeref): If the enclosing type is not
6073         found return null instead of crashing. Fixes #508487.
6074
6075 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
6076
6077         * normalization-tables.h : updated to the latest unicode charcter
6078           data.
6079         * appdomain.c : bump corlib version.
6080
6081 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * class.c (mono_class_from_name): Fix support for assembly references
6084         in the EXPORTEDTYPE table. Fixes #511704.
6085
6086 2009-06-13  Geoff Norton  <gnorton@novell.com>
6087
6088         * domain.c: Ensure that mono_domain_assembly_open actually opens the
6089         assembly in the target domain.
6090
6091 2009-06-12  Robert Jordan  <robertj@gmx.net>
6092
6093         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
6094         because "this" of the managed signature has become an
6095         ordinary parameter in the unmanaged signature.
6096
6097 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
6100         field for owner-less generic containers.
6101
6102         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
6103         image field of the owner-less generic containers created here.
6104
6105         * metadata.c (mono_metadata_load_generic_params): Ditto, the
6106         contain is ownerless until the caller sets its owner.
6107
6108         * metadata.c (type_in_image): Handle owner-less generic containers
6109         correctly.
6110         
6111 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6112
6113         * image.c (mono_image_close): Support debug_assembly_unload for
6114         dynamic images too.
6115
6116 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
6117
6118         * class.c: Fix some typos in comments.
6119
6120 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
6121
6122         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
6123
6124         * threads.c (mono_thread_execute_interruption): Avoid creating the
6125         abort exception object while holding the synch_cs lock.
6126
6127 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
6128
6129         * metadata-verify.c: Verify basic cattr content.
6130
6131 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
6132
6133         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
6134         nested types.
6135         
6136         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
6137         support for nested types. Fixes #511704.
6138
6139 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6140
6141         * metadata-verify.c: Verify methodspec signatures.
6142
6143 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * metadata-verify.c: Verify typespec signatures.
6146
6147 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * metadata.c (free_inflated_method): Call 
6150         mono_marshal_free_inflated_wrappers (), which was missed earlier.
6151
6152 2009-06-08  Miguel de Icaza  <miguel@novell.com>
6153
6154         * mono-config.c: Small change to report the PPC64/ILP32 model.
6155
6156 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6157
6158         * metadata-verify.c (parse_type): Check szarray.
6159
6160 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * metadata-verify.c (parse_type): Check fnptr.
6163
6164 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6165
6166         * metadata-verify.c (parse_type): Check generic instances.
6167
6168 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6169
6170         * metadata-verify.c (parse_type): Check array shape.
6171
6172 2009-06-05  Robert Jordan  <robertj@gmx.net>
6173
6174         * class.c (mono_class_create_from_typedef): Check only for
6175         mscorlib's System.Array.
6176
6177 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6178
6179         * metadata-verify.c (parse_type): Check pointer, class/valuetype
6180         and generic params. 
6181
6182         * metadata-verify.c (parse_field): Check the signature.
6183
6184 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6185
6186         * metadata-verify.c: Implement locals signature check.
6187
6188 2009-06-04  Marek Safar  <marek.safar@gmail.com>
6189
6190         * domain.c: Add .NET 4.0 Beta 1 version.
6191
6192 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
6193
6194         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
6195           For QueryInterface on CCWs consider the base class
6196           interfaces as well.
6197
6198         Code is contributed under MIT/X11 license.
6199
6200 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6201
6202         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
6203
6204         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
6205         used.
6206
6207         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6208         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
6209
6210         * generic-sharing.c (inflate_other_data): Ditto.
6211         
6212 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6213
6214         * metadata-verify.c: Implement property signature check.
6215
6216 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6217
6218         * sgen-gc.h: Register saving support for PPC.
6219
6220 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6221
6222         * sgen-gc.c: Fixed a pthread TLS screwup.
6223
6224 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6225
6226         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
6227         supported.
6228
6229 2009-06-04  Mark Probst  <mark.probst@gmail.com>
6230
6231         * sgen-gc.c: Disable TLA and managed allocation if the __thread
6232         keyword is not supported.
6233
6234 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
6235
6236         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
6237         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
6238         the inflated method is freed. Fixes #508389.
6239
6240         The code is contributed under the MIT/X11 license.
6241         
6242 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * marshal.c (get_wrapper_target_class): New helper function.
6245         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
6246         the <Module> class of the image. Fixes #509049.
6247
6248 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6249
6250         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
6251         Check if the thread was interrupted and proccess it straight away.
6252         Makes abortion much more responsive.
6253
6254 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6255
6256         * threads.c (mono_thread_execute_interruption): Use atomic cas with
6257         MonoThread::interruption_requested to match it's counterpart.
6258
6259         Fixes a hang in abort-stress-1 on a 2 core x86.
6260
6261         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
6262         Fix warning.
6263
6264 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6265
6266         Change MonoImage::name_cache to be protected by the image lock
6267         instead of the loader lock.
6268
6269         * appdomain.c (deregister_reflection_info_roots): Protect access
6270         to name_cache.
6271
6272         * class.c (mono_image_init_name_cache): Change from the loader lock
6273         to the image lock. Check if the cache wasn't already created.
6274
6275         * class.c: Change from the loader to the image lock.
6276
6277         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
6278         the code to hold the image lock while iterating over name_cache and
6279         not go into mono_array_new holding it.
6280
6281         * metadata-internals.h: Add a comment about this change.
6282
6283 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6284
6285         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6286         Under the 2.0 profile raise the loader error.
6287
6288         Fixes #508532.
6289
6290 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6291
6292         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
6293         of ldind opcode for generic instances so we don't fail for direct wrappers.
6294         This only affect direct calls.
6295
6296 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
6297
6298         * reflection.c (create_dynamic_mono_image): Fix warnings.
6299
6300         * generic-sharing.c (other_info_equal): Ditto.
6301         
6302 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6303
6304         * metadata-verify.c: Implement field signature check.
6305
6306 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6307
6308         * metadata-verify.c: Implement standalone signature check.
6309
6310 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6311
6312         * metadata-verify.c: Implement methodref signature check.
6313
6314 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
6315
6316         * object-internals.h (MonoRuntimeCallbacks): New structure containing
6317         callbacks supplied by the runtime.
6318
6319         * object.c (mono_install_callbacks): New internal function to install
6320         the callbacks.
6321
6322         * object.c (mono_create_ftnptr): Move the implementation of this to
6323         mini/.
6324
6325         * object.c (mono_get_addr_from_ftnptr): Ditto.  
6326
6327 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6328
6329         * metadata-verify.c (parse_return_type): Proper byref check.
6330         * metadata-verify.c (is_valid_method_signature): Check for zero arity
6331         generic signatures and method params.
6332
6333 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * metadata-verify.c (decode_signature_header): Fix bounds check.
6336
6337         * metadata-verify.c (parse_custom_mods): Check custom mods.
6338
6339         * metadata-verify.c (parse_type): Do initial basic verification
6340         of valid values.
6341         
6342         * metadata-verify.c (is_valid_method_signature): Parse the generic
6343         param count.
6344
6345 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
6346
6347         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
6348         discarded based on their most specific definition so we set the method_slots
6349         array before checking if the method is acceptable or not.
6350
6351         Fixes #506757.
6352
6353 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6354
6355         * icall.c: Free the old array when resizing a mono_ptr_array.
6356
6357 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6358
6359         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
6360         for the hashes whose keys are managed objects.
6361
6362 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6363
6364         * object-internals.h, threads.c: Set the execution context on
6365         thread start here, not in corlib.
6366
6367         * appdomain.c: Bump corlib version.
6368
6369 2009-05-27  Martin Baulig  <martin@ximian.com>
6370
6371         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
6372         if `_mono_debug_using_mono_debugger' is set to make things work
6373         properly when embedding Mono.
6374
6375 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6376
6377         * class.c (mono_class_setup_fields): Don't mark simd types as having
6378         16 bytes alignment as the whole runtime doesn't support.
6379
6380 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
6381
6382         * metadata-verify.c (safe_read): Use endian safe read macros.
6383
6384 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
6385
6386         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
6387         it is read-only when using full aot.
6388
6389 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6390
6391         * metadata-verify.c (is_valid_method_signature): Verify parts
6392         of the return type. Provide an error message in case of failure.
6393
6394 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6395
6396         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
6397
6398 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
6399
6400         * metadata-verify.c: Include the size prefix in the bounds check.
6401
6402 2009-05-22  Miguel de Icaza  <miguel@novell.com>
6403
6404         * icall.c: Remove warnings.
6405
6406         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
6407         prevent auto-detection based on GCC defines.
6408
6409         Add PS3
6410
6411         * metadata-verify.c: Do not include signal.h
6412
6413         * generic-sharing.c, marshal.c: Add returns to avoid some warning
6414         messages.  Not sure why the g_assert_not_reached is not enough to
6415         quiet the compiler.
6416         
6417
6418         * appdomain.c: Remove code that is not used when
6419         DISABLE_SHADOW_COPY is set.
6420
6421         * image.c: use g_getenv
6422
6423 2009-05-21  Miguel de Icaza  <miguel@novell.com>
6424
6425         * reflection.c: Remove code that it not used with
6426         DISABLE_REFLECTION_EMIT is defined.
6427
6428 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
6429
6430         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
6431         invoke wrappers.
6432
6433 2009-05-20  Miguel de Icaza  <miguel@novell.com>
6434
6435         * socket-io.c
6436         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
6437         the ifdef here and instead put that on io-layer
6438
6439 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6440
6441         * metadata-verify.c: Verify the generic param constraint table.
6442
6443 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6444
6445         * metadata-verify.c (verify_generic_param_table): Fix
6446         thinko on the valid flags bits for generic params.
6447
6448 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6449
6450         * metadata-verify.c: Verify the methodspec table.
6451
6452 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6453
6454         * metadata-verify.c: Verify the generic param table.
6455
6456 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6457
6458         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
6459
6460 2009-05-19  Mark Probst  <mark.probst@gmail.com>
6461
6462         * sgen-gc.c: Use generation enum more consistently and use the
6463         correct generation in mono_gc_register_for_finalization().
6464
6465 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6466
6467         * metadata-verify.c: Verify the nested class table.
6468
6469 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6470
6471         * metadata-verify.c: Verify the manifest resource table.
6472
6473 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
6476
6477 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
6478
6479         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
6480         wrappers, this is now done in the JIT.
6481         
6482         * class.c (mono_set_generic_sharing_supported): New internal function.
6483         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
6484
6485 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6486
6487         * metadata-verify.c: Verify the exported type table.
6488
6489 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6490
6491         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
6492
6493 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6494
6495         * metadata-verify.c: Verify the file table.
6496
6497 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6498
6499         * metadata-verify.c (verify_assembly_table): Fix an error message.
6500
6501         * metadata-verify.c: Verify the assemblyref table.
6502
6503 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
6504
6505         * metadata-verify.c (verify_assembly_table): Fix the valid
6506         bits mask for flags.
6507
6508 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
6509
6510         * debug-helpers.c (mono_method_full_name): Print generic parameters of
6511         generic methods as well.
6512
6513 2009-05-15  Geoff Norton  <gnorton@novell.com>
6514
6515         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
6516         use-case and is significantly more performant than the wapi layer.
6517
6518 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6519
6520         * metadata-verify.c: Verify the assembly table.
6521
6522 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * metadata-verify.c: Fix rows limit check.
6525
6526 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6527
6528         * metadata-verify.c: Verify the fieldrva table.
6529
6530 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6531
6532         * sgen.c: Speed up weak links and finalizers by grouping them by
6533         generation.
6534
6535 2009-05-13  Mark Probst  <mark.probst@gmail.com>
6536
6537         * marshal.c (delegate_hash_table_add): When overwriting an entry,
6538         free the old GCHandle (only applies to SGen).
6539
6540 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * loader.c (mono_get_method_from_token): Avoid the expensive call to
6543         mono_metadata_load_generic_params () for non-generic methods.
6544
6545 2009-05-12  Mark Probst  <mark.probst@gmail.com>
6546
6547         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
6548         New function for returning a monitor's weak link if it has one.
6549
6550         * sgen-gc.c: Remove an object's monitor's weak link (if it has
6551         one) when clearing a domain.  These can still be around because
6552         the object might not have been collected.
6553
6554 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
6555
6556         * gc.c: Fix a warning.
6557
6558 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
6559
6560         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
6561         prevous wait that resulted in a deadlock on Windows when initializing
6562         the runtime form DllMain. Also results in improved startup time.
6563         (finalizer_thread): Get rid of thread_started_event.
6564         * threads.c, threads-types.h (mono_thread_create_internal): Return the
6565         resulting MonoThread.
6566
6567         Contributed under MIT/X11 license.
6568
6569 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
6570
6571         * metadata-verify.c: Verify the implmap table.
6572         Don't require that #US and #Strings be present.
6573
6574 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
6575
6576         * security-core-clr.c: Delegate checks are done at creation time,
6577         not a invocation time. Fix exception for Telerik Silverlight demo
6578
6579 2009-05-11  Mark Probst  <mark.probst@gmail.com>
6580
6581         * sgen-gc.c (need_remove_object_for_domain): Remove the special
6582         case for the Thread class.
6583
6584         * threads.c: Do clean-up of abort exception/state in
6585         thread_cleanup() instead of Thread.free_internal().  Also clean up
6586         current_appcontext.  The reason we have to do that is because
6587         those references might point into another domain and if that
6588         domain is unloaded before the thread is finalized, they point to
6589         invalid data.
6590
6591 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
6592
6593         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
6594         stub signatures.
6595         
6596         Contributed unter MIT/X11 license.
6597
6598 2009-05-09  Miguel de Icaza  <miguel@novell.com>
6599
6600         * verify.c, metadata-verifier.c: Add support for disabling the
6601         verifier in some builds.
6602
6603         [ Sorry, my previous commit accidentally commited some work in
6604         progress ]
6605
6606 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
6607
6608         * class.c (mono_class_setup_fields): Set class->field.first for
6609         generic instances.
6610
6611 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6612
6613         * metadata-verify.c: Verify the typespec table.
6614
6615 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
6616
6617         * metadata-verify.c: Verify the module table.
6618
6619 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6620
6621         * metadata-verify.c: Verify the methodimpl table.
6622
6623 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6624
6625         * metadata-verify.c: Verify the property table.
6626
6627 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * debug-helpers.c (mono_method_desc_match): Add support for generic
6630         glob patterns.
6631
6632 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
6633
6634         * metadata-verify.c: Verify the propertymap table.
6635
6636 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
6637
6638         * metadata-verify.c: Verify the event table.
6639
6640         * metadata-verify.c (search_sorted_table): Fix offset
6641         calculation.
6642
6643 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
6646
6647 2009-05-01  Mark Probst  <mark.probst@gmail.com>
6648
6649         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
6650         because mono_delegate_free_ftnptr() needs it.
6651
6652 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * metadata-verify.c: Verify the eventmap table.
6655
6656 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6657
6658         * metadata-verify.c: Verify the standalonesig table.
6659
6660 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6661
6662         * metadata-verify.c: Verify the field layout table.
6663
6664 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * class.c (mono_type_get_name_recurse): Don't crash
6667         for ownerless generic params.
6668
6669         * debug-helpers.c (mono_type_get_desc): Correct the format
6670         for ownerless generic params.
6671
6672 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         * metadata-verify.c: Verify the class layout table.
6675
6676 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6677
6678         * metadata-verify.c: Verify the decl security table.
6679
6680 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6681
6682         * domain.c (mono_domain_set_internal_with_options): Don't do
6683         anything if the old domain is the same as the old one.  Fixes
6684         #499326.
6685
6686 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6687
6688         * appdomain.c: Deregister the reflection_info roots when unloading
6689         a domain.
6690
6691         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
6692         memory allocated by a domain and frees its disappearing links.
6693
6694         * boehm-gc.c, null-gc.c: Empty implementation of
6695         mono_gc_clear_domain().
6696
6697 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6698
6699         * appdomain.c (clear_cached_vtable): Free the static fields memory
6700         block.
6701
6702 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6703
6704         * gc.c: Set the correct domain when invoking finalizers.
6705
6706         * appdomain.c: Set the correct domain when creating threads.
6707
6708 2009-04-30  Mark Probst  <mark.probst@gmail.com>
6709
6710         * sgen-gc.c: Fix skip size for vectors.
6711
6712 2009-05-03  Martin Baulig  <martin@ximian.com>
6713
6714         * mono-debug-debugger.c
6715         (mono_debugger_check_breakpoints): Check class init handlers even
6716         if we don't have any method load handers.
6717
6718 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
6719
6720         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
6721         returning refonly assemblies if refonly is FALSE. Fixes #499013.
6722
6723 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6724
6725         * metadata-verify.c: Verify the field marshal table.
6726
6727 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
6728
6729         * metadata-verify.c: Verify the custom attribute table.
6730
6731 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6732
6733         * metadata-verify.c: Verify the constant table.
6734
6735 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6736
6737         * metadata-verify.c: Verify the memberef table.
6738
6739 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * metadata-verify.c (get_coded_index_token): Remove
6742         dead argument.
6743
6744 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6745
6746         * metadata-verify.c: Verify the interfaceimpl table.
6747
6748 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
6749
6750         * verify.c: Improve error message.
6751
6752         * debug-helpers.c (mono_type_get_desc): Harden the code that
6753         deals with VAR and MVAR.
6754
6755 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
6758         part of #498692.
6759
6760 2009-04-23 Tom Hindle <tom_hindle@sil.org>
6761
6762         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
6763         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
6764
6765 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
6766
6767         * security-core-clr.c: Avoid redundant checks for platform code, 
6768         e.g. check for method and for class (very common) and check
6769         for class and outer class (less common)...
6770
6771 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
6772
6773         * reflection.c: Avoid returning random cattrs for synthetic methods.
6774         Fixes #498545.
6775
6776 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
6777
6778         * assembly.c: assemblies in the GAC should never be shadow-copied.
6779
6780 2009-04-26  Mark Probst  <mark.probst@gmail.com>
6781
6782         * domain.c, domain-internals.h: Disable
6783         track_resurrection_{objects,handles}_hash in MonoDomain if using
6784         SGen.
6785
6786 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6787
6788         * metadata-verify.c: Verify the param table.
6789
6790 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6791
6792         * metadata-verify.c (verify_typedef_table): Range check FieldList and
6793         MethodList.
6794
6795         * metadata-verify.c (verify_method_table): Proper check the ParamList
6796         field.
6797
6798 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6799
6800         * metadata-verify.c (verify_method_table): Check for runtime
6801         implemented functions such as delegate .ctors. Remove spurious
6802         printf.
6803         
6804 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6805
6806         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
6807
6808 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6809
6810         Don't allocate MonoGenericInfo for ownerless generic params.
6811         * class-internals.h (MonoGenericParam::info): Move field to ...
6812         (MonoGenericParamFull): ... this.  New struct.
6813         (MonoGenericContainer::type_params): Change type to
6814         MonoGenericParamFull.
6815         (MonoGenericParam, MonoGenericContainer): Update accessors.
6816         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
6817         'info' field for ownerless generic param.
6818         (mono_metadata_load_generic_params): Update to changes.
6819         * reflection.c (mono_reflection_create_generic_class): Likewise.
6820         (reflection_methodbuilder_to_mono_method): Likewise.
6821         (mono_reflection_initialize_generic_parameter): Likewise.
6822
6823 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6824
6825         Don't use MonoGenericParamInfo for ownerless generic params.
6826         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
6827         use ParamInfo class at all.
6828         (mono_class_from_generic_parameter): Use them.
6829         (make_generic_param_class): Fix a couple of instances where 'pinfo
6830         == NULL' wasn't handle.
6831
6832 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6833
6834         * class.c (make_generic_param_class): Carve out of ...
6835         (mono_class_from_generic_parameter): ... here.
6836
6837 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
6838
6839         Simplify mono_class_from_generic_parameter
6840         * class-internals.h (MonoGenericParamInfo::token): New field.
6841         * metadata.c (mono_metadata_load_generic_params): Initialize it
6842         from metadata.
6843         * class.c (mono_class_from_generic_parameter): Use it instead of
6844         searching through metadata.
6845
6846 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6847
6848         * metadata-verify.c: Add verification of the method table.
6849
6850 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6851
6852         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
6853         Delegate::Invoke optimization.
6854
6855 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6856
6857         * appdomain.c (mono_domain_create_appdomain_internal): Free the
6858         string returned by get_shadow_assembly_location_base.
6859
6860         * appdomain.c (get_shadow_assembly_location_base): Add a comment
6861         about caller's ownership.
6862
6863 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6864
6865         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
6866         reflection memory on domain unload.
6867
6868         * domain.c (mono_domain_free): Don't free refobject_hash, let the
6869         reflection cleanup code do it.
6870
6871         * domain-internals.h: Add mono_reflection_cleanup_domain.
6872
6873         This fixes a memory leak for managed mirrors of reflection objects
6874         on domain unload. 
6875
6876 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * metadata-verify.c: Implement more verification of the field table.
6879
6880 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
6881
6882         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
6883         doesn't try to parse the input assembly, which can be broken.
6884
6885 2009-04-23  Mark Probst  <mark.probst@gmail.com>
6886
6887         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
6888         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
6889         by using the lowest bit in the link to store whether the link is
6890         tracked.  Move the track_resurrection hashes into boehm-gc.c.
6891
6892 2009-04-22  Miguel de Icaza  <miguel@novell.com>
6893
6894         * Makefile.am: Split the console support in platform specific code
6895         and put together a framework for making this easy in the future so
6896         that we can start splitting code instead of having a mess of PLATFORM_WIN32
6897
6898 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6899
6900         * pedump.c: Fix a warning.
6901
6902 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6903
6904         * verify.c (mono_delegate_type_equal): Compare valuetypes using
6905         mono_class_from_mono_type to avoid bad interactions with the dual representation
6906         of the generic type definition.
6907
6908 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
6911         get the MonoClass for the call context type as it might be a generic
6912         instance.
6913
6914         Fixes #491483.
6915
6916 2009-04-21  Mark Probst  <mark.probst@gmail.com>
6917
6918         * object-internals.h: The Thread object has no execution_context
6919         member anymore.
6920
6921         * threads.c, threadpool.c, threads-types.h: Accessor functions for
6922         the execution context.
6923
6924         * appdomain.c: Bump corlib version.
6925
6926 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6927
6928         * verify.c (do_newobj): Improve error message.
6929
6930 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6931
6932         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
6933         is nested in the filter block.
6934
6935         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
6936         block is not fully nested.
6937
6938         Fixes #495656.
6939
6940 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6941
6942         * verify.c (verify_type_compatibility_full): Compare MonoClass and
6943         not MonoType to check for equality of valuetypes as the generic type
6944         definition allows for two different encodings: the generic type definition
6945         class or a generic instance over the GTD arguments.
6946
6947         Fixes #496175.
6948
6949 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6950
6951         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
6952
6953         * verify.c (do_initobj): Improve error message.
6954
6955 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
6956
6957         * metadata-verify.c: Enable pe verification as the issue with #496453
6958         is that the authenticode data directory have a different unspecified
6959         format. Ignore it for now.
6960
6961         * pedump.c: Run the metadata verifier together with the IL verifier.
6962
6963         Fixes ##496453.
6964
6965 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6966
6967         * metadata-verify.c: Temporarily disable pe verification due to #496453.
6968
6969 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6970
6971         * class.c (can_access_type): Check visibility against
6972         the element type for pointers and arrays.
6973
6974         Fixes #496150.
6975
6976 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6977
6978         * metadata-verify.c: Fix cli and table verification to use information
6979         from the MonoImage. A lot of duplicated code got killed.
6980
6981 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
6982
6983
6984         This patch starts to integrate the metadata verifier with the runtime code.
6985
6986         This patch causes major regression in functionality for the metadata verifier
6987         as cli and table verification are disabled since they require to be ported to
6988         use MonoImage information.
6989
6990         * image.c (do_mono_image_load): Split the code in this function
6991         into mono_image_load_pe_data and mono_image_load_cli_data.
6992         Add     care_about_pecoff parameter to not load pecoff data.
6993         Call into the metadata verifier for pecoff and cli verification.
6994
6995         * image.c (mono_image_open_raw): New function that doesn't perform
6996         any parsing of the image contents.
6997         
6998         The reason for the 3 new functions is to give pedump better control
6999         into the interaction with the verifier.
7000
7001         * metadata-internals.h: Add new functions from image.c as part of the
7002         internal mono API.
7003
7004         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
7005         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
7006         to make those functions work together with the runtime.
7007
7008         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
7009         true if the image needs to be verified.
7010
7011         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
7012
7013         * pedump.c: Use new metadata verifier API.
7014
7015 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
7016
7017         * object.c (mono_install_vtable_trampoline): Make this receive a
7018         trampoline creation function instead of trampoline, allowing the JIT
7019         to use a different trampoline for each vtable.
7020
7021 2009-04-18  Mark Probst  <mark.probst@gmail.com>
7022
7023         * object.c (mono_raise_exception): Don't reset the thread abort
7024         exception state here.
7025
7026 2009-04-18  Mark Probst  <mark.probst@gmail.com>
7027
7028         * icall-def.h: New icall for getting the thread abort exception
7029         state for a thread.
7030
7031         * object.c, thread.c, object-internals.h: A thread's abort
7032         exception state is now a GC handle.  To get the object it stands
7033         for, we must move it into the current app domain, if it's
7034         different than the one where it originated from.
7035
7036         * appdomain.c: Bump corlib version.
7037
7038         * domain.c, domain-internals.h: New function for setting the
7039         domain and migrate the thread abort exception or not.
7040
7041 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7042
7043         * metadata-verify.c: Add initial verification of the
7044         field table.
7045
7046 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7047
7048         * metadata-verify.c: Add a macro to conditionally enable
7049         dumping of verification information. Add  make_coded_token
7050         and search_sorted_table to enable search sorted tables
7051         by a given coded token.
7052
7053 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7054
7055         * metadata-verify.c: Add array mapping from table index
7056         to description offset. Add get_col_offset and get_col_size
7057         functions.
7058
7059 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7060
7061         * metadata-verify.c: Add remaining table descriptions offsets.
7062         Add remaining coded index descriptions.
7063
7064 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7065
7066         * metadata-verify.c: Fixed constant table description.
7067         Fixed calculation of HasCustomAttribute coded index size.
7068         Fixed calculation of size for many table indexes. 
7069
7070 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7071
7072         * pedump.c (dump_metadata): Dump table offset instead
7073         of useless pointer in memory.
7074
7075 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
7076
7077         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
7078
7079 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7080
7081         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
7082         a missing of for interface types.
7083
7084 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7085
7086         * metadata-verify.c (verify_pe_optional_header): Add comment of why
7087         the code is commented.
7088
7089         * metadata-verify.c (verify_resources_table): Remove spurious printf
7090         and don't fail if there are unmanaged resources. Gmcs generates a useless
7091         one     for all assemblies - I bet it's some MS compatibility junk.
7092
7093 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7094
7095         * metadata-verify.c (verify_typedef_table): Verify the extends field.
7096
7097         * metadata-verify.c (mono_image_verify): Add a is_corlib.
7098
7099         * verify-internals.h: Same.
7100
7101         * pedump.c: Fix for mono_image_verify new signature.
7102
7103 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7104
7105         * metadata-verify.c (verify_typedef_table): Verify for some invalid
7106         flags combinations.
7107
7108 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7109
7110         * metadata-verify.c (verify_module_table): Ignore the generation field.
7111
7112 2009-04-15  Martin Baulig  <martin@ximian.com>
7113
7114         * debug-mono-symfile.c
7115         (mono_debug_symfile_lookup_location): Don't print a warning for
7116         unknown extended opcodes if they're within 0x40 and 0x7f.
7117
7118 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
7119
7120         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
7121         invoke signatures returning an enum. Fixes #494847.
7122
7123 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7124
7125         * metadata-verify.c: Initial code to verify the typedef table.
7126
7127 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7128
7129         * verify.c (mono_method_verify): Don't fail if an unconditional branch
7130         with non empty stack happens before the beginning of a try block.
7131
7132         Fixes #494812.
7133
7134 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7135
7136         * metadata-verify.c: Verify typename and typenamespace fields of
7137         the typeref table.
7138
7139 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7140
7141         * metadata-verify.c: Initial code to verify the typeref table.
7142
7143 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
7144
7145         * verify.c (verify_delegate_compatibility): Fix error message.
7146
7147 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
7148
7149         * security-core-clr.c: Fix typo
7150
7151 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
7154         a MonoGHashTable to keep its values alive.
7155         (emit_marshal_boolean): Fix a warning.
7156
7157 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7158
7159         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
7160         not have any interface configured for IPv4/IPv6.
7161
7162 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
7163
7164         * assembly.c: fix typo in error message.
7165
7166 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
7169         allocating the location holding the this argument to prevent
7170         'too many root sets' errors.
7171
7172         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
7173         to mark fields as special static.
7174         (mono_field_static_get_value): Handle special static fields.
7175         (mono_field_static_set_value): Ditto.
7176
7177         * class-internals.h (struct _MonoClassField): Document this.
7178
7179 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7180
7181         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
7182           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
7183           case.  This will handle when managed code returns null to native code.
7184
7185         Code is contributed under MIT/X11 license.
7186
7187 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7188
7189         * object.c (build_imt_slots): Changing a free to a g_free to match
7190           the g_malloc0 in add_imt_builder_entry that allocated this memory.
7191
7192         Code is contributed under MIT/X11 license.
7193
7194 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
7195
7196         * marshal.c (emit_marshal_boolean): Adding code to ensure that
7197           the correct TRUE value is passed through the marshaling layer.
7198
7199         Code is contributed under MIT/X11 license.
7200
7201 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
7204         correctly. Fixes #492330.
7205         
7206         * marshal.c: Fix the embedding of object pointers into JITted code in
7207         the native-to-managed wrappers by allocating some GC tracked memory, and
7208         embedding the address of that.
7209
7210 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
7213         pointers into the vtable.
7214
7215 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7216
7217         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
7218
7219         * verify.c (verify_ldftn_delegate): Improve error message.
7220
7221 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7222
7223         * reflection.c (my_mono_class_from_mono_type): Remove.
7224
7225 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
7226
7227         Prepare to reduce memory usage of owner-less generic parameters (1/n)
7228         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
7229         and constraints fields into ...
7230         (MonoGenericParamInfo): ... this.
7231         (mono_generic_param_info, mono_generic_container_get_param_info):
7232         New accessors.
7233         * class.c, debug-helpers.c, icall.c: Update to changes.
7234         * metadata.c, reflection.c, verify.c: Likewise.
7235
7236 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
7237
7238         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
7239
7240         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
7241         
7242         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
7243         booleans with sbytes.
7244
7245 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7246
7247         * class.c (can_access_instantiation): Verify accesibility of element types
7248         for arrays and pointers.
7249
7250         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
7251
7252         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
7253
7254         Fixes #493068.
7255
7256 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7257
7258         * verify.c (do_invoke_method): Improve error messages.
7259
7260 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
7261
7262         * verify.c:  Fixing the MSVC build.
7263
7264         Code is contributed under MIT/X11 license.
7265
7266 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
7267
7268         * security-core-clr.c: Simplify get_reflection_caller not to call
7269         mono_method_get_last_managed (another stack walk) and adjust the
7270         callers to handle a (should not happen) NULL return value.
7271
7272 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7273
7274         Add accessors to some MonoGenericParam fields
7275         * class-internals.h (mono_generic_param_owner): New accessor.
7276         (mono_generic_param_num): Likewise.
7277         (mono_type_get_generic_param_owner): New helper.
7278         (mono_type_get_generic_param_num): New helper.
7279         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
7280
7281 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7282
7283         * class-internals.h (mono_generic_container_get_param): New wrapper.
7284         * class.c, icall.c, metadata.c, verify.c: Use it.
7285
7286 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
7287
7288         Fix gtest-252.cs
7289         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
7290         the standard case/loop.  In particular, don't complain about
7291         references to generic type definitions.
7292
7293 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * debug-helpers.c (dis_one): Decode string arguments.
7296
7297 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7298
7299         * pedump.c (dump_verify_info): Dump type name correctly.
7300
7301 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
7304         are larger than code size.
7305
7306         This can happen in valid code if the try/catch block is not followed by any instruction
7307         and do a backward branch on the leave instruction.
7308
7309         Fixes #492494.
7310
7311 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
7312
7313         * security-core-clr.c: Fix typo while comparing second method names
7314         in can_avoid_corlib_reflection_delegate_optimization
7315
7316 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7317
7318         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
7319
7320         Fixes #487738.
7321
7322 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
7323
7324         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
7325         a MVAR using a class context.
7326
7327         Fixes #490335.
7328
7329 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
7332
7333         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
7334
7335         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
7336         functions supplied by the JIT for the SGEN GC.
7337
7338         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
7339         
7340 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7341
7342         monitor.c (mono_monitor_try_enter_internal):
7343         Added calls to profile monitor contentions.
7344         Also duplicated a small piece of code (the "get the monitor" logic)
7345         from the fast path to the slow path, and changed the relevant goto
7346         statements, so that monitor acquisition events can be emitted from the
7347         slow path (this is by Paolo Molaro).
7348
7349 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
7350
7351         * profiler.c, profiler.h, profiler-private.h:
7352         Added support for profiling monitor contentions.
7353
7354 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7355
7356         * metadata-verify.c: Verify the modules table.
7357
7358 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
7359
7360         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
7361         using the context of the method been verifier and not of the method been called.
7362
7363         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
7364         safely inflate generic types. 
7365
7366 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
7367
7368         * security-core-clr.c: Change the strategy for checking the 
7369         "reflection using delegates optimization" to avoid unneeded 
7370         attributes in multiple class libraries.
7371
7372 2009-04-02  Mark Probst  <mark.probst@gmail.com>
7373
7374         * sgen-gc.c: Remove object element in the disappearing link struct
7375         by storing the object pointer in the link.
7376
7377 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7378
7379         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
7380
7381 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7382
7383         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
7384
7385         * verify.c (mono_method_verify): Do proper bounds checking of exception
7386         clause ranges.
7387
7388 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * loader.c (mono_field_from_token): Don't crash if the field parent could
7391         not be decoded.
7392
7393 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7394
7395         * sgen-gc.c: Execute critical finalizers after ordinary
7396         finalizers.
7397
7398         * class-internals.h, domain.c: Add CriticalFinalizerObject to
7399         mono_defaults.
7400
7401 2009-03-31 Jb Evain <jbevain@novell.com>
7402
7403         * verify.c (do_ldstr): don't check if a string is in the user strings
7404         heap if the current image is dynamic.
7405
7406 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7407
7408         * sgen-gc.c: Wait until the last finalizer has executed when
7409         returning from WaitForPendingFinalizers.
7410
7411 2009-03-31  Martin Baulig  <martin@ximian.com>
7412
7413         * mono-debug-debugger.h (MonoDebuggerEvent): Add
7414         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
7415         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
7416         (mono_debugger_event_create_appdomain): New function.
7417         (mono_debugger_event_unload_appdomain): New function.
7418
7419         * appdomain.c (mono_domain_create_appdomain_internal): Call
7420         mono_debugger_event_create_appdomain().
7421
7422 2009-03-31  Martin Baulig  <martin@ximian.com>
7423
7424         * mono-debug-debugger.c
7425         (mono_debugger_register_class_init_callback): Also register the
7426         class init callback if the class is already initialized to make
7427         things work with shadow copied assemblies.
7428
7429 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
7430
7431         * security-core-clr.c
7432         (mono_security_core_clr_ensure_reflection_access_field): Let 
7433         critical code access the field (just like we do for methods). Use
7434         check_field_access helper.
7435         (mono_security_core_clr_ensure_reflection_access_method): Use 
7436         check_field_access helper.
7437
7438 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7439
7440         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
7441         call the run-finalize function directly.
7442
7443         * gc.c, gc-internal.h: Make run_finalize() non-static.
7444
7445 2009-03-31  Mark Probst  <mark.probst@gmail.com>
7446
7447         * sgen-gc.c: Use a separate struct for disappearing links.
7448
7449 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7450
7451         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
7452         * MaxIOVectorLength enabled, just ignore them.
7453         Fixes bug #349688.
7454
7455 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
7456
7457         * metadata-verify.c: Fix eglib build.
7458
7459 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * threads-types.h: Fix the win32 build.
7462
7463 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7464
7465         * class.c: move coreclr inheritance/override checks to 
7466         security-core.clr.c
7467         * security-core.clr.c|h: add code from class.c with additional
7468         documentation. Fix override check when the method is not critical.
7469
7470 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
7471
7472         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
7473         (match_class): Ditto.
7474
7475 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
7478
7479         * metadata-verify.c: Implement table layout row size calculation. Verify
7480         the total size of the tables.
7481
7482 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
7483
7484         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
7485
7486 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7487
7488         * appdomain.c:
7489         * console-io.[ch]: added new mono_console_init() to make sure that
7490         file descriptors 0, 1 and 2 are opened.
7491         Bug #489019 fixed.
7492
7493 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
7494
7495         * appdomain.h: Export a new callback type and a new function to
7496         set this callback. This allow a mono host to provide it's own
7497         definition for "platform code".
7498         * metadata-internals.h: Add a core_clr_platform_code flag on 
7499         _MonoImage to (cache and) know if it is representing platform 
7500         code.
7501         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
7502         on platform code images.
7503         * security-core-clr.c|h 
7504         (mono_security_set_core_clr_platform_callback): Allow the host
7505         to provide it's own platform check definition.
7506         (mono_security_core_clr_determine_platform_image): Detect if an 
7507         image is platform code (using the specified callback).
7508         (mono_security_core_clr_is_platform_image): Return cached value 
7509         for platform code.
7510
7511 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * threads.c (mono_create_thread): New helper function to wrap CreateThread
7514         which has different parameter types for the 'tid' argument in windows and
7515         the io-layer.
7516
7517         * appdomain.c attach.c threads.c: Use the new helper.
7518
7519 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7520
7521         * metadata-verify.c: Verify valid table bits.
7522
7523 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
7524
7525         * metadata-verify.c (verify_metadata_header): Store size in the size field.
7526
7527         * metadata-verify.c: Add initial table schema verification.
7528
7529 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7530
7531         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
7532         obtain the refclass argument needed by mono_param_get_objects (). Fixes
7533         #488383.
7534
7535         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
7536
7537         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
7538
7539 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
7540
7541         * security-core-clr.c: Add/update documentation
7542
7543 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * marshal.c (emit_marshal_object): Generate code to throw an exception
7546         instead of throwing it. Fixes #488670.
7547
7548 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
7549
7550         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
7551         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
7552         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
7553         and add a call to mono_security_core_clr_ensure_delegate_creation
7554         to do the extra checks required by CoreCLR.
7555         * security-core-clr.c|h: Add function to check delegate creation,
7556         both in the binding and accessibility, under CoreCLR.
7557
7558 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
7559
7560         * reflection.c (mono_reflection_create_dynamic_method): when 
7561         coreclr is enabled make sure that every resolved object are
7562         checked (e.g. field and method access).
7563         * security-core-clr.c|h: Add function to check objects resolved
7564         when a dynamic method is created.
7565
7566 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7567
7568         * metadata-verify.c: Cache directory rva translations.
7569
7570         * metadata-verify.c: Add cli-header and streams verification.
7571
7572 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7573
7574         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
7575         the wrong offset (8 instead of 6).
7576
7577 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
7578
7579         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
7580         methods, return the native function address itself. Fixes
7581         #487758.
7582
7583 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7584
7585         * console-io.c: some of the values for control characters might not be
7586         present.
7587
7588 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
7589
7590         * exception.c|h: Add helpers to create [Field|Method]AccessException
7591         * icall.c: Add required coreclr check calls for field reflection.
7592         Move the existing (method) check logic into security-core-clr.c
7593         * security-core-clr.c: Add functions to check if the access of a
7594         field or method is allowed when reflecting under coreclr. This is
7595         mostly done using a stack walk to find the "real" caller: i.e. the
7596         code that is calling the reflection
7597
7598 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * gc-internal.h: Change location of gc_wrapper.h
7601
7602 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
7603
7604         * class.c: Simplification to coreclr checks for overrides that
7605         makes it easier to set breakpoints.
7606
7607 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
7608
7609         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
7610         mono_security_core_clr_method_level): Avoid potential 
7611         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
7612         user/application code) and make it easier to set breakpoints
7613
7614 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7615
7616         * metadata-verify.c: Reject cli header tables that mono don't handle.
7617
7618 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7619
7620         * pedump.c: Fix CLI header dumping.
7621
7622 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7623
7624         * metadata-verify.c: More CLI header verification.
7625
7626 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
7627
7628         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
7629
7630 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7631
7632         * metadata-verify.c: Initial verification of the CLI header.
7633
7634 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
7635
7636         * metadata-verify.c (verify_resources_table): Fix verification of zero
7637         sized resource section and id entries count.
7638
7639 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
7640
7641         * icall.c: Handle user types in many Type icalls. Fixes #486303.
7642
7643 2009-03-17  Jb Evain  <jbevain@novell.com>
7644
7645         * profiler.c: call mono_gc_base_init from mono_profiler_load.
7646
7647 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
7648
7649         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
7650         (mono_gc_make_descr_for_array): Ditto.
7651
7652 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
7653
7654         * verify.c (mono_verifier_is_class_full_trust): Add support for
7655         CoreCLR security mode where trusted assemblies are defined as
7656         "platform code".
7657
7658 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7659
7660         * metadata-verify.c: Add minimal PECOFF resource verification.
7661
7662 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7663
7664         * metadata-verify.c: Be less restrictive with some coff fields.
7665
7666 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
7667
7668         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
7669         params as boxed values on stack. Fixes #485706.
7670
7671 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7672
7673         * console-io.c: the termios values may vary in different flavors of unix.
7674
7675 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
7676
7677         * console-io.[ch]: return the entire set of control characters when
7678         initializing the terminal.
7679         * appdomain.c: bump corlib version.
7680
7681 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
7682
7683         * mono-perfcounters.c: added support for in-process custom
7684         performance counters.
7685
7686 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7687
7688         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
7689
7690 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7691
7692         * metadata-verify.c: Verify the data pointed by the import table. 
7693
7694 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
7695
7696         * metadata-verify.c (load_data_directories): Store data
7697         directory contents.
7698
7699         * metadata-verify.c: Verify the import table. 
7700
7701 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7702
7703         * metadata-verify.c: Verify data directories.
7704
7705 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7706
7707         * metadata-verify.c: Check section header flags.
7708
7709 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
7710
7711         * appdomain.c: if the assembly name is a shadow-copied file, return
7712         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
7713         in mono_make_shadow_copy.
7714         * icall.c: if the assembly name is a shadow-copied file, replace it
7715         with the original assembly path.
7716
7717         Bug #484244 fixed. NUnit tests for corlib can be run without
7718         --noshadow now.
7719
7720 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
7721
7722         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
7723         entries when the table is reallocated.
7724
7725         * icall.c: Allocate the memory used by the mono_ptr_array macros using
7726         mono_gc_alloc_fixed () since it contains GC refs.
7727
7728 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * reflection.c (ensure_complete_type): New helper function to call
7731         type resolve handlers for unfinished dynamic types.
7732         (resolve_object): Call it for MonoClassFields. Fixes #483852.
7733
7734 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
7735
7736         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
7737         #483247.
7738
7739 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
7740
7741         * appdomain.c (get_shadow_assembly_location): Fix memleak.
7742
7743 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
7744
7745         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
7746         between GCHandles of type WeakTrackResurrection and the objects they
7747         point to.
7748
7749         * gc.c: Partly implement the sematics of GCHandles of type 
7750         WeakTrackResurrection: these handles should only be cleared after the
7751         finalizer of the object they are pointing to has ran.
7752
7753 2009-03-06  Mark Probst  <mark.probst@gmail.com>
7754
7755         * icall.c: Partially revert r126631 because using the jump
7756         trampolines for generic shared methods makes it superfluous.
7757
7758 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * threads.c (handle_store): Create the 'threads' hash table with the proper
7761         MONO_HASH_VALUE_GC type.
7762
7763 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
7766         FIRST_GC_TRACKED.
7767
7768         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
7769         and LAST_GC_TRACKED as a GC root.
7770
7771         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
7772
7773         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
7774         the static data even if it consists of 1 reference.
7775
7776         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
7777         if there is a GC descriptor.
7778
7779         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
7780         instead of through the GC since they contain no object references.
7781
7782 2009-03-05  Mark Probst  <mark.probst@gmail.com>
7783
7784         * generic-sharing.c (instantiate_other_info): Always return a jump
7785         trampoline for method code.
7786
7787 2009-03-05  Marek Habersack  <mhabersack@novell.com>
7788
7789         * culture-info-tables.h: generated to include the en-tt culture.
7790
7791 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
7794         capture the thread context.
7795
7796         * object.c (mono_async_result_new): Cache the invoke wrappers to
7797         ExecutionContext::Capture.
7798
7799 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * marshal.h: Add a prototype for what mono_compile_method returns
7802         for invoke wrappers.
7803
7804         * gc.c: Use the new prototype declaration.
7805
7806 2009-03-04  Geoff Norton  <gnorton@novell.com>
7807
7808         * boehm-gc.c: Add some MONO_LOG tracing for the GC
7809         * gc-internal.h:
7810         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
7811
7812 2009-03-04  Martin Baulig  <martin@ximian.com>
7813
7814         * mono-debug.h
7815         (mono_debugger_runtime_invoke): Removed.
7816
7817         * mono-debug-debugger.c
7818         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
7819
7820 2009-03-02  Martin Baulig  <martin@ximian.com>
7821
7822         * mono-debug.h
7823         (mono_debugger_unhandled_exception): Removed.
7824         (mono_debugger_handle_exception): Removed.
7825         (mono_debugger_throw_exception): Removed.
7826
7827         * mono-debug.c
7828         (mono_debug_debugger_version): Bump to 5.
7829
7830         * mono-debug-debugger.c: Moved the exception handling code to
7831         ../mini/debug-mini.c
7832
7833 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
7836         finalize_objects_hash.
7837
7838         * gc.c: Use the separate lock to access the finalize_objects_hash field.
7839         
7840         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
7841         field.
7842
7843         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
7844         cache.
7845
7846         * image.c (mono_image_close): Free it.
7847         
7848         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
7849         allowing a creation of a wrapper which invokes its method using a CALLVIRT
7850         on the this argument.
7851
7852         * gc.c (run_finalize): Optimize the calling of the finalizers.
7853
7854 2009-03-03  Martin Baulig  <martin@ximian.com>
7855
7856         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
7857         of the `MonoGenericInst' changes.
7858
7859 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7860
7861         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
7862         mono_array_class_get_cached to reduce locking contention. Extract
7863         a domain var.
7864
7865         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
7866         intermediary managed arrays. Use caching version of mono_array_new
7867         to allocate the result array.
7868
7869         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
7870
7871         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
7872
7873         * locales.c (create_names_array_idx):  Use mono_array_new_cached
7874         to reduce locking contention.
7875
7876 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
7877                 
7878         * object.c (mono_method_add_generic_virtual_invocation): Put back the
7879         thunk builder code for the non-interface case.
7880
7881 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * object.c (get_generic_virtual_entries): New helper function to collect
7884         the virtual generic method instances which need to be added to an IMT
7885         thunk.
7886         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
7887         Instead of creating a new IMT thunk, reset the vtable slot to the
7888         trampoline, the thunk will be created the next time the trampoline is called.
7889         (build_imt_slots): Add support for virtual generic methods in interfaces by
7890         adding to the IMT thunk all the methods registered using 
7891         mono_method_add_generic_virtual_invocation ().
7892
7893         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
7894         (struct _MonoIMTCheckItem): Ditto.
7895
7896         * object.c (mono_method_add_generic_virtual_invocation): Take a
7897         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
7898         the IMT thunk to include all items.
7899         
7900         * object.c (mono_class_create_runtime_vtable): Add a missing
7901         mono_loader_unlock ().
7902
7903 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7904
7905         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7906
7907         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
7908
7909 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7910
7911         * object-internals.h: Rename _MonoReflectionEvent to
7912         MonoReflectionMonoEvent so it reflects the right managed type.
7913         Add a MonoReflectionEvent that correctly represents System.EventInfo.
7914
7915         * icall.c:
7916         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
7917         type.
7918
7919 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
7920
7921         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
7922         intermediary managed arrays. Use caching version of mono_array_new
7923         to allocate the result array.
7924
7925 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7926
7927         * reflection.c: Use cached version of mono_array_new alongside
7928         the mono_reflection_get_custom_attrs_by_type call path.
7929
7930 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7931
7932         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
7933         intermediary managed arrays. Use caching version of mono_array_new
7934         to allocate the result array.
7935
7936         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
7937
7938 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * icall.c: Add small implementation of a growable stack bound array.
7941
7942         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
7943
7944         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
7945         intermediary managed arrays. Use caching version of mono_array_new
7946         to allocate the result array.
7947
7948 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7949
7950         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
7951         helps Enum::CompareTo to be implemented without reboxing all enums
7952         to their underlying type.
7953 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
7956         since it acquires a global lock leading to scalability problems.
7957
7958         * profiler.c: Make the stat profiler work with multiple appdomains, this
7959         currently only works when no appdomains are unloaded.
7960
7961 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7962
7963         * appdomain.c: make the check to avoid copying when the assembly is
7964         already shadow copied actually work.
7965
7966 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
7967
7968         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7969
7970         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
7971         changes to the managed side.
7972
7973 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
7974
7975         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
7976         classes + a separate lock for it, as it is used frequently at runtime, not
7977         just during metadata loading/JIT compilation.
7978
7979         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
7980         for szarrays.
7981         
7982         * object-internals.h (mono_class_from_name_cached): New macro to cache
7983         the results of the lookup locally without having to declare a static
7984         variable to hold it.
7985         (mono_class_get_field_from_name_cached): Ditto.
7986         (mono_array_class_get_cached): Ditto.
7987
7988         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
7989         the new macros.
7990         
7991         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
7992         slower search in metadata.
7993
7994         * pedump.c: Fix a warning.
7995
7996 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
7997
7998         * reflection.c (encode_locals): Add checks for user types.
7999         (method_encode_clauses): Ditto.
8000         (method_encode_code): Ditto.
8001         (mono_image_create_token): Ditto.
8002
8003         * object-internals.h: Change the type of more fields from MonoReflectionType*
8004         to MonoObject*.
8005
8006 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
8009         the a thread does not suspend within 100ms.
8010
8011         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
8012         in addition to StopRequested as well.
8013
8014         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
8015
8016         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
8017         search the method_hash before inserting a new entry, to avoid crashes when
8018         the same method is inserted multiple times, causing the old 
8019         MonoDebugMethodInfo structure to be freed by the value dtor function.
8020
8021 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
8022
8023         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
8024         SO_EXLUSIVEADDRUSE where available.
8025
8026 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
8029         runtime invoke wrappers, this time it is string ctor wrappers, which
8030         pass a dummy string as 'this' instead of their obj argument. Fixes
8031         #478473.
8032
8033 2009-02-21  Jb Evain  <jbevain@novell.com>
8034
8035         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
8036         only get create_culture once.
8037
8038 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
8039
8040         * reflection.c (mono_reflection_setup_internal_class): Move the user type
8041         check before the locking.
8042         
8043         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
8044         (mono_reflection_create_runtime_class): Ditto.
8045         (mono_reflection_sighelper_get_signature_local): Ditto.
8046         (mono_reflection_sighelper_get_signature_field): Ditto.
8047
8048         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
8049         is a System.MonoType object or similar.
8050         (monotype_cast): New helper function to cast a MonoObject to a 
8051         MonoReflectionType object.
8052
8053         * object-internals.h: Change MonoReflectionType* members in structures to
8054         MonoObject* members to force the usage of the monotype_cast () function.
8055
8056         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
8057         structures/arrays. This causes us to assert instead of crashing when 
8058         instances of user defined subclasses of System.Type are encountered.
8059
8060 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8061
8062         * cil-coff.h:
8063         * icall-def.h:
8064         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
8065         win32 resource loaded from a PE file.
8066
8067         * image.c: fix mono_image_lookup_resource.
8068
8069 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
8070
8071         * icall-def.h:
8072         * threads-types.h:
8073         * threads.c: added internal call for WaitHandle.SignalAndWait.
8074
8075 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
8076
8077         * cominterop.c : Adding cominterop_type_from_handle and 
8078           registering it as an icall.  Replacing all references
8079           to type_from_handle.
8080
8081         Code is contributed under MIT/X11 license.
8082
8083 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8084
8085         * Makefile.am: Add lock-tracer.h and lock-trace.c.
8086
8087         * appdomain.c: Call the tracer init function.
8088
8089         * domain-internals.h: Enable the tracer for the domain locks.
8090
8091         * image.c: Enable the tracer for image locks.
8092
8093         * loader.c: Enable the trace for the loader lock.
8094
8095         * lock-tracer.h:
8096         * lock-tracer.c: Initial implementation of the lock trace utility.
8097         The tracer requires a compile time define to be enabled and a env var
8098         to be enabled at runtime.
8099
8100 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8101
8102         * domain.c (mono_domain_code_foreach): Improve documentation.
8103
8104 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
8105
8106         * appdomain.c:
8107         * generic-sharing.c:
8108         * object.c:
8109         * reflection.c:  Adjust locking order to the new semantics where the loader lock
8110         comes first.
8111
8112 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
8113
8114         * domain.c: Add mono_domain_code_* functions that perform locking
8115         around the domain codeman.
8116
8117         * domain-internals.h: Export those functions.
8118
8119         * object.c: Use new functions instead of acquiring the domain lock.
8120
8121 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
8124         delegate. Fixes #477396.
8125
8126 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8127
8128         * reflection.c (create_custom_attr): Get rid of alloca.
8129
8130 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
8131
8132         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
8133           Adding exception handling for all CCW calls.
8134
8135         Code is contributed under MIT/X11 license.
8136
8137 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
8138
8139         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
8140
8141         * marshal.c (emit_marshal_boolean): Add null checks to the new 
8142         native->managed marshalling code. Fixes #476247.
8143
8144 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8145
8146         * class.c (mono_class_get_vtable_entry): Move the addition of
8147         static rgctx invoke wrappers for vtable methods here, this simplifies
8148         a lot of code and causes fewer rgctx wrappers to be created.
8149
8150         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
8151         name of the statistics to begin with an uppercase.
8152
8153 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8154
8155         * reflection.c: Revert previous change as it breaks the build.
8156         
8157 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8158
8159         * verify.c: Properly handle SZARRAY element type.
8160
8161         Fixes #474271.
8162
8163 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
8164
8165         * reflection.c (mono_image_create_method_token): Correctly encode
8166         MethodDef MemberRefParent token.
8167
8168         Fixes #472845.
8169
8170 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * image.c (mono_image_close): Delete the critical section before
8173         freeing the memory holding it.
8174
8175 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8176
8177         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
8178         Fixes #476257.
8179
8180 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8181
8182         * pedump.c (main): Call mono_marshal_init so pedump
8183         doesn't crash.
8184
8185 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8186
8187         * loader.c (method_from_memberref): Properly fix #474271 and
8188         don't break the runtime bad.
8189
8190 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8191
8192         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
8193         (mono_domain_alloc0): Ditto.
8194
8195 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8196
8197         * loader.c (method_from_memberref): Don't abort if the array
8198         method is not found. A regular loader failure is more informative
8199         and correct.
8200
8201         Fixes #474271.
8202
8203 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
8204
8205         *loader.c: Guard MonoImage::method_cache/methodref_cache
8206         using the image lock instead of the loader lock.
8207
8208         * metadata.h: Add comments about which fields are protected by
8209         the image lock.
8210
8211 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
8214
8215         * generic-sharing.c (mono_method_construct_object_context): Remove the
8216         wrapper_type == NONE assert, it is not needed.
8217
8218 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * reflection.c (clear_cached_object): New helper function.
8221         (mono_method_clear_object): New function to clear the cached reflection
8222         objects for a dynamic method.
8223
8224         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
8225         Partly fixes # 463323.
8226         
8227 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8228
8229         * class.c:
8230         * loader.c:
8231         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
8232
8233 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
8236         take the image lock instead of the loader lock.
8237
8238         * metadata-internals.h: Export new functions.
8239
8240 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8241
8242         * domain.c (app_config_parse): Remove another use of stat that is
8243         not necessary as g_file_get_contents already does the presence
8244         check. 
8245
8246 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8247
8248         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
8249
8250         * marshal.c: Move the bstr handling code to cominterop.c.
8251
8252         * marshal.c: Remove some COM interop code missed previously.
8253
8254 2009-02-12  Miguel de Icaza  <miguel@novell.com>
8255
8256         More Paolo patches from the Wii port:
8257         
8258         * security.c: Remove ves_icall_System_Environment_get_UserName
8259         from here.
8260
8261         * icall.c: And put ves_icall_System_Environment_get_UserName
8262         here. 
8263
8264         * appdomain.c (mono_set_private_bin_path_from_config): Remove
8265         redundant call to stat that was only used to test for the file
8266         existence.   Patch from Paolo.
8267
8268         * gc.c (run_finalize): If COM is disabled, do not link in
8269         mono_marshal_free_ccw.
8270
8271         * generic-sharing.c: Use alloca.h here as well.
8272
8273 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
8274
8275         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
8276
8277 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
8278
8279         * cominterop.c cominterop.h: New files.
8280
8281         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
8282         function/typedefs which are needed by cominterop.c global.
8283
8284 2009-02-12  Mark Probst  <mark.probst@gmail.com>
8285
8286         * generic-sharing.c: Don't take the loader lock to guard image
8287         mempool allocs.
8288
8289 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8290
8291         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
8292         called without the loader lock which is required to guard MonoImage:tokens.
8293
8294 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8295
8296         * class.c:
8297         * metadata.c:
8298         * method-builder.c:
8299         * marshal.c:
8300         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
8301
8302 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8303
8304         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8305         Rework the code to use regular mono_image_alloc/0.
8306
8307         * loader.c: Rework the code to use regular mono_image_alloc/0.
8308
8309         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
8310
8311 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
8312
8313         * object-internals.h : Fixing a typo in the 
8314           MonoReflectionComVisibleAttribute struct.
8315
8316         * marshal.c (cominterop_com_visible): Check the implemented 
8317           interfaces for ComImport.
8318
8319         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
8320           assume that bools should be treated as VARIANTBOOLs.
8321
8322         * marshal.c (emit_marshal_boolean): Adding cases for 
8323           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
8324
8325         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
8326           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
8327
8328         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
8329           should be treated as VARIANTBOOLs.    
8330
8331         Code is contributed under MIT/X11 license.
8332
8333 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8334
8335         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
8336         allocation with the image lock.
8337
8338 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8339
8340         This patch is the last of a series to remove explicit reference of MonoImage::mempool
8341         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
8342
8343         * object.c: Add mono_string_to_utf8_image.
8344
8345         * object-internals.h: Export mono_string_to_utf8_image.
8346
8347         * reflection.c: Rework all explicit references to the the image mempool to go thought
8348         the mono_image_alloc set of functions.
8349
8350 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8351
8352         This patch is the third of a series to remove explicit reference of MonoImage::mempool
8353         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
8354         and generics-sharing.c.
8355
8356         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
8357         as first argument. Note that this function remains broken as it doesn't perform locking around the
8358         mempool allocation.
8359
8360         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
8361
8362         * image.c: Add g_slist_append_image.
8363
8364         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
8365         the supplied image for allocation. Move code into mono_metadata_field_info_full.
8366
8367         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
8368         Fix all related code to do the same.
8369
8370         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
8371
8372         * metadata-internals.h: Fix the signatures.
8373
8374 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
8375
8376         This patch is the second of a series to remove explicit reference of MonoImage::mempool
8377         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
8378         and similar to work using MonoImage.
8379
8380         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
8381         MonoMemPool.
8382
8383         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
8384
8385         * class.c (mono_metadata_signature_deep_dup): Same.
8386
8387         * class.c (inflate_generic_type): Same.
8388
8389         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
8390
8391         * metadata.c (mono_metadata_signature_dup_full): Same.
8392
8393         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
8394         mono_metadata_signature_dup_full.
8395
8396         * metadata.c (mono_metadata_type_dup): Same.
8397
8398         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
8399
8400         * reflection.c: Same.
8401
8402         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
8403
8404         * metadata-internals.h: Fix the signatures.
8405
8406         * class-internals.h: Same.
8407
8408 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8409
8410         This patch is the first of a series to remove explicit reference of MonoImage::mempool
8411         and use mono_image_alloc set of functions instead. 
8412
8413         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
8414         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
8415         of a MonoMemPool.
8416
8417         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
8418
8419         * class.c (g_list_prepend_mempool): Removed.
8420
8421         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
8422
8423         * image.c: Add g_list_prepend_image.
8424
8425         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
8426
8427         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
8428
8429
8430 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8431
8432         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
8433         mono_image_unlock.
8434
8435         * image.c (mono_image_init): Init the lock field.
8436  
8437         * image.c (mono_image_init): Cleanup the lock field.
8438
8439         * image.c: Add mono_image_(un)lock functions.
8440
8441 2009-02-11  Mark Probst  <mark.probst@gmail.com>
8442
8443         * class.c, class-internals.h: mono_method_get_context_general()
8444         combines the functionality of mono_method_get_context() and
8445         mini_method_get_context().
8446
8447         * generic-sharing.c, domain-internals.h:
8448         mono_method_construct_object_context() and
8449         mono_domain_lookup_shared_generic() moved from mini.
8450
8451         * icall.c (ves_icall_InternalInvoke): Handle the case where the
8452         method doesn't have the correct instantiation because it's shared
8453         generic code.  Fixes #473999.
8454
8455 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
8458
8459         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
8460         
8461 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
8462
8463         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
8464
8465         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
8466
8467         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
8468         and recheck the cache for dups after it.
8469
8470         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
8471
8472         Fixes one of the deadlocks found in #473150.
8473
8474 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
8475
8476         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
8477           For Win32, add additional break conditions for accept.
8478
8479         Code is contributed under MIT/X11 license.
8480
8481 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
8482
8483         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
8484         lazily initialize the native wrapper cache.
8485         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
8486         cache, since they are different from the normal wrappers.
8487
8488         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
8489
8490         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
8491         AOT compiled native wrappers.
8492
8493 2009-02-09  Geoff Norton  <gnorton@novell.com>
8494
8495         * appdomain.h:
8496         * security-core-clr.c: Allow enabling core-clr from the embedding
8497         API.
8498
8499 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8500
8501         * socket-io.c: when requesting all the local ips, if there are no
8502         interfaces up and running, MS returns 127.0.0.1.
8503
8504 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8505
8506         * mono-perfcounters-def.h: processor time is an inverse time.
8507         Fixes bug #468625.
8508
8509 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
8510
8511         * socket-io.c: an empty host name returns the list of local IPs.
8512         Fixes bug #386637 part 1/2.
8513
8514 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
8515
8516         * verify.c (mono_class_interface_implements_interface): Call
8517         mono_class_setup_interfaces ().
8518         (merge_stacks): Ditto.
8519
8520 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8521
8522         * class.c (mono_class_setup_interfaces): New function to lazily initalize
8523         klass->interfaces.
8524         (mono_generic_class_get_class): Don't initalize klass->interfaces.
8525         (mono_generic_class_get_class): Ditto.
8526
8527 2009-02-06  U-QUACK\miguel  <miguel@quack>
8528
8529         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
8530         they live in security.c
8531
8532         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
8533         another bit from Paolo's code.
8534
8535 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
8536
8537         * object.c (build_imt_slots): Add a small optimization to avoid inflating
8538         methods which will be discarded by add_imt_builder_entry ().
8539
8540         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
8541         need to be boxed.
8542
8543         * loader.c: Add a statistics for the size of the memberref signature cache.
8544         
8545         * loader.c (find_cached_memberref_sig): New helper function.
8546         (cache_memberref_sig): Ditto.
8547
8548         * loader.c: Cache the result of parsing memberref signatures, since otherwise
8549         they will be parsed again for every generic instantiation, leading to unbounded
8550         memory growth.
8551
8552 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8553
8554         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
8555         parameters of generic methods.
8556
8557         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
8558         after the original method is copied to the inflated method.
8559         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
8560
8561         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
8562         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
8563
8564         * class.c metadata.c: Update after the changes above.
8565
8566 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8567
8568         * metadata-verify.c: Simplified error handling and added
8569         section table validation.
8570
8571 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8572
8573         * class-internals.h (MonoClassExt): New structure containing rarely used
8574         fields of MonoClass.
8575         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
8576         through a new 'ext' field.
8577
8578         * class.c (mono_class_alloc_ext): New helper function to allocate 
8579         class->ext.
8580
8581         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
8582
8583 2009-02-05  Mark Probst  <mark.probst@gmail.com>
8584
8585         * object.c (mono_object_get_virtual_method): Properly inflate
8586         generic methods.  Fixes #472692.
8587
8588 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
8589
8590         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
8591         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
8592         for the parent type, the created type must be ready to be used on a generic
8593         instantiation.
8594         We fill this_arg/byval_arg if the parent is a generic instance to make sure
8595         we won't have duplicated entries in generic_inst_cache.
8596
8597         Fixes #469553.
8598
8599 2009-02-05  Miguel De Icaza  <miguel@novell.com>
8600
8601         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
8602         replace with plain BSD per the comments on the bug MONO77637.
8603
8604 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
8605
8606         * class.c (mono_class_get_generic_class): New accessor function.
8607         (mono_class_get_generic_container): Ditto.
8608
8609         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
8610         fields, similar to the ones in MonoMethod.
8611
8612         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
8613         (mono_class_create_from_typedef): Set klass->is_generic if needed.
8614
8615         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
8616         
8617         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
8618         the same information as element_class->byval_arg.
8619
8620         * class.c reflection.c: Remove references to class->byval_arg.
8621
8622         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
8623         klass->enum_basetype directly.
8624
8625         * verify.c metadata.c object.c icall.c reflection.c: Use 
8626         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
8627         directly.
8628
8629 2009-02-04  Miguel de Icaza  <miguel@novell.com>
8630
8631         * icall-def.h: Remove internal calls for sockets when
8632         DISABLE_SOCKET is defined, file system writing features when the
8633         OS only support reading and not writing data and Policy support if
8634         the Policy is disabled.
8635         
8636         * image.c (do_mono_image_open): Apply Paolo's patches for using
8637         mono_file_map_ APIs here.
8638
8639         * assembly.c: Add support for platforms to avoid prefix
8640         auto-detection. 
8641
8642 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
8643
8644         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
8645         warning.
8646
8647         * class.c (mono_class_inflate_generic_class): New helper function.
8648
8649         * class.c: Use mono_class_inflate_generic_class in a few places. Add
8650         statistics for inflated methods/classes.
8651
8652         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
8653
8654         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
8655         the call is made from Delegate.CreateDelegate () for the invoke method of
8656         a delegate.
8657
8658         * loader.c: Add a statistics for the memory occupied by inflated signatures.
8659
8660         * metadata.c (mono_metadata_signature_size): New helper function.
8661
8662         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
8663         generic instances.
8664
8665         * metadata.c (inflated_method_in_image): Avoid calling 
8666         mono_method_signature () if the method does not already have a signature.
8667
8668 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8669
8670         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
8671         valuetype is compatible with target type, check by inheritance as a
8672         VT is not really compatible with System.ValueType, for example.
8673
8674         * verify.c (do_invoke_method): Improve error message.
8675
8676         * verify.c (do_box_value): If boxing a nullable, use the type argument
8677         on stack instead.
8678
8679         * verify.c (do_newobj): Improve error message.  
8680
8681         Fixes #469549.
8682
8683 2009-02-03  Miguel de Icaza  <miguel@novell.com>
8684
8685         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
8686
8687 2009-02-03  Mark Probst  <mark.probst@gmail.com>
8688
8689         * generic-sharing.c: Don't hold domain lock when calling
8690         instantiate_other_info().  Fixes #471958.
8691
8692         * domain-internals.h, loader.c: Describe locking policy of domain
8693         lock vs loader lock.
8694
8695 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8696
8697         * verify.c (mono_delegate_signature_equal): Make it possible to check
8698         first-arg-bound delegates to static method.
8699
8700         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
8701         static methods with the first arg bound.
8702
8703         Fixes #469529.
8704
8705 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8706
8707         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
8708         errors.
8709
8710         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
8711         under strict mode. Any type, when boxed can be seen as a reference type.
8712
8713         Fixes #469528.
8714
8715 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
8716
8717         * object.h: The lower bound of an array is a signed integer value.
8718         Introduce mono_array_lower_bound_t typedef. It should be used instead of
8719         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
8720
8721         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
8722         calculate the upper bound.
8723         
8724         Fixes #471252.
8725
8726 2009-02-02  Miguel de Icaza  <miguel@novell.com>
8727
8728         From Paolo's work, refactored, cleared up:
8729         
8730         * threadpool.c, icall.c: ifdef code that requires a working socket
8731         stack.
8732
8733         * metadata.c (mono_metadata_field_info): Do not attempt to return
8734         a value from a function declared as void.
8735
8736         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
8737         from the console stack.
8738
8739         * assembly.c: use strrchr instead of rindex.
8740
8741         * class.c, object.c, marshal.c, icall.c, reflection.c: include
8742         alloca.h on systems that have it.
8743
8744         * environment.c: Avoid code that uses stuff from
8745         HAVE_SYS_UTSNAME_H
8746         
8747         * appdomain.c: Include sys/time.h.
8748
8749         * console-io.c: include sys/ioctl.h if it is available.
8750
8751 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
8752
8753         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
8754
8755         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
8756         the method builder.
8757
8758         * marshal.c: Set mb->skip_visibility instead of setting it on the method
8759         after it was created and cached, as the later is not thread safe.
8760         
8761 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8762
8763         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
8764         called while the debugging module is not initialized. Fixes #471669.
8765
8766 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
8767
8768         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
8769
8770         Fixes #471255.
8771
8772 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8773
8774         * generic-sharing.c (lookup_or_register_other_info): Make sure the
8775         loader lock is not taken while the templates lock is held.  Fixes
8776         #471089.
8777
8778 2009-02-02  Mark Probst  <mark.probst@gmail.com>
8779
8780         * metadata.c (type_in_image): Added a check to fix a monodis
8781         crash.
8782
8783 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
8784
8785         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
8786         nullable arguments.
8787
8788         * object.c (mono_runtime_invoke_array): Ditto.
8789         
8790         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
8791         freeing wrappers of dynamic methods.
8792
8793         * loader.c (mono_free_method): Call it. Fixes #463323.
8794         
8795         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
8796         methods taking vtype/byref arguments, to fix yet another bug caused by
8797         the sharing of runtime invoke wrappers. Partly fixes #471259.
8798
8799 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
8800
8801         * debug-mono-symfile.c (check_line): Return NULL instead of returning
8802         <first file in file table>:1 when the IL offset does not have an associated
8803         line number.
8804
8805 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * mono-debug.c (mono_debug_lookup_locals): New function to return local
8808         variable info for a method.
8809
8810         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
8811         
8812 2009-01-30  Jb Evain  <jbevain@novell.com>
8813
8814         * pedump.c: reuse code from monodis to make sure pedump honors
8815         MONO_PATH, which is needed to verify net_2_1 assemblies.
8816
8817 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
8818
8819         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
8820         there is no line number info.
8821
8822 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
8823
8824         Avoid some MonoType allocations
8825         * reflection.c (mono_reflection_initialize_generic_parameter):
8826         Reuse MonoType from param->pklass rather than allocating one.
8827         (mono_dynamic_image_free): Update to changes.
8828
8829 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8830
8831         Rearrange some code to improve consistency
8832         * reflection.c (mono_reflection_setup_generic_class): Move body ...
8833         (mono_reflection_initialize_generic_parameter): ... here.
8834
8835 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
8836
8837         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
8838         with type constraints as an experiment.
8839
8840         * boehm-gc.c (on_gc_notification): Update mono_stats.
8841
8842 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
8843
8844         Avoid some allocations
8845         * class-internals.h (_MonoGenericInst::type_argv): Convert from
8846         pointer to tail array to avoid extra allocation.
8847         * metadata.c (free_generic_inst): Update to changes.
8848         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
8849         on-stack struct.
8850
8851 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
8852
8853         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
8854         return TRUE if the two type objects are the same.
8855
8856 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8857
8858         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
8859         (mono_class_native_size): Use klass->marshal_info->min_align instead of
8860         klass->min_align, since klass->min_align contains the managed alignment,
8861         while the native alignment can be different, like for longs on x86.
8862         Fixes #469135.
8863
8864         * class-internals.h (MonoMarshalType): Add a min_align field.
8865
8866 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
8867
8868         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
8869         the 1.0 format.
8870
8871 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
8872
8873         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
8874         some comments about the usage of the used_regs field.
8875
8876         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
8877         Fixes #469217.
8878
8879 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
8880
8881         * appdomain.c: return NULL instead of throwing FileNotFoundException
8882         when LoadAssembly() fails.
8883
8884 2009-01-23  Mark Probst  <mark.probst@gmail.com>
8885
8886         * metadata.c (mono_metadata_generic_param_equal): Only compare the
8887         image if the owner is NULL.  Fixes the AOT failures.
8888
8889 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
8890
8891         * metadata.c (mono_metadata_load_generic_params): Initialize the 
8892         MonoGenericParam structure using memset so the image field is initialized
8893         as well.
8894
8895 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8896
8897         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
8898         a plain store.
8899
8900 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * class.c (mono_class_setup_vtable_general): In the generic instance
8903         optimization, set method->slot for abstract virtual methods. Fixes part of
8904         #467834.
8905
8906 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8907
8908         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
8909         which signals that the unloading has started but all appdomain services must
8910         remain operational.
8911
8912         * appdomain.c (mono_domain_unload): The initial state for unloading now
8913         is unloading_start and we switch to unloading after the managed call to
8914         AppDomain::DomainUnload has finished.
8915
8916         The new unloading state has to be created because managed code in the
8917         DomainUnload event can depend on things like the threadpool still working.
8918         The domain must remain fully functional while the event executes.
8919
8920         This shown as an issue due to Process::WaitForExit, which waits for
8921         async reads of stdout and stderr to complete. Since those are processed
8922         in the threadpool the code deadlocks because the DomainUnload callback 
8923         waits for the async read finished event, which should have been set by a
8924         threadpool job but has been discarded due to the domain been in unload
8925         state.
8926
8927 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8928
8929         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
8930         image must match.
8931
8932 2009-01-21  Mark Probst  <mark.probst@gmail.com>
8933
8934         * reflection.c (resolve_object): For fields, inflate the class and
8935         then get the field in the inflated class.
8936
8937 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8938
8939         * object-internals.h (struct _MonoException): Added a comment
8940         explaining the new use of trace_ips.
8941
8942 2009-01-20  Mark Probst  <mark.probst@gmail.com>
8943
8944         * generic-sharing.c (inflate_other_data): Inflate array methods
8945         correctly.
8946
8947         * loader.c, class-internals.h: Rename search_in_array_class() to
8948         mono_method_search_in_array_class() and make it non-static.
8949
8950 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8951
8952         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
8953         Hopefully fixes #458168.
8954
8955 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8956
8957         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
8958         as it is performed elsewhere.
8959
8960         Code is contributed under MIT/X11 license
8961
8962 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
8963
8964         * mono-perfcounters-def.h: Add counters for asp.net requests total and
8965         requests queued.
8966         * object.c (mono_raise_exception): Increment the exceptions total
8967         counter when an exception is thrown.
8968         * class-internals.h: Add a location for storing the total number of
8969         asp.net requests served.
8970         * mono-perfcounters.c: Implement update support for asp.net counters
8971         from the class libraries. Implement read support for asp.net counters
8972         and exceptions total counter.
8973
8974 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
8975
8976         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
8977         accessing klass->methods. Fixes #467385.
8978
8979 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8980
8981         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
8982         for byval arguments without an [Out] attribute. Fixes #467212.
8983
8984         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
8985         Fix compilation under android.
8986         
8987         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
8988         processed, scan them directly after they are copied, to achieve better locality
8989         and cache usage.
8990
8991         * socket-io.c: Applied patch from Koushik Dutta
8992         (koush@koushikdutta.com). Disable IPV6 when running under android.
8993
8994 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * icall.c (ves_icall_InternalExecute): Add write barriers.
8997
8998         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
8999         the GC code.
9000
9001         * sgen-gc.c: Implement write barriers in IL code.
9002
9003 2009-01-17  Geoff Norton  <gnorton@novell.com>
9004
9005         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
9006
9007 2009-01-17  Geoff Norton  <gnorton@novell.com>
9008
9009         * image.c: When unloading the image->references table, there can be gaps
9010         in it.  Ensure that we iterate every entry to avoid leaking assembly references
9011         when unloading an appdomain.
9012
9013 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
9014
9015         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
9016         speed up ptr-in-nursery checks.
9017
9018         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
9019         threads_lock () to prevent deadlocks.
9020
9021         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
9022         does not need to be scanned during minor collections, since writes to it
9023         must use write barriers.
9024
9025 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
9026
9027         * metadata-verify.c: Add pe nt header verification.
9028         
9029 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
9030
9031         * gc.c: Fix a few warnings when using SGEN.
9032
9033 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
9034
9035         * metadata-verify.c: Add pe optional header verification.
9036
9037 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
9038
9039         * sgen-gc.c: Add support for user defined marker functions, used by
9040         MonoGHashTable to avoid registering a GC root for every hash node.
9041
9042 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
9045         non-pinned roots into separate hashes to avoid having to traverse them
9046         in functions which are only interested in one kind.
9047
9048 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
9049
9050         * metadata-verify.c: Add pe header machine field verification.
9051         
9052 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
9053
9054         * metadata-verify.c: Add pe header size verification.
9055
9056 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
9057
9058         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
9059         using the GC, they don't contain references.
9060
9061         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
9062
9063 2009-01-13  Geoff Norton  <gnorton@novell.com>
9064
9065         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
9066         AppDomains created on the native side can be cleaned up on the native side.
9067
9068 2009-01-13  Geoff Norton  <gnorton@novell.com>
9069
9070         * appdomain.c: Ensure that we call mono_context_init for the embedding api
9071         as well as the managed api.
9072
9073 2009-01-13  Geoff Norton  <gnorton@novell.com>
9074
9075         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
9076         with a MonoAppDomain initialized against it.
9077
9078 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9079
9080         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
9081         
9082         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
9083
9084         * marshal.c: Avoid setting the exception clauses after a method has been entered 
9085         into the wrapper caches. Fixes #465700.
9086
9087         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
9088         method builder.
9089         (mono_mb_create_method): Set the clauses from the method builder.
9090
9091 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
9092
9093         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
9094         Patch from Makoto Kishimoto.
9095
9096 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
9099         encoding them as ROOT_DESC_COMPLEX.
9100         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
9101
9102 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
9103
9104         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
9105         no longer point to the nursery.
9106
9107         * sgen-gc.c: Add a few comments/FIXMEs.
9108         
9109         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
9110
9111         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
9112         initialization of the various _method variables thread safe. Fixes
9113         #465377.
9114
9115 2009-01-12  Mark Probst  <mark.probst@gmail.com>
9116
9117         * domain.c, domain-internals.h: Remove the shared_generics_hash
9118         and its lookup functions.
9119
9120 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
9121
9122         * socket-io.c:  Fixing the MSVC build. 
9123
9124         Code is contributed under MIT/X11 license.
9125
9126 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
9127
9128         * metadata-verify.c: Add pe header watermark verification.
9129
9130 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9131
9132         * metadata-verify.c: Add lfanew verification.
9133
9134 2009-01-12  Jb Evain  <jbevain@novell.com>
9135
9136         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
9137         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
9138
9139 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
9140
9141         * socket-io.c: Fix the build.
9142
9143         * environment.c: Fix an #ifdef.
9144
9145 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9146
9147         * threadpool.c (async_invoke_thread): Handle the wait function returning
9148         WAIT_IO_COMPLETION as well.
9149         (async_invoke_io_thread): Ditto.
9150
9151 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
9152
9153         * threads.c: Fixing the Windows build.
9154
9155         Code is contributed under MIT/X11 license.
9156
9157 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9158  
9159         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
9160         interrupt a wait.
9161         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
9162         the thread to wait again.
9163
9164 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9165
9166         * metadata-verify.c: Initial skeleton of the metadata verifier.
9167
9168         * pedump.c: Add support for the metadata verifier.
9169
9170         * verify-internal.h: Export the whole assembly metadata verifier function.
9171
9172 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
9173
9174         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
9175
9176 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * Makefile.am: Upgrade dtrace-prelink.sh location.
9179
9180 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9181
9182         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
9183         well. Otherwise the shutdown deadlock that happens on unix will can happen
9184         as well.
9185         If the main thread code finishes too fast it's possible that the finalizer
9186         thread won't have executed yet, won't record itself as the finalizer thread
9187         and the shutdown sequence will wait on it forever.
9188
9189 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
9190
9191         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
9192         with MSVC.
9193
9194 2009-01-08  Miguel de Icaza  <miguel@novell.com>
9195
9196         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
9197         Robert Jordan for pointing this out.
9198
9199 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
9200
9201         * icall.c
9202         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
9203         ves_icall_System_IO_DriveInfo_GetDriveType.
9204
9205 2009-01-07  Miguel de Icaza  <miguel@novell.com>
9206
9207         * icall.c: Wrap calls to mono_strtod in CriticalSection
9208         invocations when using eglib, to work around #464316.
9209
9210 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9211
9212         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
9213         return value of GetCurrentDirectory to never access unitialized memory.
9214
9215 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
9216
9217         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
9218         return value of GetCurrentDirectory and expand the buffer if needed.
9219
9220         Fixes #459094.
9221
9222 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
9223
9224         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
9225           Adding a call to mono_init_com_types.
9226
9227         Code is contributed under MIT/X11 license.
9228
9229 2009-01-07  Geoff Norton  <gnorton@novell.com>
9230
9231         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
9232         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
9233         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
9234         be the value of the ip buffer.
9235
9236 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9237
9238         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
9239         interfaces_packed here.
9240
9241         Fixes part of #463294.
9242
9243 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9244
9245         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
9246
9247         Fixes part of #463294.
9248
9249 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9250
9251         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
9252         is a boxed complex as well.
9253
9254         Fixes part of #463294.
9255
9256 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
9257
9258         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
9259         control if a methodspec should be created for the generic method definition from external assemblies.
9260         Caching of methodspec is done using the handleref hash table.
9261
9262         Fixes #462592.
9263
9264 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
9265
9266         * loader.c (find_method): When searching the interfaces of a class
9267         check the transitive closure of implemented interfaces.
9268
9269         Fixes #463303.
9270
9271 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9272
9273         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
9274         
9275 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
9276
9277         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
9278         interfaces calculation to fill_valuetype_array_derived_types.
9279
9280         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
9281         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
9282         for example.
9283
9284         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
9285         interfaces for valuetypes if needed.    
9286
9287         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
9288         for their basetype as well. Types are array expanded if rank is > 0.
9289
9290         Fixes #400716.
9291
9292 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
9293
9294         * socket-io.h : Changing the signature of
9295           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
9296           the blocking state.
9297
9298         * icall-def.h :  Changing the signature of
9299           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
9300
9301         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
9302           For Windows only.  Avoid blocking when calling accept by
9303           querying for a connection via select.  The loop also queries
9304           the thread state every 1000 micro seconds for the thread
9305           stop state.  This will avoid the process hanging on shutdown
9306           when using a TcpChannel that is never connected to.
9307
9308         Code is contributed under MIT/X11 license.
9309
9310 2008-12-30  Marek Safar  <marek.safar@gmail.com>
9311
9312         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
9313
9314 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9315
9316         * class.c (get_implicit_generic_array_interfaces): Extract common
9317         code to a helper function making it a lot easier on the eyes.
9318
9319 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
9320
9321         * class.c (get_implicit_generic_array_interfaces): If the internal
9322         enumerator is an interface inflate System.Object instead of itself.
9323
9324         Fixes #461261.
9325
9326 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
9327
9328         * object.c (mono_runtime_invoke_array): Don't assert with
9329         byref nullable types.
9330
9331         * marshal.c (mono_marshal_get_runtime_invoke): To handle
9332         byref nullables we unbox the object and store it on the
9333         stack. 
9334         We can't use the boxed object since it is the T of Nullable<T>
9335         and the boxed representation of a nullable it's underlying type
9336         or null.
9337         We could cheat and create a boxed nullable and use the same
9338         machinery of other byref VTs but this feels like a hack and
9339         using the stack has the bonus of reducing heap pressure.
9340
9341         Fixes #461941.
9342
9343 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
9344
9345         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
9346         return value.
9347
9348         Fixes #461867.
9349
9350 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
9351
9352         * icall-def.h : Adding an internal call definition for 
9353           System.Environment.internalBroadcastSettingChange.
9354
9355         * icall.c : Adding a Windows only implementation to broadcast a 
9356           WM_SETTINGCHANGE when an environment variable has changed.
9357
9358         Code is contributed under MIT/X11 license.
9359
9360 2008-12-19  Mark Probst  <mark.probst@gmail.com>
9361
9362         * class.c, class-internals.h: Made
9363         mono_class_has_parent_and_ignore_generics() non-static.
9364
9365 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
9366
9367         * image.c: deal with the mmap failing when loading an image.
9368
9369 2008-12-17  Geoff Norton  <gnorton@novell.com>
9370
9371         * threadpool.c: Ensure that the io_queue_lock is initialized
9372         in all circumstances, as we always attempt to cleanup against it.
9373
9374 2008-12-17  Miguel de Icaza  <miguel@novell.com>
9375
9376         * icall.c (ves_icall_System_Environment_get_Platform): For
9377         compatibility reasons for existing client code we will keep
9378         returning 4 for a while.   
9379
9380         For how long will depend on the documentation being updated, and
9381         for us to give client code a chance to be updated.
9382
9383         This reverts the original decison on #433108 since we did not
9384         catch roughly 33 instances of the broken code in our own source
9385         code base, we did not catch failures on the buildbots, and QA did
9386         not bring this as a problem.
9387
9388         Only today I found some customer's code breaking due to our own
9389         class libraries not being fully updated and tracked it down to
9390         this change.  I am reverting it because if we could not even get
9391         our story straight in our own code base, how can we hope that our
9392         end user code be fixed?
9393
9394         As of this morning, our Wiki page that documents how to detect
9395         Unix had not been fixed.    
9396
9397 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
9400
9401         * class.c (mono_class_get_fields): Handle loading errors.
9402
9403 2008-12-12 Mark Mason <mmason@upwardaccess.com>
9404
9405         * 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.
9406         
9407 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
9408
9409         * mono-perfcounters.c: avoid warning.
9410
9411 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * reflection.c (ensure_runtime_vtable): Work on generic instances and
9414         make sure all interfaces have MonoClass::interface_id set.
9415
9416         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
9417         method table is property set.
9418
9419 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9420
9421         * class.c: New function mono_class_setup_interface_id that setup
9422         MonoClass::interface_id if needed.
9423
9424         * class-internals.h: Export new function.
9425
9426 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
9427
9428         * class.c: Add code to sanity check the vtable after setup_vtable_general
9429         has done it's work.
9430
9431 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
9432
9433         * icall.c: make Assembly.GetExecutingAssembly work properly when
9434         reflection is used to invoke the method.
9435         Bug #321781 fixed.
9436
9437 2008-12-11  Mark Probst  <mark.probst@gmail.com>
9438
9439         * metadata/generic-sharing.c: Look for constraints in all type
9440         arguments, not just the first one.
9441
9442 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
9443
9444         * appdomain.c: return the correct CodeBase for an Assembly instance
9445         that was loaded from the shadow-copy directories.
9446         Bug #458190 fixed.
9447
9448 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
9451
9452         * sgen-gc.c (check_object): New debugging helper function.
9453
9454         * object.c: Fix calls to mono_value_copy_array ().
9455
9456 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9457
9458         * class.c (mono_class_setup_fields): If working on an inflated class
9459         first check if the generic definition did init with success.
9460
9461         Fixes #445361.
9462
9463 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9464
9465         pedump.c (main): Fix a warning.
9466
9467 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
9468
9469         * object-internals.h : Adding a definition for 
9470           MonoReflectionComVisibleAttribute.
9471
9472         * marshal.c (cominterop_com_visible) :  Method added to check the 
9473           ComVisible attribute of a class.
9474
9475         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
9476           cominterop_raise_hr_exception added to consolidate common code 
9477           to raise hr exceptions.
9478
9479         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
9480           if a managed class should support IDispatch.
9481
9482         * marshal.c 
9483           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
9484           Added additional checks for managed object when getting 
9485           an IDispatch interface.
9486
9487         Code is contributed under MIT/X11 license.
9488
9489 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
9490
9491         pedump.c (main): Handle mono_get_method () returning NULL. 
9492
9493 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9494
9495         * marshal.h: Fix a warning.
9496
9497 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
9498
9499         * marshal.c : Adding cominterop_release_all_rcws to release all
9500           runtime callable wrappers held by the runtime.
9501
9502         * marshal.h : Adding declaration for cominterop_release_all_rcws.
9503           
9504         Code is contributed under MIT/X11 license.
9505
9506 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
9507
9508         * metadata.c (mono_image_alloc_lock): New helper function.
9509         (mono_image_alloc0_lock): Ditto.
9510
9511         * metadata.c: Use the alloc_lock () helper functions for allocating
9512         memory from the image mempool.
9513
9514 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
9515
9516         * class.c (mono_class_from_generic_parameter): Document it's
9517         locking behavior. Fix double checked locking here, we stored in
9518         param->pklass a partially initialized MonoClass and no membar was used.
9519
9520 2008-12-05  Marek Habersack  <mhabersack@novell.com>
9521
9522         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
9523         (3) functions are present in the C library use them to do the
9524         job. If they are absent, make sure that the sum of int_part and
9525         dec_part is rounded before returning. This is necessary due to the
9526         division of dec_part by the power of 10 before the final addition
9527         is performed - if the result is not rounded in some cases it will
9528         yield invalid results.
9529
9530 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
9531
9532         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
9533         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
9534         instruction instead of a pointer constant.
9535
9536 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
9537
9538         * loader.c (mono_method_get_header): Do most of the work outside the
9539         loader lock, to avoid assembly load hook deadlocks.
9540
9541         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
9542         (mono_metadata_parse_type_full): Ditto.
9543
9544 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
9545
9546         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
9547         Make the stack depth fixed. Ensure proper argument passing to the backtrace
9548         funtions. Finally, use a lock to produce well ordered output.
9549
9550         The lock looks silly, as all calls to the corlib mempool should be guarded
9551         with the loader lock, but for some reason this fact doesn't help. 
9552
9553         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
9554
9555 2008-12-02  Mark Probst  <mark.probst@gmail.com>
9556
9557         * socket-io.c: 64 bit big-endian fixes.
9558
9559 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
9560
9561         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
9562         targets that require strict compatibility between the types.
9563
9564         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
9565         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
9566         Kill the strict argument and create a new one valuetype_must_be_boxed.
9567
9568         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
9569         state that all valuetypes must be boxed.
9570
9571         Fixes #448560.
9572
9573 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
9574
9575         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
9576         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
9577
9578         Contributed under MIT/X11 license.
9579
9580 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
9581
9582         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
9583         the inflate_generic_type machinery should handle it.
9584
9585         This avoids a crash when the field's flags is zero and it's type is
9586         a primitive.
9587         What happens is that mono_metadata_parse_type_full will see that opt_attrs
9588         is zero and will return one of the cached built-in primitive types. Since
9589         those types live in read-only memory, the code that copies it crashes.  
9590
9591 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9592
9593         * object.c: Don't put function descriptors into generalized IMT
9594         thunks.
9595
9596 2008-11-28  Mark Probst  <mark.probst@gmail.com>
9597
9598         * class.c: Enable generic code sharing on PPC64.
9599
9600 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9601
9602         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
9603         from mini/mini.c.
9604
9605         * generic-sharing.c: Allocate the method template slists from the
9606         image mempool so it doesn't leak.
9607
9608 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
9609
9610         * class.c (generic_array_methods): Release the linked list.
9611
9612 2008-11-27  Mark Probst  <mark.probst@gmail.com>
9613
9614         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
9615         invocation to g_utf16_to_utf8().
9616
9617 2008-11-26  Mark Probst  <mark.probst@gmail.com>
9618
9619         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
9620         arguments on big endian archs.
9621
9622 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9623
9624         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
9625         the type name (test added in corlib).
9626
9627 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
9628
9629         * pedump.c: initialize perf. counters. Fixes a segv.
9630
9631 2008-11-25  Martin Baulig  <martin@ximian.com>
9632
9633         * mono-debug-debugger.c
9634         (mono_debugger_runtime_invoke): Return the exception object if an
9635         exception was thrown.  Visual Studio displays the exception object
9636         in the locals window.
9637
9638 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9639
9640         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
9641         ftnptr.
9642
9643 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9644
9645         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
9646         MONO_TYPE_U are sizeof (gpointer), too.
9647
9648 2008-11-24  Mark Probst  <mark.probst@gmail.com>
9649
9650         * marshal.c (mono_type_native_stack_size): Fixed size and
9651         alignment for reference types.
9652
9653 2008-11-23  Mark Probst  <mark.probst@gmail.com>
9654
9655         * class.c (mono_class_generic_sharing_enabled): Disable generic
9656         code sharing for PPC64.
9657
9658 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
9659
9660         * icall.c (mono_method_get_equivalent_method): Make sure
9661         method->klass->methods is inited before looping over it.
9662
9663 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
9664
9665         * object.c: when calling ExecuteAssembly in a newly created domain,
9666         the configuration file and application base are already set up.
9667         Bug #446353 take 2 fixed.
9668
9669 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
9670
9671         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
9672         Fixes #444715. Fix a warning.
9673
9674 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
9675
9676         * appdomain.c: write the full path of the assembly to the .ini file
9677         created when "shadow-copying"
9678         Bug #446353 fixed.
9679
9680 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
9683         if signature==FALSE.
9684
9685 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9686
9687         * marshal.h : Fix the cygwin build.
9688            marshal.c:12442: undefined reference to `_IID_IMarshal'
9689           
9690         Code is contributed under MIT/X11 license.
9691
9692 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
9693
9694         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
9695           free threaded marshaler when QueryInterface is called on a COM callable
9696           wrapper requesting the IMarshal interface.
9697           
9698         Code is contributed under MIT/X11 license.
9699
9700 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
9701
9702         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
9703
9704         * reflection.c (mono_type_get_object): Special case the very common
9705         void type.
9706
9707         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
9708         hold typeof(void).
9709
9710 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
9711
9712         * process.h : Adding method declaration for
9713           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9714           
9715         * process.c : Adding implementation for
9716           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9717           
9718         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
9719           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
9720
9721         Code is contributed under MIT/X11 license.
9722
9723 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
9724
9725         * appdomain.c (unload_thread_main): Clean up threadpool by
9726         calling mono_thread_pool_remove_domain_jobs.
9727
9728         * domain-internals.h (struct _MonoDomain): Add new fields to
9729         help coordinate the cleanup of the threadpool.
9730
9731         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
9732         that cleans up the threadpool of all jobs associated with an appdomain.
9733         It does that by cleaning up the queues and making sure all active
9734         threads are accounted.
9735
9736         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
9737         unloaded or in the process of. Take this is such way that there is
9738         no race condition between another thread starting the unload and the
9739         current thread acknowledging it.
9740
9741         * threadpool.c (async_invoke_thread): Same.
9742
9743         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
9744         firing the new thread.
9745
9746         * threadpool.c (start_tpthread): Same.
9747
9748         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
9749
9750         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
9751
9752 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
9753
9754         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9755         Add support for DuplicateHandle.
9756         
9757         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9758         Add support for DuplicateHandle.
9759         
9760         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
9761         Add support for DuplicateHandle.
9762
9763         Code is contributed under MIT/X11 license.
9764
9765 2008-11-06  Mark Probst  <mark.probst@gmail.com>
9766
9767         * class-internals.h: Make min_align into a whole byte.
9768
9769         * class.c: Set min_align for SIMD types to 16.
9770
9771 2008-11-05  Geoff Norton  <gnorton@novell.com>
9772
9773         * attach.c: Default the attacher to enabled for all cases including
9774         embedded.
9775
9776 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9777
9778         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
9779         change r117650.
9780
9781 2008-11-04  Mark Probst  <mark.probst@gmail.com>
9782
9783         * monitor.c, monitor.h: New function for querying offsets of
9784         members of MonoThreadsSync.
9785
9786 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
9789         to speed up this function and to avoid the boundless memory growth caused by
9790         the signature_dup () calls.
9791
9792 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
9793
9794         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
9795         wrapper.
9796
9797         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
9798         by 1 bit.
9799
9800         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
9801
9802 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9803
9804         * appdomain.c:
9805         * domain-internals.h: made mono_set_private_bin_path_from_config()
9806         "internal".
9807         * object.c: call the above function after setting the configuration
9808         file path for the root domain.
9809         Fixes bug #314478.
9810
9811 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
9812
9813         * assembly.c: when the assembly is loaded from an absolute path, end
9814         basedir with a directory separator.
9815         Bug #440781 fixed.
9816
9817 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9818
9819         * monitor.c (mono_monitor_get_fast_enter_method): If
9820         CompareExchange is not available, don't create the fastpath
9821         instead of asserting.  (The method is missing in the 1.1 profile.)
9822
9823 2008-10-30  Mark Probst  <mark.probst@gmail.com>
9824
9825         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
9826
9827         * monitor.c, monitor.h: Code for generating Monitor.Enter and
9828         Monitor.Exit IL fastpaths.
9829
9830 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9831
9832         * class.c (mono_class_create_from_typedef): Added Vector2ul.
9833
9834 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9835
9836         * class.c (mono_class_create_from_typedef): Added Vector2l.
9837
9838 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9839
9840         * class.c (mono_class_create_from_typedef): Added Vector2d.
9841
9842 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
9843
9844         * appdomain.c: translate \ into / for cache_path.
9845         * domain-internals.h: new mono_is_shadow_copy_enabled().
9846         * icall.c: (fill_reflection_assembly_name) do the same path
9847         manipulations that get_code_base does.
9848         (get_code_base) use mono_is_shadow_copy_enabled.
9849
9850 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
9851
9852         * appdomain.c: shadow-copied assemblies go to CachePath +
9853         ApplicationName when both are set. DynamicBase has nothing to do with
9854         shadow copies.
9855         Bug #406877 fixed.
9856
9857 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
9860         STANDALONESIG table.
9861
9862         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
9863         standalone signatures.
9864
9865         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
9866         comparison code: instead of comparing the signatures using a custom
9867         equals function, transform them to a common signature and compare that. This
9868         works better with AOT.
9869
9870 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
9871
9872         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
9873
9874         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
9875         call for generic instances.
9876         (mono_class_setup_properties): Call setup_properties () before accessing
9877         gklass->properties.
9878
9879         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9880         over the virtual methods of a class using metadata if possible, avoiding the
9881         creation of MonoMethod's for non-virtual methods.
9882         
9883         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9884         get_virtual_methods () to iterate over the virtual methods of classes.
9885
9886 2008-10-25  Martin Baulig  <martin@ximian.com>
9887
9888         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
9889
9890 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9891
9892         * class.c (mono_class_create_from_typedef): Added Vector4i.
9893
9894 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9895
9896         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
9897         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
9898         special-casing applies to eliminate the call completely.
9899
9900 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9901
9902         * class.c (mono_class_create_from_typedef): Added Vector8s.
9903
9904 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9905
9906         * class.c (mono_class_create_from_typedef): Added Vector16sb.
9907
9908 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9909
9910         * icall.c: get rid of annoying warning.
9911
9912 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
9913
9914         * threadpool.c: in 1.x, if you change the background status of the
9915         threadpool thread, it's not reset.
9916         Remove unnecessary calls to SetState.
9917
9918 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9919
9920         * threadpool.c: asynchronously create a set of idle threads upon first
9921         use of the threadpool. SetMinThreads will now start the appropriate
9922         number of idle threads if they are not already running. The default is
9923         1 threadpool thread per CPU. Increased the maximum number of threads
9924         per CPU to 10.
9925
9926 2008-10-22  Martin Baulig  <martin@ximian.com>
9927
9928         Revert r116521 from Zoltan, it breaks the debugger:
9929
9930         * class.c (mono_class_get_virtual_methods): New helper function to iterate
9931         over the virtual methods of a class using metadata if possible, avoiding the
9932         creation of MonoMethod's for non-virtual methods.
9933         
9934         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
9935         get_virtual_methods () to iterate over the virtual methods of classes.
9936
9937 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9938
9939         * threads.c: when creating a threadpool thread, set its state to
9940         'background'.
9941         * threadpool.c: reset the background state of a threadpool thread
9942         after finishing each work item
9943         Bug #437888 fixed.
9944
9945 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9946
9947         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
9948         
9949         * class.c (mono_class_setup_vtable_general): Add an optimized version for
9950         generic instances which works by inflating the methods in the container
9951         class's vtable.
9952
9953         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
9954         variant which doesn't make a copy if no inflation was done.
9955         (mono_class_setup_fields): Use it.
9956
9957         * metadata.c (mono_metadata_get_shared_type): New helper function to
9958         return a shared instance of a given MonoType.
9959
9960         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
9961         a copy of most non-generic types.
9962
9963 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9964
9965         * threadpool.c: remove one more GetSystemInfo () call.
9966
9967 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
9968
9969         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
9970         use the code in mono-proclib.h to get processor information.
9971
9972 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
9973
9974         * appdomain.c: fixed the logic that determines whether assemblies in a
9975         directory are "shadow-copied" or not. Bug #433483 fixed.
9976
9977 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
9978
9979         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
9980         warning.
9981
9982 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9983
9984         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
9985         returning a vtype.
9986
9987         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
9988         reflection.c: Use mono_field_get_name () for accessing a field's name.
9989
9990         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
9991         class.c
9992
9993         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
9994         field.
9995
9996         * loader.c (find_method_in_class): Reenable the metadata optimization by
9997         not using it for generic instances.
9998
9999         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
10000         data/def_type fields from MonoClassField into a separate structure.
10001         (struct MonoClassField): Remove data/def_type fields.
10002         (struct _MonoClass): Add a 'field_def_values' array to store the default
10003         values/RVA for fields.
10004
10005         * class.c reflection.c: Update after the changes.
10006         
10007         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
10008         for accessing field->data.
10009
10010         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
10011
10012         * loader.c (find_method_in_class): Revert the last change for now as
10013         it breaks Mono.C5 unit tests.
10014
10015         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
10016         'field_generic_types' and 'field_objects' which contain the information
10017         previously stored in MonoInflatedField.
10018         (MonoInflatedField): Delete.
10019         (struct _MonoClassField): Delete 'generic_info' field.
10020
10021         * reflection.c: Store the information which was previously in 
10022         field->generic_info in MonoDynamicGenericClass instead.
10023
10024         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
10025         MonoClassField changes.
10026
10027 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
10028
10029         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
10030         store the value inside the data array of the MonoMethodWrapper.
10031         This saves memory, is faster and fixes the lifetime issues (methods
10032         were never removed from the hash previously). May also fix bug#436996.
10033
10034 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
10035
10036         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
10037         generic instances, compute the type from the generic definition instead of
10038         looking in field->generic_info.
10039
10040         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
10041         for inflated fields, the only user was get_fieldref_token () which no
10042         longer needs it.
10043
10044         * class.c (mono_class_init): Revert the last change as it seems to cause
10045         crashes.
10046
10047         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
10048         bytes on 64 bit platforms.
10049
10050         * object.c (mono_class_create_runtime_vtable): Fix a warning.
10051         
10052         * object.c (mono_class_create_runtime_vtable): Don't initalize
10053         field->data/field->def_type here, it is done lazily by 
10054         mono_class_get_field_default_value ().
10055
10056         * icall.c (ves_icall_get_enum_info): Call 
10057         mono_class_get_field_default_value () instead of directly accessing
10058         field->data and field->def_type.
10059
10060         * object.c (get_default_field_value): Ditto.
10061
10062         * class.c (mono_field_get_data): Ditto.
10063         
10064         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
10065         call for generic instances.
10066
10067         * loader.c (find_method_in_class): If klass != from_class, then inflate
10068         the method with the context of from_class, since the caller assumes this.
10069
10070 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
10071
10072         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
10073         for accessing method->slot.
10074
10075 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
10076
10077         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
10078
10079 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
10080
10081         * class.c (mono_method_get_vtable_index): Use
10082         mono_method_get_vtable_slot () for accessing method->slot.
10083
10084         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
10085         accessing klass->methods.
10086
10087         * class.c (mono_method_get_vtable_slot): New helper function.
10088         (mono_class_get_vtable_entry): Ditto.
10089         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
10090         accessing method->slot.
10091
10092         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
10093         method to get_inflated_method ().
10094
10095         * class.c (mono_class_get_inflated_method): New helper method to obtain
10096         a method of an inflated class without calling setup_methods ().
10097         (mono_class_get_cctor): Use get_inflated_method.
10098
10099         * generic-sharing.c (mono_class_get_method_generic): Ditto.
10100         
10101         * marshal.c image.c: Lazily create all the marshal caches.
10102
10103         * image.c (mono_image_init): Move initialization of runtime_invoke
10104         caches to marshal.c.
10105
10106         * marshal.c (get_cache): New helper function to lazily initialize a 
10107         wrapper cache.
10108         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
10109
10110         * debug-helpers.c (mono_method_full_name): Include generic arguments.
10111
10112 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
10113
10114         * loader.c: fixed check for interface type.
10115
10116 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10117
10118         * appdomain.c: check for NULL setup before it's referenced.
10119
10120 p
10121 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10122
10123         * class.c: remove the unused old vtable setup code.
10124
10125 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10126
10127         * class.c: don't depend on interface order in
10128         setup_interface_offsets (bug #435777).
10129         * reflection.c: sort the InterfaceImpl table (patch from
10130         Jb Evain  <jbevain@novell.com>).
10131
10132 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
10133
10134         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
10135         the low level assemblies lock.
10136
10137 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
10138
10139         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
10140         object.c, reflection.c, socket-io.c, threads.c: introduced
10141         mono_framework_version () to return the major framewrok version,
10142         changed the code that was using more complex patterns to use it.
10143         Return the correct value for PlatformID for OSX.
10144
10145 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
10146
10147         * icall-def.h, process.h, process.c: added an icall to get info about
10148         processes using mono-proclib.
10149
10150 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
10151
10152         * mono-perfcounters.c: use the mono-proclib functions to
10153         access process information.
10154
10155 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10156
10157         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
10158         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
10159         reflection.c: remove rawbuffer usage: mmap support is more sanely
10160         provided by utils/mono-mmap.
10161
10162 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
10163
10164         * gc.c: use posix semaphores when possible so that
10165         mono_gc_finalize_notify() is signal safe.
10166
10167 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
10168
10169         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
10170         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
10171         be #ifdef-ed out, the linker will remove the rest.
10172
10173         * marshal.c: Implement DISABLE_COM.
10174
10175         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
10176
10177 2008-10-11  Miguel de Icaza  <miguel@novell.com>
10178
10179         * locales.c (string_invariant_compare_char): Optimization: do not
10180         call g_unichar_type unless we actually need the information.
10181
10182 2008-10-10  Mark Probst  <mark.probst@gmail.com>
10183
10184         * object.c, class-internals.h: Also create remoting trampolines
10185         for generic methods.  Pass the domain to the remoting trampoline
10186         creation function, too.
10187
10188 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
10189
10190         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
10191
10192 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10193
10194         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
10195         Vector4ui.
10196
10197 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
10198
10199         * assembly.c:
10200         * locales.c: remove the use of g_strdown. Fixes bug #322313.
10201
10202 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10203
10204         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
10205         for the least possible amount of time (extending the fix in r113458).
10206
10207 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
10208
10209         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
10210
10211 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
10212
10213         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
10214         as possible simd intrinsic types.
10215         Optimized the test to check for the common prefix first.
10216
10217 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
10218
10219         * class.c: back out part of a broken optimization committed on
10220         May 23th (bug #433908).
10221
10222 2008-10-09  Mark Probst  <mark.probst@gmail.com>
10223
10224         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
10225         Win32.  Should fix #432388 for most cases until we have the new
10226         profiler on Win32.
10227
10228 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
10231         instead of using inst->id so the hash is stable for AOT.
10232
10233 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
10234
10235         * appdomain.c:
10236         * icall.c: create a .ini file for shadow-copied assemblies that
10237         contains the location of the original assembly. Use this to return the
10238         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
10239         Also fix the number of '/' for windows when returning the CodeBase.
10240         Fixes bug #430920.
10241
10242 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10243
10244         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
10245
10246         Code is contributed under MIT/X11 license.
10247
10248 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10249
10250         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
10251           if if the class vtable needs initialized.
10252
10253         Code is contributed under MIT/X11 license.
10254
10255 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
10256
10257         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
10258           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
10259           STRING->BSTR, and CLASS->INTERFACE.
10260
10261         Code is contributed under MIT/X11 license.
10262
10263 2008-10-07  Marek Habersack  <mhabersack@novell.com>
10264
10265         * sysmath.h: changed the declaration of the
10266         ves_icall_System_Math_Round2 icall by adding an extra
10267         away_from_zero parameter.
10268
10269         * sysmath.c (ves_icall_System_Math_Round2): added support for
10270         away from zero rounding. The icall now takes an extra boolean
10271         parameter to signal that away from zero operation is requested.
10272
10273 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
10274
10275         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
10276         the delegate klass so it can work with full-aot.
10277         (mono_marshal_get_delegate_end_invoke): Ditto.
10278         (mono_marshal_get_delegate_invoke): Ditto.
10279
10280 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
10281
10282         * gc.c, attach.h, attach.c: remove a bad pattern:
10283         add_finalizer_callback () is not implemented correctly, it can't
10284         without adding more overhead to the finalizer loop and it's not
10285         even needed, since we know exactly what we need to call, so there is
10286         no need to do so through an expensive function pointer.
10287
10288 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
10289
10290         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
10291         for the no-gc case.
10292         * attach.c (mono_attach_init): Remove the #ifdef.
10293
10294 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
10295
10296         * attach.c (mono_attach_init): Don't use
10297         mono_gc_add_finalizer_thread_callback when compiling without GC.
10298         Fixes #432306.
10299         
10300         Code is contributed under MIT/X11 license.
10301
10302 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
10303
10304         * class.c (mono_class_create_from_typedef): Remove the 
10305         #ifndef DISABLE_SIMD stuff.
10306
10307 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
10308
10309         * class-internals.h (MonoClass): Added simd_type bit field.
10310
10311         * class.c (mono_class_create_from_typedef): Check if type is a simd
10312         intrinsic.
10313
10314 2008-10-03  Mark Probst  <mark.probst@gmail.com>
10315
10316         * object.c (mono_method_add_generic_virtual_invocation): Only add
10317         instantiations to the thunk whose count is at least as large as
10318         the threshold.
10319
10320 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
10321
10322         * icall.c: changed the Type of the exception thrown when trying to
10323         invoke a constructor on an abstract class. Part of the fix for bug
10324         #324185.
10325
10326 2008-10-02  Mark Probst  <mark.probst@gmail.com>
10327
10328         * class.c, class-internals.h (mono_method_get_vtable_index): New
10329         function which returns the index into the vtable and properly
10330         handles inflated virtual generic methods.
10331
10332 2008-10-01  Mark Probst  <mark.probst@gmail.com>
10333
10334         * object.c, domain.c, object-internals.h, domain-internals.h:
10335         Generalize IMT thunk machinery to also handle thunks for virtual
10336         generic method invokes.  When a virtual generic method is invoked
10337         more than a number of times we insert it into the thunk so that it
10338         can be called without lookup in unmanaged code.
10339
10340         * generic-sharing.c, class-internals.h: Fetching a
10341         MonoGenericInst* for a method from an (M)RGCTX.
10342
10343 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
10344
10345         * marshal.c (emit_marshal_string): Applied a variant of a patch by
10346         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
10347         marshalling. Fixes #431304.
10348
10349 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
10350
10351         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10352           handle when ref is specified without In or Out.
10353
10354         Code is contributed under MIT/X11 license.
10355
10356 2008-09-30  Mark Probst  <mark.probst@gmail.com>
10357
10358         * loader.c (mono_get_method_constrained): Don't expand method with
10359         the class's context, because it's already a method of that class.
10360
10361 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
10362
10363         * attach.c : should be correct build fix.
10364
10365 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * attach.c: Fix the previous change.
10368
10369 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
10370
10371         * attach.c : quick w32 build fix.
10372
10373 2008-09-27  Miguel de Icaza  <miguel@novell.com>
10374
10375         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
10376         crashes MonoDevelop: #430455.
10377
10378 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * domain-internals.h (struct _MonoDomain): Move most fields used only by
10381         the JIT do MonoJitDomainInfo in ../mini/mini.h.
10382
10383         * domain.c: Remove initialization/cleanup of the removed fields.
10384
10385 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10386
10387         * class.c (mono_class_generic_sharing_enabled): Enable generic
10388         code sharing for PPC.
10389
10390 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
10391
10392         * attach.c : Fixing the Windows builds.
10393
10394         Code is contributed under MIT/X11 license.
10395
10396 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10397
10398         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
10399         the default generic sharing mode to 'all'.
10400
10401 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10402
10403         * generic-sharing.c, class-internals.h: New function for checking
10404         whether a method needs a static RGCTX invoke wrapper.  A few
10405         funtions moved from mini/generic-sharing.c.
10406
10407         * icall.c: New function used.
10408
10409 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10410
10411         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
10412         Static RGCTX invoke wrapping applies to value type methods, too.
10413
10414         * class.c (mono_class_setup_vtable_general): In generic-shared
10415         value types, wrap methods with a static RGCTX invoke wrapper.
10416
10417 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10418
10419         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
10420         osx build.
10421
10422 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10423
10424         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
10425         register a callback which is called when the finalizer thread is woken
10426         up.
10427         (finalizer_thread): Call the callback if it exists.
10428
10429         * attach.h attach.c: New files, implementing the attach mechanism.
10430
10431         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
10432         
10433         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
10434         by the previous change.
10435
10436 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10437
10438         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
10439         loader.c, marshal.c, metadata-internals.h, metadata.c,
10440         method-builder.c, object.c, reflection.c: introduced specific functions
10441         to allocate from the domain and image mempools and cleaned up most of
10442         the code to use them (still missing a few in reflection.c).
10443         Keep the loader bytes counter updated.
10444
10445 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
10446
10447         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
10448         loader-related counters.
10449
10450 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
10451
10452         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
10453         added more MS-compatible counters.
10454
10455 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10456
10457         * class.c (mono_class_setup_fields): Call setup_fields before accessing
10458         class->blittable. Fixes #428217.
10459
10460 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * reflection.c (mono_image_get_field_on_inst_token): Call 
10463         field_encode_signature () since that handles custom modifiers too.
10464         Fixes #424663.
10465
10466 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
10467
10468         * reflection.c (add_custom_modifiers): New helper function to merge custom
10469         modifiers stored in objects to a MonoType.
10470         (fieldref_encode_signature): Encode custom modifiers.
10471         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
10472         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
10473
10474 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
10475
10476         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
10477         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
10478         64-bit IL only images because imports are not resolved for IL only images.
10479         Special thanks to Bill Holmes for finding this bug and testing the patch.
10480         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
10481
10482         Contributed under MIT/X11 license.
10483
10484 2008-09-19  Miguel de Icaza  <miguel@novell.com>
10485
10486         * mono-config.c (dllmap_start): Add support for the bits keyword
10487         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
10488
10489 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10490
10491         * reflection.c (inflate_mono_method): When the class the method is
10492         to be inflated for is itself not inflated, just return the method.
10493
10494 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
10495
10496         * mono-perfcounters.c: use more user friendly process instance names.
10497
10498 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
10499
10500         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
10501           handle "[in] ref" and "[in][out] ref" cases.
10502
10503         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
10504           to mono_mb_create_method.  This was causing problems calling native to
10505           managed passing Variants by value.
10506
10507         Code is contributed under MIT/X11 license.
10508
10509 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * class.c (can_access_internals): Call mono_assembly_load_friends ()
10512         before accessing the friend_assembly_names field.
10513
10514         * assembly.c (mono_assembly_load_friends): Make this callable multiple
10515         times.
10516         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
10517         called lazily when it is needed.
10518
10519         * metadata-internals.h (struct _MonoAssembly): Add 
10520         'friend_assembly_names_inited' flag.
10521
10522 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
10523
10524         * mono-perfcounters-def.h: fix the types of a few counters.
10525         * mono-perfcounters.c: implemented the instance names getter
10526         and a few bugfixes.
10527
10528 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
10529
10530         * culture-info-table.h : regenerated.
10531
10532 2008-09-17  Robert Jordan  <robertj@gmx.net>
10533
10534         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
10535         context bound objects. Fixes #415577.
10536
10537         Code is contributed under MIT/X11 license.
10538
10539 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10540
10541         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
10542         implementation (bug #423582).
10543
10544 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
10545
10546         * object.c (mono_object_get_virtual_method): Handle the case method->slot
10547         is not set. Fixes #426309.
10548
10549 2008-09-16  Jb Evain  <jbevain@novell.com>
10550
10551         * class.c (mono_class_from_name): fix the exported type look up
10552         when the type is defined in a referenced assembly.
10553
10554 2008-09-16  Jb Evain  <jbevain@novell.com>
10555
10556         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
10557         increment the next index counter on each iteration to make that work
10558         for more than one type forwarder. Unmanaged part to fix #422929.
10559
10560 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10561
10562         * object-internals.h: enum ComInterfaceType in
10563         MonoInterfaceTypeAttribute is guint32, not guint16.
10564
10565 2008-09-12  Mark Probst  <mark.probst@gmail.com>
10566
10567         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
10568         writing code.
10569
10570 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10571
10572         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
10573         not gboolean.
10574
10575 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10576
10577         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
10578         Endianness fixes for MonoSymbolFileOffsetTable.
10579
10580 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10581
10582         * process.c (complete_path) : Removing quotes from the 
10583           input path.  The glib file routines do not handle file paths
10584           that have quotes around them.
10585
10586         Code is contributed under MIT/X11 license.
10587
10588 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
10589
10590         * socket-io.h : Adding a comment to provide locations where 
10591           changes to MonoSocketAsyncResult need to be synced.
10592
10593         Code is contributed under MIT/X11 license.
10594
10595 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
10598         parameters as well. Fixes #425001.
10599
10600 2008-09-08  Miguel de Icaza  <miguel@novell.com>
10601
10602         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
10603         windows build.
10604
10605 2008-09-07  Miguel de Icaza  <miguel@novell.com>
10606
10607         * console-io.c: Add support for tracking the window size if it
10608         changes.
10609
10610         The setup is very simple: the TtySetup function will now return a
10611         pointer to a location in memory that tracks the current console
10612         size.  The managed code checks its current value every time its
10613         queried against the last value set, and updates accordingly.
10614
10615         With this setup we can work with multiple consoles, and we do not
10616         require to poke into managed code from a signal handler.
10617
10618         Additionally, the environment for COLUMNS and LINES is now handled
10619         in unmanaged code.
10620
10621         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
10622
10623 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10624
10625         * marshal.c (mono_type_native_stack_size): Treat
10626         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
10627
10628 2008-09-04  Jb Evain  <jbevain@novell.com>
10629
10630         * class.c (mono_class_is_assignable_from): fix assignability of nullables
10631         to nullables.
10632
10633 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
10634
10635         * verify.c (verify_type_compatibility_full): Revert change
10636         to allow converting a native int to unmanaged pointer be verifiable
10637         under non-strict mode.
10638         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
10639
10640         * verify.c: Added some TODOs.
10641
10642 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
10643
10644         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
10645           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
10646           Changed to use GlobalAlloc for the memory returned on Windows platforms.
10647
10648         Code is contributed under MIT/X11 license.
10649
10650 2008-09-02  Jb Evain  <jbevain@novell.com>
10651
10652         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
10653
10654 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
10655
10656         reflection.c (typebuilder_setup_fields): Handle classes with
10657         explicit size.
10658
10659 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
10660
10661         class.c (mono_class_setup_events): Add memory barrier due to
10662         double checked locking.
10663         
10664         class.c (mono_class_setup_properties): Same.
10665
10666 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * class.c (mono_class_is_assignable_from): Fix the build.
10669         
10670         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
10671         before accessing klass->interface_bitmap. Fixes #421744.
10672
10673 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10674
10675         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
10676         the runtime into no-exec mode, useful when running the AOT compiler.
10677
10678         * appdomain.c gc.c object.c: Avoid executing managed code when running
10679         in no-exec mode.
10680         
10681         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
10682
10683         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
10684         special case when the mono_assembly_loaded () returns NULL because the 
10685         search hook is not installed.
10686
10687 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
10690         crashes in bstr marshalling on linux.
10691
10692 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10693
10694         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
10695         with more than one parameter.
10696
10697 2008-08-24  Miguel de Icaza  <miguel@novell.com>
10698
10699         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
10700         start/stop flow control as well when turning off ICANON (allows
10701         C-s and C-q to be read by Console.ReadKey).
10702
10703 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * class.c (mono_class_init): Move the initialization of nested classes
10706         into mono_class_get_nested_types (). Fixes #418433.
10707
10708         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
10709         flag.
10710
10711         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
10712         iterating tough the nested classes of a class.
10713
10714 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10715
10716         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
10717         on arm.
10718
10719 2008-08-22  Miguel de Icaza  <miguel@novell.com>
10720
10721         * console-io.c (sigcont_handler): Support signal chaining for
10722         SIGCONT.
10723
10724         (console_set_signal_handlers): Use best practices with sigaction,
10725         clear the structure before using it. 
10726
10727 2008-08-22  Robert Jordan  <robertj@gmx.net>
10728
10729         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
10730         Fix the Windows build.
10731
10732 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10733
10734         * class.c (mono_class_generic_sharing_enabled): Make the default
10735         sharing mode 'corlib'.
10736
10737 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10738
10739         * console-io.c (console_set_signal_handlers): Fix a warning.
10740
10741         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
10742         method normally, the JIT will take care of avoiding recursion.
10743
10744 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10745
10746         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
10747
10748         Code is contributed under MIT/X11 license.
10749
10750 2008-08-20  Miguel de Icaza  <miguel@novell.com>
10751
10752         * console-io.c (sigcont_handler): We need to restore the entire
10753         termios state, not only the original settings, as things like echo
10754         can be controlled after this (Booish exposes this issue with its
10755         own ReadLine implementation).
10756
10757         Additionally, we need to set the terminal back into keypad_xmit
10758         mode.
10759         
10760         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
10761         string as a paramter as well.   Otherwise we get different
10762         keyboard sequences.
10763
10764 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
10767         delegates with byref out parameter passing. Fixes #351520.
10768
10769         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
10770         a generic context.
10771         (mono_type_get_desc): Add the type arguments for GENERICINST.
10772         (mono_method_full_name): Stringify the class name using mono_type_full_name
10773         so it picks up generic arguments.
10774
10775 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
10776
10777         * console-io.c: Removed debug output.
10778
10779 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
10780
10781         reflection.c (mono_reflection_create_runtime_class): Alloc
10782         the nested classes linked list using the dynamic image mempool.
10783         Fixes leak in corlib compilation.
10784
10785 2008-08-19  Miguel de Icaza  <miguel@novell.com>
10786
10787         * console-io.c: Fix incredibly annoying behavior on the console
10788         after resuming execution after control-z.   This affected every
10789         console application.
10790
10791 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
10792
10793         * mempool-internals.h: Header for mono private mempool functions. The first
10794         two function are for allocating glib linked lists using pools.
10795
10796         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
10797
10798         * Makefile.am: Added mempool-internals.h.
10799
10800 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
10803         (mono_domain_free): Ditto.
10804
10805         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
10806         be used by the JIT to store its domain-specific information, instead of putting
10807         it directly into MonoDomain.
10808
10809         * domain.c (mono_install_create_domain_hook): New helper function to install
10810         a hook which initializes domain->runtime_info.
10811
10812         * domain.c (mono_install_free_domain_hook): Ditto.
10813         
10814 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
10817         asserting if the ares parameter is null.
10818
10819         * mono-perfcounters.c: Fix warnings.
10820
10821         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
10822         is not needed, don't check for interruptions either.
10823         (mono_marshal_get_delegate_end_invoke): Ditto.
10824
10825 2008-08-15  Marek Habersack  <mhabersack@novell.com>
10826
10827         * mono-perfcounters.c (predef_readonly_counter): added support for
10828         reading the ASP.NET Requests Queued counter from another process.
10829
10830 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10831
10832         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
10833         MonoImage to simplify the AOT code.
10834
10835 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
10836
10837         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
10838         marshalling. Fixes #416078.
10839
10840 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10841         
10842         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
10843         it is set, looking up the icall address is deferred to the JIT, since 
10844         in embedded scenarios, the icall might not be registered in the runtime
10845         doing the AOT compilation. Backported from the 2.0 branch.
10846
10847 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
10850         Fixes #415621.
10851
10852 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10853
10854         * Makefile.am: added support for cross-compilation.
10855
10856 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
10857
10858         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
10859
10860 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
10861
10862         * mono-perfcounters.c: jitted methods and jitted bytes counters.
10863
10864 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
10865
10866         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
10867         mono-perfcounters.c: performance counters implementation.
10868
10869 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
10872         to gpointer, letting the AOT code decide what to store in it.
10873
10874 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
10875
10876         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
10877           mono_class_setup_methods if the methods are not initialized.
10878
10879         Code is contributed under MIT/X11 license.
10880
10881 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10882
10883         * verify.c: Remove some debug code I commited by accident.
10884
10885         * verify.c (mono_method_is_valid_in_context): Change the return value
10886         to make possible to distinguish between invalid and unverifiable.
10887
10888         * verify.c (verifier_load_method): Don't return NULL for unverifiable
10889         methods.
10890
10891 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10892
10893         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
10894         constraints. Fixes regression in gtest-253.
10895
10896 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
10897
10898         * verify.c (mono_verifier_verify_class): Don't allow generic types
10899         with explicit layout.
10900
10901         * verify.c (mono_method_verify): Check locals and argument types.
10902
10903 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10904
10905         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
10906         wait if the thread is in StopRequested state.
10907
10908         * class.c (mono_class_from_name): Refactor the module searching code into
10909         a separate function so it can be reused in the AOT case too.
10910
10911 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
10912
10913         * verify.c (mono_type_is_valid_in_context): Improve the error message.
10914         Check both the type and it's generic type definition for loader errors.
10915         
10916         * verify.c (mono_method_is_valid_in_context): Don't generate another
10917         error when a type errors occur, this leads to the wrong exception been
10918         thrown.
10919
10920 2008-07-28  Dick Porter  <dick@ximian.com>
10921
10922         * icall-def.h
10923         * process.c
10924         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
10925         New internal calls to duplicate and close a process handle.
10926
10927 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
10928
10929         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
10930
10931 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
10934
10935 2008-07-27  Robert Jordan  <robertj@gmx.net>
10936
10937         * class.c (mono_class_init): Don't compute class.has_finalize for
10938         valuetypes. Fixes #412477.
10939
10940 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
10941
10942         * verify.c: Implement constraint equivalence checking.
10943         This is required when a generic parameter is used as
10944         argument to a constrained one.
10945
10946         Fixes #410637.
10947
10948 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10951
10952         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
10953
10954         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
10955         synch with managed object layout.
10956
10957 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10958
10959         * verify.c (do_branch_op): Handle valuetypes and generic
10960         arguments properly.
10961
10962         * verify.c (do_cmp_op): Same.
10963
10964         Fixes #410383.
10965
10966 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10967
10968         * generic-sharing.c: Fix memory leaks.
10969
10970         * class.c, class-internals.h: Make
10971         mono_class_inflate_generic_type_with_mempool() non-static.
10972
10973 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
10974
10975         * pedump.c (dump_verify_info): Dump full class name.
10976
10977 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10978
10979         * generic-sharing.c: Removed some old code that didn't do anything.
10980
10981 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
10982         * profiler.c: Added runtime_initialized_event,
10983         mono_profiler_install_runtime_initialized and
10984         mono_profiler_runtime_initialized. This new hook tells the profiler
10985         when the runtime is sufficiently initialized to be able to call
10986         mono_thread_attach on the root appdomain.
10987         * profiler.h, profiler-private.h: Likewise.
10988
10989 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
10990
10991         * verify.c (do_cast): Do boxing for generic arguments as well.
10992
10993         * class.c (is_nesting_type): Drop generic instantiations before
10994         checking for nesting.
10995
10996         * class.c (can_access_instantiation): Allow access to generic
10997         arguments.
10998
10999 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
11000
11001         * verify.c (verify_class_for_overlapping_reference_fields):
11002         On some cases, the field size might be zero, guard against that.
11003         Fix the explicit layout check to work as expected.
11004
11005 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
11008         mono_thread_resume () during shutdown, since the thread we want to abort
11009         might be suspended.
11010
11011 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11012
11013         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
11014         warning.
11015
11016         * debug-mono-symfile.c: Fix a warning.
11017
11018         * mono-perfcounters.c (get_cpu_times): Fix a warning.
11019
11020         * object.c (mono_class_vtable): Check if exception_type is set, and return
11021         NULL as defined by the function comments.
11022
11023 2008-07-22  Mark Probst  <mark.probst@gmail.com>
11024
11025         * mempool.c: Use malloc for every single mempool allocation if the
11026         configure option is set.  This makes it easier to track mempool
11027         allocations with tools like Valgrind.
11028
11029 2008-07-22  Jb Evain  <jbevain@novell.com>
11030
11031         * reflection.c (create_dynamic_mono_image): emit the same
11032         metadata version that SL2 does when creating a SL2 image.
11033
11034 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
11035
11036         * icall-def.h:
11037         * icall.c: New icall System.Enum:get_hashcode. This function
11038         avoids the overhead of boxing the enum to the underlying type.
11039
11040 2008-07-21  Mark Probst  <mark.probst@gmail.com>
11041
11042         * reflection.c (mono_method_get_object): Don't let static RGCTX
11043         invoke wrappers get into MonoReflectionMethods.
11044
11045 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
11046
11047         * object-internals.h:
11048         * object.c: New mono_runtime_class_init_full function
11049         that makes throwing the exception optinal.
11050
11051         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
11052         for the case where the exception object is supplied.
11053
11054 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
11055
11056         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
11057         old ld versions.
11058
11059         Contributed under MIT/X11 license.
11060
11061 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11062
11063         * string-icalls.c (ves_icall_System_String_InternalSplit):
11064         Optimize array allocation by caching the MonoClass of the
11065         array type.
11066
11067         * icall.c (ves_icall_Type_GetMethodsByName): Same.
11068
11069         * reflection.c (mono_param_get_objects): Same.
11070
11071 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
11072
11073         * icall-def.h:
11074         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
11075         It inflates the given type using the class context.
11076
11077 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
11078
11079         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
11080         the vtable if it already exists.
11081
11082         * object-internals.h: Add mono_class_try_get_vtable as part of the
11083         internal API.
11084
11085         * reflection.c (mono_type_get_object): Use the MonoObject from the
11086         vtable when possible. Reduces locking contention on reflection heavy
11087         code.
11088
11089 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
11090
11091         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
11092         g_bit_nth_msf () since that macro is not implemented in eglib.
11093
11094 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11095
11096         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
11097         on platforms which do not support it.
11098
11099 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11100
11101         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
11102
11103 2008-07-11  Martin Baulig  <martin@ximian.com>
11104
11105         * mono-debug-debugger.h
11106         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
11107
11108         * mono-debug-debugger.c
11109         (_mono_debugger_interruption_request): New global volatile variable.
11110         (mono_debugger_check_interruption): New public function.
11111
11112         * threads.c
11113         (mono_thread_current_check_pending_interrupt): Call
11114         mono_debugger_check_interruption().
11115         (mono_thread_interruption_checkpoint_request): Likewise.
11116
11117 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11118
11119         * verify.c: Add more type checks for loaded types. Verify the result
11120         handle from ldtoken.
11121
11122 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11123
11124         * loader.c (field_from_memberref): Don't crash if the field
11125         wasn't found.
11126
11127 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11128
11129         * verify.c: Verify if type and method instantiations
11130         don't have invalid VAR or MVAR arguments.
11131
11132 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11133
11134         * verify.c: Fix double free of function pointer list.
11135
11136 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
11137
11138         * object.c (mono_string_to_utf8): Comment the new code as it
11139         breaks under eglib.
11140
11141 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
11142
11143         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
11144
11145 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11146
11147         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
11148           is not throw too many times.
11149
11150         Code is contributed under MIT/X11 license.
11151
11152 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11153
11154         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
11155         debugging is turned off.
11156
11157 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11158
11159         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
11160
11161 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11162
11163         * class-internals.h, class.c: Added new generic sharing option:
11164         Share only stuff in System.Collections.Generic, which is now the
11165         default.
11166
11167 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11168
11169         * generic-sharing.c, class-internals.h: New function for getting a
11170         generic method in a generic class given the corresponding method
11171         for a different instantiation of the class.  Partly refactored
11172         from mini-trampolines.c.
11173
11174         * class.c: Make sure generic methods have a class_inst if they are
11175         part of a generic class.
11176
11177         * metadata.c (mono_type_stack_size_internal): Handle type
11178         variables.
11179
11180 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11181
11182         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
11183         Signifies whether information on the this/vtable/mrgctx variable
11184         is available.
11185
11186 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11187
11188         * object.c, object-internals.h, icall.c: New function
11189         mono_delegate_ctor_with_method(), which does the same as
11190         mono_delegate_ctor(), but takes an explicit method argument
11191         instead of taking the method from the jit info.
11192
11193         * marshal.c: When creating a delegate with an inflated method take
11194         the "this" argument as the target class for the castclass.
11195
11196 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11197
11198         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
11199         mono_jit_info_table_find() to perform very badly in some cases.
11200
11201 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11202
11203         * icall.c (type_from_typename): Handle 'string'.
11204
11205         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
11206         wrappers into the wrapper_hash, since the key is not a MonoMethod.
11207
11208 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11209
11210         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
11211
11212         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
11213         number of available managed allocator types.
11214
11215         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
11216         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
11217
11218 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
11221         which is a low level lock protecting just the 'jit_code_hash' hash table.
11222
11223         * domain.c: Initialize+cleanup jit_code_hash_lock.
11224         
11225 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11226
11227         * coree.c (mono_load_coree): Set coree_module_handle global variable only
11228         after initialization.
11229
11230         * coree.h: Make MonoFixupExe internal.
11231
11232         Contributed under MIT/X11 license.
11233
11234 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
11235
11236         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
11237         because that is platform independent. Check NumberOfRvaAndSizes in PE32
11238         as well.
11239         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
11240         image being loaded is a CLI image and _CorValidateImage gets called.
11241
11242         * coree.h: Add MonoLoadImage.
11243
11244         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
11245         instead of LoadLibrary.
11246
11247         Contributed under MIT/X11 license.
11248
11249 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
11250
11251         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
11252         for any primitive type.
11253
11254 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11255
11256         * object.c (mono_array_new_specific): Optimize this and the other allocation
11257         functions a bit.
11258         
11259         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
11260         domains too if mono_dont_free_domains is set.
11261
11262         * domain-internals.h (mono_dont_free_domains): New internal option controlling
11263         whenever to free appdomain data after it has been unloaded.
11264
11265         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
11266         
11267 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
11268
11269         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
11270         (mono_method_get_equivalent_method): Fix a warning.
11271
11272         * object.c (mono_message_init): Avoid looking up array types for each call.
11273
11274 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
11277         call.
11278
11279         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
11280         even more.
11281
11282         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
11283         each iteration.
11284
11285         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
11286         fields of an enum.
11287
11288 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
11289
11290         * object.c (mono_value_box): Fix boxing of nullables.
11291
11292 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
11293
11294         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
11295         mono_module_handle that is defined by the linker; no initialization required.
11296         * coree.h: Remove mono_module_handle, add __ImageBase, update
11297         mono_image_open_from_module_handle.
11298         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
11299         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
11300         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
11301         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
11302         to 4 GB away from image base address. IA64 version is not tested but was very
11303         easy to implement and should work if we ever need it.
11304         * domain.c (mono_init_internal): Avoid system error message boxes.
11305         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
11306         with has_entry_point. Handle do_mono_image_load fauilre correctly.
11307         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
11308         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
11309         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
11310
11311         Contributed under MIT/X11 license.
11312
11313 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11314
11315         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
11316         as part of the private mono API.
11317         
11318         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
11319         Do proper argument checking for methods that belong to generic classes.
11320         Do proper type resolution for GMFH/2.
11321         Fixes #377324.
11322         
11323 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11324
11325         * verify.c (do_switch): Fix a memory corruption bug with
11326         the jump index is out of bound.
11327
11328 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11329
11330         * verify.c: Disable debug code.
11331
11332 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
11333
11334         * reflection.c (mono_image_get_methodbuilder_token): Use
11335         mono_image_get_methodspec_token_for_generic_method_definition
11336         instead of mono_image_get_memberref_token. We cache more memberef
11337         entries now.
11338
11339 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11340
11341         * verify.c: Inflate exception clause types.
11342         Fixes #402606.
11343         
11344 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11345
11346         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
11347         name.
11348
11349         * reflection.c (mono_image_get_ctorbuilder_token): Same.
11350
11351         * reflection.c (mono_image_create_method_token): Same.
11352
11353 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
11354
11355         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
11356         It does the same as mono_image_get_methodref_token but works on
11357         MethodBuilder.
11358
11359         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
11360         and always generate a methodspec. This follows the old behavior and fixes
11361         the regressions in System.Core. 
11362
11363 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11364
11365         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
11366         don't event mono_class_get () succeeds. Fixes #402182.
11367
11368 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11369
11370         * metadata-internals.h: Added MonoDynamicImage::methodspec
11371         hashtable to store methodspec tokens created for MethodBuilders.
11372
11373         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
11374         MethodBuilders as open instantiations if a methodspec was requested.
11375
11376         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
11377
11378         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
11379
11380         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
11381
11382         Fixes bug #349190.
11383
11384 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
11385
11386         * loader.c (method_from_methodspec): Avoid crashing if the
11387         method lookup fails.
11388
11389 2008-06-20  Dick Porter  <dick@ximian.com>
11390
11391         * socket-io.c (get_socket_assembly): Cope with Moonlight network
11392         classes being in a different assembly.  Fixes bug 399184.
11393
11394 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
11395
11396         * loader.c (mono_loader_init): Make this callable multiple times.
11397         (mono_dllmap_insert): Call mono_loader_init () so this works even before
11398         the runtime is initialized. Fixes #401755.
11399
11400 2008-06-19  Dick Porter  <dick@ximian.com>
11401
11402         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
11403         Fixes bug 349688.
11404
11405 2008-06-19  Dick Porter  <dick@ximian.com>
11406
11407         * socket-io.c:
11408         * icall-def.h: Implement Socket generic Send() and Receive()
11409         methods.  Fixes bug 395168.
11410
11411 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
11412
11413         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
11414
11415         Contributed under MIT/X11 license.
11416
11417 2008-06-18  Martin Baulig  <martin@ximian.com>
11418
11419         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
11420         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
11421         set to 80.0.  The debugger <-> runtime interface is now frozen as
11422         well.   
11423
11424         * mono-debug.c
11425         (mono_debug_debugger_version): Bump to 4.
11426
11427 2008-06-18  Martin Baulig  <martin@ximian.com>
11428
11429         * debug-mono-symfile.c
11430         (load_symfile): Don't check the minor version.
11431
11432         * debug-mono-symfile.h: Bump the version number to 50.0.
11433
11434 2008-06-18  Martin Baulig  <martin@ximian.com>
11435
11436         * debug-mono-symfile.c
11437         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
11438         minimum required version.
11439
11440 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11441
11442         * reflection.c (mono_custom_attrs_from_property): Fix support for
11443         retriveving cattrs of dynamic inflated generic types.
11444
11445         * reflection.c (mono_custom_attrs_from_event): Same.
11446
11447         * reflection.c (mono_custom_attrs_from_field): Same;
11448
11449         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11450
11451         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
11452         Moved to metadata.c.
11453
11454         * metadata.c: New functions to retrive the equivalent field, event
11455         of property from the generic type definition.
11456
11457         * metadata-internals.h: Added new functions from metadata.c.
11458
11459 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
11460
11461         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
11462         to cached in a mempool is used.
11463
11464         * metadata.c (free_generic_class): In some situations field generic_info type
11465         is not properly dup'ed and leads to double free'ing.
11466
11467         Fixes #400643.
11468
11469 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11470
11471         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
11472         this arguments (will be needed later for generic methods).
11473         Collect stats.
11474
11475 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11476
11477         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
11478         Create a static RGCTX invoke wrapper for methods which require it.
11479
11480 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11481
11482         * object.c, class-internals.h: New function for checking whether
11483         an individual field is special static.
11484
11485 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
11488         linear search since the table is sorted.
11489
11490         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
11491         Fixes #324180.
11492
11493 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
11496         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
11497
11498         * gc.c (mono_domain_finalize): Allow an infinite timeout.
11499
11500         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
11501         
11502         * threads.c (mono_thread_request_interruption): Get rid of locking, use
11503         InterlockedCompareExchange to query and modify 
11504         thread->interruption_requested.
11505
11506         * object-internals.h (struct _MonoThread): Change interruption_requested
11507         to a gint32 so it can be modified by atomic operations. Add 
11508         'critical_region_level' from the managed side, change small_id to a guint32,
11509         add new set of 'unused' fields.
11510
11511         * appdomain.c: Bump corlib version.
11512
11513 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11514
11515         * class.c (mono_class_from_name): Search modules as well. Fixes
11516         #322332.
11517
11518 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11519
11520         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
11521         templates.  Templates are generalized with an additional type_argc
11522         argument.  RGCTX templates have type_argc==0, MRGCTX templates
11523         have type_argc>0.
11524
11525         * domain-internals.h, domain.c: New hash table for looking up
11526         MRGCTXs.
11527
11528         * metadata.c, metadata-internals.h: Rename hash and equal
11529         functions for MonoGenericInst's and make them public.
11530
11531         * class-internals.h: New data structures for the MRGCTX.  Macros
11532         for distinguishing slots in the RGCTX and the MRGCTX.
11533
11534 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11535
11536         * object.c (mono_method_get_imt_slot): Put the same methods of
11537         different instantiations of the same generic interface in the same
11538         IMT slots, to make generic sharing simpler.
11539
11540 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11541
11542         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
11543
11544         * metadata.c (mono_metadata_field_info_with_mempool): Added.
11545         This function works just like mono_metadata_field_info, but
11546         accept a mempool as argument to be used allocating memory.
11547
11548         * marshal.c (mono_marshal_load_type_info): Use new function
11549         to load marshal data into image mempool.
11550
11551 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11552
11553         * class.c (mono_class_inflate_generic_type_with_mempool):
11554         This function allows to inflate a generic type using
11555         a mempool.
11556
11557         * class.c (inflate_generic_type): Take a mempool as argument
11558         and use it to do type dup'ing.
11559
11560         * class.c (mono_class_setup_fields): Field type for generic
11561         generic classes are allocated from the image mempool.
11562
11563         * metadata.c (free_generic_class): Inflated field type is
11564         now allocated in the image mempool.
11565
11566 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
11567
11568         * threads.c (thread_cleanup): Free MonoThread::name.
11569
11570 2008-06-12  Marek Habersack  <mhabersack@novell.com>
11571
11572         * appdomain.c (ensure_directory_exists): avoid unnecessary
11573         mkdir(2) calls when the shadow directory already exists.
11574         (mono_make_shadow_copy): copy also satellite assemblies from the
11575         private bin directories.
11576
11577 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11578
11579         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
11580         
11581         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
11582         a page boundary. Fixes #396219.
11583
11584 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11585
11586         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
11587         due to double-checked locking.
11588
11589 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11590
11591         * assembly.c (build_assembly_name): Release memory on failure.
11592
11593         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
11594
11595 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11596
11597         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
11598         memory on failure.
11599
11600 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11601
11602         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
11603         memory on failure.
11604
11605 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11606
11607         * loader.c (field_from_memberref): Check if field signature type is equal
11608         to the non-inflated type of the field. Fixes #398980.
11609
11610 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * assembly.c (mono_assembly_load_from_full): Call 
11613         mono_assembly_load_friends () outside the assemblies lock, since it can
11614         acquire the loader lock. Fixes #323696.
11615
11616         * reflection.c (resolve_object): Inflate the inst with the context for
11617         FieldOnTypeBuilderInst. Fixes #399010.
11618
11619 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11620
11621         * reflection.c (mono_image_get_field_on_inst_token): Don't
11622         inflate the field to encode it's signature. If it's a
11623         VAR or MVAR it should stay that way in the signature.
11624         Fixes #399047.
11625
11626 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11627
11628         * reflection.c (resolve_object): Release memory of inflated types.
11629
11630 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11631
11632         * loader.c (mono_method_get_signature_full): Remove assert about
11633         loading a methodspec to a generic method. We have such methods, such as
11634         System.Threading.Interlocked::CompareExchange<T>.
11635         This assert was removed since it crashes the verifier when it checks
11636         methods calling CompareExchange<T>.
11637
11638 2008-06-10  Marek Safar  <marek.safar@gmail.com>
11639
11640         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
11641         of Type array and not MonoType.
11642
11643 2008-06-10  Marek Habersack  <mhabersack@novell.com>
11644
11645         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
11646         <lupus@ximian.com>
11647
11648 2008-06-10  Martin Baulig  <martin@ximian.com>
11649
11650         * debug-mono-symfile.h
11651         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
11652         changes to the file format, but we were generating incorrect
11653         source file indices in the line number table due to a bug, which
11654         made backtraces report an incorrect source file.
11655
11656 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
11657
11658         * mono-debug.c: Moved mono_debug_free_method_jit_info from
11659         mini/debug-mini.c to here.
11660
11661         * mono-debug.c (il_offset_from_address): Free memory from find_method.
11662
11663         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
11664         use it to release structs returned by mono_debug_find_method.
11665
11666 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
11667
11668         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
11669         since it needs to set method->slot for all interface methods.
11670
11671 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11672
11673         * class-internals.h: Forgot to add.
11674
11675 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11676
11677         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
11678
11679         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
11680         Lookup the custom attributes from property_hash.
11681
11682         * reflection.c (mono_save_custom_attrs): Save the custom attributes
11683         in property_hash. Allocate all data using the image mempool.
11684
11685         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
11686         for dynamic_custom_attrs to checks if the image is dynamic.
11687
11688 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11689
11690         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
11691         assemblies array.
11692         
11693         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
11694         runtime functions while holding the domain assemblies lock.
11695
11696 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11697
11698         * verify.c: Reapplied the last bit of the reverted changes.
11699
11700 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
11701
11702         * verify.c: Reapplied more of the reverted changes.
11703
11704 2008-06-09  Martin Baulig  <martin@ximian.com>
11705
11706         * debug-mono-symfile.c (load_symfile): Check the major version
11707         first; if it's wrong, don't print the minor version in the error message.
11708
11709 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
11712         lock instead of the domain lock to avoid deadlocks, since the thread might
11713         already hold the loader lock.
11714
11715         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
11716         (mono_thread_attach): Ditto.
11717
11718         * monitor.c: Use a TLS variable for holding the current thread id instead
11719         of calling pthread_self ().
11720         (mono_monitor_init_tls): New internal function to initialize the TLS
11721         variable.
11722         (mono_monitor_try_enter_internal): Put the owner == id check after the
11723         owner == 0 check.
11724
11725         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
11726         missed optimizations when using gcc-4.3.
11727
11728 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
11729
11730         * reflection.c (mono_dynamic_image_free): Free the memory
11731         used by MonoGenericParam in MonoDynamicImage::gen_param.
11732
11733         * reflection.c (mono_reflection_setup_generic_class): Allocate
11734         container from mempool.
11735
11736         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
11737         container from mempool.
11738
11739 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11740
11741         * threads.c (mono_set_pending_exception): New internal function to set the
11742         pending exception of the current thread.
11743         (mono_thread_get_and_clear_pending_exception): Check for 
11744         thread->pending_exception as well.
11745
11746         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
11747
11748         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
11749         it can trigger a collection.
11750
11751 2008-06-06  Martin Baulig  <martin@ximian.com>
11752
11753         Merged the `debugger-kahalo' branch.
11754
11755         * mono-debug.h
11756         (MONO_DEBUGGER_VERSION): Bumped to 72.
11757
11758         * debug-mono-symfile.h
11759         (MonoSymbolFileMethodIndexEntry): Removed.
11760         (MonoSymbolFileMethodEntry): New public typedef.
11761         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
11762         (MonoSymbolFileSourceEntry): Remove everything except `index' and
11763         `data_offset'.
11764         (MonoSymbolFileMethodEntry): Removed.
11765         (MonoSymbolFileLexicalBlockEntry): Removed.
11766         (MonoSymbolFileLineNumberEntry): Removed.
11767         (MonoDebugLexicalBlockEntry): Removed.
11768         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
11769         removed `num_il_offsets' and `il_offsets'.
11770         (MonoSymbolFile): Replace `version' with `major_version' and
11771         `minor_version'.
11772         (MONO_SYMBOL_FILE_VERSION): Replace with
11773         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
11774         `MONO_SYMBOL_FILE_MINOR_VERSION'.
11775
11776         * debug-mono-symfile.c
11777         (mono_debug_symfile_lookup_location): Add support for the new line
11778         number table format.
11779
11780 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11781
11782         * metadata.c (free_generic_class): Release the inflated
11783         MonoClass of dynamic generic classes if it's not a generic
11784         type definition.
11785
11786 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11787
11788         * verify.c: Reapplied more of the reverted changes.
11789
11790 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11791
11792         * reflection.c (lookup_custom_attr): Clean the cached flag or
11793         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
11794         for SRE types.
11795
11796 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
11797
11798         * verify.c: Reapplied a small part of the reverted changes.
11799
11800 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11801
11802         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11803
11804         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
11805         previously in managed code.
11806         (mono_monitor_exit): Ditto.
11807         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
11808
11809         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
11810         the managed definition.
11811
11812 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11813
11814         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
11815
11816 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11817
11818         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
11819         
11820         * monitor.c: Add some micro optimizations.
11821
11822         * icall.c (type_from_typename): Handle 'bool'.
11823
11824 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
11825
11826         * verify.c: Implement constructor verification per P III 1.8.1.4.
11827         Fixes #396716.
11828
11829 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11830
11831         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
11832         holding the assemblies lock here too.
11833
11834 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11835
11836         * verify.c: Kill stack_top function.
11837
11838 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11839
11840         * verify.c: Kill stack_get function.
11841
11842 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11843
11844         * verify.c (mono_method_verify): Last change broke the build. Fixed.
11845
11846 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
11847
11848         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
11849         more reliable.
11850
11851         * verify.c (mono_method_verify): Inflate params and locals to avoid
11852         mismatch when checking for compatibility.
11853
11854 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
11855
11856         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
11857         Length prefix should be size in bytes. Fix bug #339530.
11858         
11859         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
11860         Length prefix should be size in bytes. Fix bug #339530.
11861
11862         Code is contributed under MIT/X11 license.
11863
11864 2008-06-05  Bill Holmes <billholmes54@gmail.com>
11865
11866         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
11867
11868         Contributed under MIT/X11 license.
11869
11870 2008-06-05  Martin Baulig  <martin@ximian.com>
11871
11872         * mono-debug-debugger.c
11873         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
11874
11875 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11876
11877         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
11878         while holding the assemblies lock to prevent deadlocks. Handle the case
11879         where the search hook returns NULL but the assembly was still loaded.
11880         Fixes #323696.
11881
11882         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
11883         modify domain state.
11884
11885 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
11886
11887         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
11888         * Makefile.am (pedump_LDADD): Post-process object files and
11889         add dtrace-generated object file, if necessary.
11890
11891         Code is contributed under MIT/X11 license.
11892
11893 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11894
11895         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
11896
11897 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11898
11899         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
11900
11901 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11902
11903         * threads.c: Try to free everything from the delayed free table
11904         when shutting down threads, and set the variable to NULL after the
11905         table is freed so that calling
11906         mono_thread_hazardous_try_free_all() when shutting down the root
11907         domain doesn't crash.
11908
11909 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
11910
11911         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
11912         the caller if resulting type was inflated.
11913
11914         * class.c (mono_class_create_from_typespec): Free the MonoType if it
11915         was inflated.
11916
11917         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
11918
11919
11920 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
11921
11922         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
11923         class library tests.
11924
11925         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
11926         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
11927         #396989.
11928
11929 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11930
11931         * domain.c, domain-internals.h: The JIT infos are now freed by the
11932         JIT info table code.  They are freed immediately if there only a
11933         single JIT info table in circulation.  If there is more, the free
11934         is delayed via a queue.
11935
11936         * threads.c, threads-types.h: New hazard pointer function for
11937         freeing all freeable delayed items in one sitting.
11938
11939 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11940
11941         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
11942
11943         * reflection.c (typebuilder_setup_properties): Same.
11944
11945         * reflection.c (typebuilder_setup_events): Same.
11946
11947 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11948
11949         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
11950         and use it for allocating memory.
11951
11952         * reflection.c (mono_marshal_spec_from_builder): Same.
11953
11954         * reflection.c: Change code to use new signatures.
11955
11956         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
11957
11958 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * decimal.c (rescale128): Put back one line which was accidently commented
11961         out.
11962         
11963         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
11964         to cause crashes.
11965
11966 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11967
11968         * reflection.c (mono_reflection_generic_class_initialize): Name must
11969         be always malloc'ed so we can free it later on. Do this for field, property
11970         and event.
11971
11972         * metadata.c (free_generic_class): Free field, property and event names.
11973
11974 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11975
11976         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
11977         instead of g_memdup.
11978
11979         * reflection.c (typebuilder_setup_fields): Same.
11980
11981 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11982
11983         * decimal.c (rescale128): Optimize this function a bit more.
11984
11985 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11986
11987         * metadata.c (free_generic_class): Release some memory from
11988         SRE generic classes.
11989
11990 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
11991
11992         * reflection.c (mono_image_get_generic_field_token): No reference
11993         to name is kept, free it.
11994
11995         * reflection.c (mono_reflection_generic_class_initialize): Free
11996         more memory of the inflated field.
11997
11998 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
12001         code.
12002
12003 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
12004
12005         * reflection.c (mono_dynamic_image_free): Release memory used by
12006         MonoDynamicImage::array_methods elements.
12007
12008         * reflection.c (assembly_add_win32_resources): Release memory after
12009         encoding.
12010
12011 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
12012
12013         * decimal.c (log2_32): Use an optimized version for this function too.
12014         
12015         * decimal.c (log2_64): Fix this on 32 bit machines.
12016
12017 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
12018
12019         * class.c (mono_dup_array_type): Implement allocation using a mempool.
12020
12021         * class.c (mono_metadata_signature_deep_dup): Same.
12022
12023         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
12024         a mempool.
12025
12026         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
12027
12028         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
12029
12030         * metadata-internals.h: Added mono_metadata_signature_dup_full.
12031
12032         * class-internals.h: Update signatures to take a MonoMemPool.
12033
12034 2008-06-02  Dick Porter  <dick@ximian.com>
12035
12036         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
12037         * icall-def.h: Add
12038         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
12039         FormatMessage API to get the error text.  Fixes bug 321827.
12040
12041 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
12042
12043         * decimal.c: Add some micro optimizations to make decimal operations faster.
12044
12045 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
12046
12047         * reflection.c (method_encode_clauses): Take a mempool
12048         as parameter and use it to allocate the clause array.
12049
12050         * reflection.c (mono_image_get_field_on_inst_token): Free
12051         the inflated type after encoding it.
12052
12053         * reflection.c (mono_dynamic_image_free): Free each element
12054         of MonoDynamicImage::gen_params.
12055
12056         * reflection.c (reflection_methodbuilder_to_mono_method):
12057         Allocate the generic param array from the mempool.
12058         Allocate signature params from the mempool.
12059
12060         * reflection.c (mono_reflection_generic_class_initialize):
12061         Free inflated fields after been used.
12062
12063 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12064
12065         * icall.c: Reapply the memory leak fixes as they no
12066         longer make mono crash.
12067
12068 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
12069
12070         * reflection.c (mono_type_get_object): Don't store the suplied
12071         MonoType with type_hash. A caller which pass a type that
12072         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
12073         might end with a pointer to freed memory.
12074         The solution is to use byval_arg or this_arg from the associated
12075         MonoClass of the supplied type.
12076
12077 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
12078
12079         * icall.c: Revert the rest of the last change as it breaks the build too.
12080
12081 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12082
12083         * icall.c: Revert a leak fix as it's breaking the build.
12084
12085 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12086
12087         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
12088
12089 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12090
12091         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
12092
12093 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
12094
12095         * icall.c: Fix some memory leaks.
12096
12097 2008-05-29  Dick Porter  <dick@ximian.com>
12098
12099         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
12100         async socket operations from the pending list when a socket
12101         closes.  Leaving it until the threadpool services the event
12102         exposes a race condition when a socket descriptor is reused.
12103         Fixes bug 377589.
12104
12105 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12106
12107         * object.c: Fix negative index check for array alocation.
12108
12109 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12110
12111         * icall.c, marshal.c: Delegate wrappers should skip visibility.
12112         This check is performed by the verifier for IL created delegates
12113         and by Delegate::CreateDelegate for programatically created ones.
12114         Fixes #372406.
12115
12116 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12117
12118         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
12119         Fix code to use mono_array_size_t instead of int.
12120
12121         Based on patch by Luis F. Ortiz.
12122         Contributed under X11 license.
12123         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12124
12125 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12126
12127         * icall.c: Added ves_icall_System_Array_GetLongLength and
12128         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
12129         arrays.
12130
12131         * icall.h: Export both new functions.
12132
12133         Based on patch by Luis F. Ortiz.
12134         Contributed under X11 license.
12135         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12136
12137 2008-05-28  Martin Baulig  <martin@ximian.com>
12138
12139         The debugger now requires exactly r103463.
12140
12141         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
12142         This version is not supported by the debugger, wait for 72.
12143
12144 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12145
12146         * object.h: Changed array related functions to use
12147         mono_array_size_t instead of guint32. Forgot to commit this file.
12148
12149         Patch by Luis F. Ortiz.
12150         Contributed under X11 license.
12151         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12152
12153
12154 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
12155
12156         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
12157         don't define it. Use the number literal instead.
12158
12159 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12160
12161         * icall.c: Changed array related functions to use
12162         mono_array_size_t instead of guint32.
12163
12164         * icall.c (ves_icall_System_Array_GetLength): Check for length
12165         overflow under MONO_BIG_ARRAYS.
12166
12167         Based on patch by Luis F. Ortiz.
12168         Contributed under X11 license.
12169         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12170
12171 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12172
12173         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
12174
12175         Based on patch by Luis F. Ortiz.
12176         Contributed under X11 license.
12177         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12178
12179 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12180
12181         * object.c, object.h: Changed array related functions to use
12182         mono_array_size_t instead of guint32.
12183
12184         Patch by Luis F. Ortiz.
12185         Contributed under X11 license.
12186         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12187
12188 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
12189
12190         * object.h: Introduced mono_array_size_t typedef. This must be used
12191         in all places an array length is expected. This is 64bits wide if
12192         MONO_BIG_ARRAYS is enabled.
12193
12194         Patch by Luis F. Ortiz.
12195         Contributed under X11 license.
12196         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
12197
12198 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * security-manager.c class.c: Set the class exception info by calling
12201         mono_class_set_failure ().
12202
12203         * class.c (mono_class_get_exception_data): New accessor function.
12204         (mono_class_set_failure): Store exception_data in the property hash.
12205
12206         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
12207         the struct as a property.
12208
12209         * loader.c (mono_get_method_full): Store the lookup result for method
12210         tokens in method_cache, the others in methodref_cache to decrease the memory
12211         usage of hash tables.
12212
12213         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
12214         (mono_image_init): method_cache is lazy inited now.
12215
12216         * metadata-internals.h (struct _MonoImage): Change method_cache to
12217         a MonoValueHashTable, add a separate methodref_cache.
12218
12219 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
12220
12221         * number-formatter.h: Fix tables to avoid arithemtic overflow in
12222           Double.ToString as exposed by Bug #383531.
12223
12224 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12225
12226         * number-formatter.h: Make some tables static.
12227
12228         * class.c (mono_method_set_generic_container): New accessor function.
12229         (mono_method_get_generic_container): Ditto.
12230
12231         * class-internals.h (struct _MonoMethod): Remove rarely used 
12232         'generic_container' field, store it in the property hash instead. Add 
12233         'is_generic' boolean field instead.
12234
12235         * image.c (mono_image_init): Initialize property_hash.
12236         (mono_image_close): Destroy property_hash.
12237
12238         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
12239         hold rarely used fields of runtime structures belonging to this image.
12240
12241         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
12242         to get/set method->generic_container.
12243
12244         * loader.c (mono_get_method_from_token): Avoid loading the method header for
12245         generic methods.
12246
12247 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
12248
12249         * class.c (mono_class_inflate_generic_method_full): Don't increase
12250         mono_stats.inflated_method_count for methods found in the cache.
12251
12252         * threads.c (mono_thread_request_interruption): Add a comment about 
12253         QueueUserAPC ().
12254
12255 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12256
12257         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
12258         interface_offsets_packed table.
12259         
12260         * class.c (mono_class_init): Remove some dead code.
12261
12262         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
12263         mono_class_setup_vtable () when CAS is active to detect security problems.
12264
12265 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
12266
12267         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
12268
12269         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
12270         parameters as it's irrelevant for delegate checking.
12271
12272 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12273
12274         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
12275
12276         * class.c (mono_class_init): Control the creation of a generic vtable using
12277         a global which is true by default, but set to false by the runtime startup code.
12278         
12279         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
12280         Disabled for now since it breaks the embedding API.
12281         Move the setup of class->methods for arrays to mono_class_setup_methods ().
12282         (mono_class_setup_methods): Add a memory barrier.
12283
12284         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
12285         when mono_class_init () doesn't compute the generic vtable.
12286         
12287 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12288         * profiler.c: Added mono_profiler_install_statistical_call_chain,
12289         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
12290         to support call chains (backtrace) in the stat profiler.
12291         * profiler.c, profiler-private.h: Likewise.
12292
12293 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12294
12295         * generic-sharing.c: Init generic class when a method of it is
12296         requested via a runtime generic context.
12297
12298 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
12301
12302         * reflection.c (mono_type_get_object): Add a FIXME.
12303
12304         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
12305
12306         * class.c (mono_class_get_method_by_index): New helper function, returning an
12307         entry in the class->methods array.
12308
12309 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12310
12311         * class.c (mono_class_init): Only do the array optimization for szarrays. 
12312         Avoid creating a generic vtable for generic instances as well.
12313         (mono_class_get_method_from_name_flags): Don't search in the metadata for
12314         generic instances.
12315
12316 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
12317
12318         * loader.c (mono_get_method_constrained): Inflate the signature
12319         with class context. Fix #325283.
12320
12321 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * object.c (mono_class_create_runtime_vtable): Add a comment.
12324
12325         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
12326         where needed.
12327         (setup_interface_offsets): Handle the case when this is called twice for arrays.
12328         (mono_class_setup_vtable_general): Add an assert.
12329         (mono_class_init): Avoid creating a generic vtable for arrays.
12330
12331         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
12332         here, let mono_class_init () do that.
12333
12334         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
12335         interfaces in mscorlib.
12336
12337         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
12338         interfaces. Add some comments.
12339         (mono_class_init): Call mono_class_setup_methods () here since it is no
12340         longer called by mono_class_setup_vtable ().
12341
12342         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
12343         not set in class->vtable.
12344         (mono_class_create_runtime_vtable): Reenable the disabled code.
12345
12346         * object.c (mono_class_create_runtime_vtable): Disable the last change for
12347         now as it causes some test failures.
12348
12349         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
12350         if using the vtable trampoline. Also remove some strange code which put the
12351         generic methods themselves into the vtable slots. Remove the AOT init_vtable
12352         stuff as it is no longer needed.
12353
12354 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
12355
12356         * pedump.c: Give make --verify all option check code as well.
12357         Using --verify code won't check for metadata now.
12358
12359 2008-05-19  Martin Baulig  <martin@ximian.com>
12360
12361         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
12362
12363         * mono-debug.c
12364         (_mono_debug_using_mono_debugger): New global variable; it's set
12365         directly by the debugger, so mono_debug_using_mono_debugger() also
12366         works after attaching.
12367
12368 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
12369
12370         * object.c (mono_class_create_runtime_vtable): Use memory barriers
12371         as we do double checked locking on MonoClass::runtime_info and
12372         MonoClassRuntimeInfo::domain_vtables.
12373
12374 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
12375
12376         * debug-helpers.c (print_field_value): Fix a warning.
12377
12378 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
12381         set in the AOT case.
12382
12383 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12384
12385         * class.c (mono_class_setup_vtable_general): Use memory barriers
12386         as we do double checked locking on MonoClass::vtable.
12387
12388 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
12389
12390         * reflection.c (resolve_object): Inflate only if the generic context
12391         is not null. Fixes #389886.
12392
12393 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
12394
12395         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
12396         instead of g_free.
12397
12398         Code is contributed under MIT/X11 license.
12399
12400 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12401
12402         * class.c: Revert unrelated change.
12403
12404 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12405
12406         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
12407         a generic instantiation, use mono_class_from_mono_type instead of playing
12408         with MonoType directly.
12409
12410 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
12411
12412         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
12413         checks must ignore generic instantiations, so mono_class_has_parent is not
12414         suitable. Fixes #390128.
12415
12416 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
12417
12418         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
12419         it to avoid registering tokens during metadata generation. Fixes #390023.
12420
12421 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12422
12423         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
12424         consistent.
12425
12426         Contributed under MIT/X11 license.
12427
12428 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
12429
12430         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
12431         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
12432         to fixup the EXE image.
12433         (mono_cleanup): Use mono_close_exe_image.
12434         (mono_close_exe_image): New function.
12435         * image.c: Include "marshal.h".
12436         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
12437         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
12438         counting when the image is loaded outside of mono_image_open_full. Set status
12439         based on GetLastError.
12440         * coree.c: Include required headers. Add init_from_coree.
12441         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
12442         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
12443         (_CorExeMain): Set init_from_coree.
12444         (CorExitProcess): Only call ExitProcess for now.
12445         (CorBindToRuntimeEx): New stub implementation.
12446         (CorBindToRuntime): New function.
12447         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
12448         (MonoFixupExe): ILONLY executables require no fixups.
12449         (mono_set_act_ctx): New function to set activation context.
12450         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
12451         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
12452         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
12453         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
12454         as MONO_INTERNAL.
12455         * domain-internals.h: Add mono_close_exe_image.
12456
12457         Contributed under MIT/X11 license.
12458
12459 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
12460
12461         * metadata.c (mono_metadata_compute_size): Correctly calculate field
12462         size for generic param and event tables. Fixes #388977.
12463
12464 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * loader.c (mono_method_signature): Use memory barriers because of the double
12467         checked locking pattern.
12468
12469         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
12470         aborting or aborted as well. Fixes #376391.
12471         
12472         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
12473         existing runtime state in the Suspend handler during shutdown.
12474
12475 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
12476
12477         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
12478
12479         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
12480         which are starting up or shutting down.
12481
12482         * threads.c (mono_threads_set_shutting_down): Don't return a value since
12483         this function never returns if the runtime is already shutting down.
12484
12485         * icall.c (ves_icall_System_Environment_Exit): Update after 
12486         mono_threads_set_shutting_down () signature change.
12487         
12488 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
12489
12490         * class.c: Added can_access_instantiation to verify if the instantiation
12491         is visible. Fix access check for nested types as they returned TRUE
12492         before doing type and generic instantiation visibility checks.
12493
12494 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12495
12496         * reflection.c (mono_reflection_create_generic_class): The created type
12497         must have a different container from its TypeBuilder. Otherwise they
12498         will end sharing generic arguments, which is wrong.
12499
12500         Due to the sharing, making a generic instance of the created type using
12501         the TypeBuider generic arguments resulted in the generic type definition
12502         been returned, which is wrong as well.
12503
12504         As a bonus the code was leaking the type_params array. This memory should
12505         be allocated from the image mempool.
12506
12507         This fixes bug #354047.
12508
12509 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
12510
12511         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
12512         to here         as they are now used in assembly.c new code.
12513         Added a skipverification flag to MonoAssembly.
12514         New internal function mono_assembly_has_skip_verification.
12515
12516         * assembly.c: New function mono_assembly_has_skip_verification. It checks
12517         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
12518         part of #387274.
12519
12520 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12521
12522         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
12523         needed. Fixes #387034.
12524
12525         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
12526
12527 2008-05-06  Miguel de Icaza  <miguel@novell.com>
12528
12529         * assembly.c (mono_assembly_load_reference): Prevent crash while
12530         disassembling Silverlight 2.0 executables while we still do not
12531         have GACed libraries.
12532
12533 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12534
12535         * reflection.c: Special case generic type definitions as well. Fixes #383444.
12536
12537 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
12540         of the dynamic case. Fixes #387404.
12541
12542 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12543
12544         *verify.c (mono_verifier_is_class_full_trust): If under
12545         verify_all and the verifier mode was not set, only
12546         gac and corlib types are fulltrust. This makes --verify-all
12547         usable to detect unverifiable code, which is the expected
12548         use case.
12549
12550 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12551
12552         * verify.h: Ops, commited the header with debug
12553         enabled.
12554
12555 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
12556
12557         * verify.c (merge_stack): Use the new value on unverifiable
12558         stack merges.
12559
12560         * verify.c (verify_type_compatibility_full): Comparison
12561         of nullable types can't use mono_class_is_assignable_from.
12562
12563         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
12564         that makes all verification errors be reported.
12565
12566         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
12567         mono_method_verify.
12568
12569 2008-05-05  Robert Jordan  <robertj@gmx.net>
12570
12571         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
12572         support for value types. See #386415.
12573
12574         * object.c: comments.
12575
12576         Code is contributed under MIT/X11 license.
12577
12578 2008-05-05  Martin Baulig  <martin@ximian.com>
12579
12580         * debug-mono-symfile.h
12581         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
12582         for old pre-terrania symbol files.
12583
12584 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12585
12586         * mono-config.c: Add ppc64 architecture.
12587
12588         Code is contributed under MIT/X11 license.
12589
12590 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
12591
12592         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
12593           PPC64 uses function descriptors as well.
12594
12595         Code is contributed under MIT/X11 license.
12596
12597 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
12598
12599         * object.c (compute_class_bitmap): Ignore literal static fields.
12600
12601         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
12602         var has an invalid format.
12603         (describe_ptr): Add some sanity checks for the vtable.
12604         (add_nursery_frag): Clear unused nursery fragments.
12605         (major_collection): Clear all remaining nursery fragments.
12606
12607 2008-05-03  Robert Jordan  <robertj@gmx.net>
12608
12609         * image.c, metadata-internals.h: add thunk_invoke_cache.
12610
12611         * marshal.c, marshal.h: implement
12612         mono_marshal_get_thunk_invoke_wrapper ().
12613
12614         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
12615
12616         Code is contributed under MIT/X11 license.
12617
12618 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12619
12620         * verify.c (do_leave): Empty the stack.
12621
12622 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
12623
12624         * class.c (mono_class_is_assignable_from): Variance
12625         doesn't work between reference and value types. For example,
12626         given type C<T+>, C<int32> is not assignable to C<object>.
12627         Break the argument checking loop on first error. 
12628
12629 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
12630
12631         * icall.c : base64_to_byte_array() needs some more strict
12632           check for sequence of '=' characters. Patch by Santa
12633           Marta (http://deee.g.hatena.ne.jp/santamarta).
12634
12635           Contributed under MIT/X11 license.
12636           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
12637
12638 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
12639
12640         * domain.c: Disable LoadLibrary support to fix Win32 build.
12641
12642         Code is contributed under MIT/X11 license.
12643
12644 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
12645
12646         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
12647         to help with cache behaviour.
12648
12649 2008-05-01  Miguel de Icaza  <miguel@novell.com>
12650
12651         * appdomain.c (mono_domain_from_appdomain): Add new accessor
12652         method. 
12653
12654 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
12655
12656         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
12657
12658 2008-05-01  Dick Porter  <dick@ximian.com>
12659
12660         * process.c (process_get_fileversion): Only pass 16 bits of
12661         language ID to VerLanguageName.  Fixes bug 381204.
12662
12663 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12664
12665         * verify.c (mono_method_verify): Fix the comparison
12666         operator for code bounds check.
12667
12668 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
12669
12670         * verify.c (mono_method_verify): Check the bounds of
12671         all access of the code array.
12672
12673 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
12674
12675         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
12676
12677 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * image.c (mono_image_strong_name_position): Fix return value when the rva is
12680         not valid.
12681
12682 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
12683
12684         * loader.c (mono_get_method_from_token, mono_method_signature): Add
12685         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
12686         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
12687         fixup main EXE images when using mono.exe for mixed-mode assembly support.
12688         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
12689         mono_runtime_load.
12690         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
12691         runtime initialization from metadata.
12692         * assembly.c: Remove obsolete ceGetModuleFileNameA.
12693         (mono_set_rootdir): Use mono_get_module_file_name.
12694         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
12695         handles.
12696         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
12697         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
12698         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
12699         MonoCLIImageInfo. Add support for module handles.
12700         (load_cli_header): Update mono_cli_rva_image_map signature.
12701         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
12702         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
12703         (mono_image_rva_map): Add support for module handles.
12704         (mono_image_ensure_section_idx): Add support for module handles.
12705         (mono_image_close): Add support for module handles.
12706         (do_load_header): Add support for module handles.
12707         (mono_image_open_from_module_handle): New function for internal use.
12708         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
12709         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
12710         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
12711         handles.
12712         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
12713         * image.h: Add mono_image_fixup_vtable.
12714         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
12715         support.
12716         * coree.h: New file.
12717         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
12718         unsupported native code.
12719         (mono_marshal_set_callconv_from_modopt): New function splitted from
12720         mono_marshal_get_managed_wrapper.
12721         (mono_marshal_get_managed_wrapper): Use
12722         mono_marshal_set_callconv_from_modopt.
12723         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
12724         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
12725         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
12726         that results in a deadlock when the runtime is loaded in _CorDllMain.
12727         * Makefile.am: Add coree.c and coree.h.
12728
12729         Contributed under MIT/X11 license.
12730
12731 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12732
12733         * generic-sharing.c: Search for type arguments in array element
12734         types as well.
12735
12736 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12737
12738         * class-internals.h, generic-sharing.c: New, small runtime generic context.
12739
12740         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
12741
12742         * object.c: Don't setup the RGCTX when the vtable is created,
12743         because we're setting it up lazily now.
12744
12745 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
12748         64 bit support.
12749
12750 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12751
12752         * verify.c (verify_class_for_overlapping_reference_fields): 
12753         If class is under fulltrust allow reference types to overllap
12754         if they have the same RVA.
12755
12756 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
12757
12758         * pedump.c: Added new flag valid-only, that makes the verifier
12759         behaves just like --security=validil. It won't fail type load
12760         due to unverifiable restrictions.
12761
12762 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12763
12764         * class-internals.h (struct MonoMethod): Added a verification_success
12765         field to cache verifier executions. Reduced MonoMethod:slot size by
12766         one bit.
12767
12768 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
12771         instead of a 'vt' argument to save an indirection and to allow these to be used
12772         for valuetypes.
12773         (scan_vtype): New helper function to scan an area using a gc descriptor.
12774         (mono_gc_wbarrier_value_copy): Implement this.
12775         (handle_remset): Add support for REMSET_VTYPE.
12776         (find_in_remset_loc): Ditto.
12777         (mono_gc_base_init): Allow some debugging options to be controlled through the
12778         use of the MONO_GC_DEBUG env variable.
12779         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
12780         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
12781
12782 2008-04-23  Martin Baulig  <martin@ximian.com>
12783
12784         * domain.c (mono_domain_create): Move the call to
12785         mono_debug_domain_create() down, after allocating the domain id.
12786
12787 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
12788
12789         verify.c (verify_class_for_overlapping_reference_fields): Skip
12790         static fields while verifying for overlapping fields as they
12791         don't matter at all.
12792
12793 2008-04-23  Marek Habersack  <mhabersack@novell.com>
12794
12795         * domain-internals.h: added a declaration of
12796         mono_make_shadow_copy.
12797
12798         * assembly.c (mono_assembly_open_full): shadow copying of
12799         assemblies moved to here, so that all the assemblies within the
12800         application domain's private binary directories can be
12801         processed. Fixes bug #380546
12802
12803         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
12804         mono_make_shadow_copy and made non-static. The decision whether
12805         to shadow-copy an assembly is made based on its location - it's
12806         copied if it's in one of the private application domain binary
12807         directories and its different to the target file in the shadow
12808         directory. Fixes bug #380546
12809
12810 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12811
12812         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
12813
12814         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
12815         types.
12816
12817         * reflection.c (mono_image_create_token): Handle 
12818         Method/ConstructorOnTypeBuilderInst.
12819         (resolve_object): Ditto.
12820         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
12821         so it can be called from resolve_object. Also handle the case when the inflated
12822         class already has its methods setup.
12823
12824 2008-04-21  Martin Baulig  <martin@ximian.com>
12825
12826         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
12827
12828 2008-04-20  Geoff Norton  <gnorton@novell.com>
12829
12830         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
12831         pointer dereference.
12832
12833 2008-04-15  Marek Habersack  <mhabersack@novell.com>
12834
12835         * appdomain.c (try_load_from): if IOMAP is in effect, call the
12836         portability API to look up the assembly file. Fixes behavior in
12837         situations when the application has a bin/ directory, but the
12838         assembly search patch refers to Bin/ (and thus the requested file
12839         name is Bin/SomeLibrary.dll). Fixes bug #379888
12840
12841 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
12842
12843         verify.c (mono_type_is_generic_argument): Extracted this check
12844         from a dozen places to here.
12845
12846         verify.c: Fixed all issues related to boxing generic arguments
12847         and their constraints.
12848
12849 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
12850
12851         verify.c (mono_class_interface_implements_interface): Fix win32 build.
12852
12853 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12854
12855         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
12856         isn't finished yet. Fixes #363447.
12857
12858 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
12859
12860         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
12861         Fixes #346419.
12862
12863 2008-04-13  Jb Evain  <jbevain@novell.com>
12864
12865         * domain.c: update the 2.1 profile versions.
12866         Merged from the Moonlight 2 branch.
12867
12868 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
12869
12870         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
12871         mscorlibs for the non-refonly case as well.
12872
12873         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
12874         in mono_assembly_load_from_full (). Fixes #378924.
12875
12876 2008-04-11  Geoff Norton  <gnorton@novell.com>
12877
12878         * icall.c: The global extern environ doesn't exist on Mac.  We
12879         need to call NSGetEnviron instead.
12880
12881 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12882
12883         verify.c: Add generic method constraint verification.
12884
12885 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12886
12887         class.c (mono_class_inflate_generic_method_full): Add a long
12888         explanation to the is_mb_open hack. Remove the FIXME.
12889
12890 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12891
12892         * verify.c (mono_method_verify): Mark all unknown opcodes
12893         as invalid. Mark jmp as unverifiable.
12894
12895 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12896
12897         * verify.c: Add code to do type constraint verification on class instances.
12898
12899         * verify.c (mono_verifier_verify_class): Use the type constraint 
12900         verification code.
12901
12902 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
12903
12904         * class.c (mono_class_get_field_default_value): Don't pass cindex
12905         as hint to mono_metadata_get_constant_index. The local is not initialized
12906         and should contain garbage most of the time. This could only work
12907         with a lot of luck.
12908
12909 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12910
12911         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
12912
12913 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
12914
12915         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
12916
12917         * class.c (mono_class_from_generic_parameter): Save the token of the
12918         generic param in MonoClass::sizes.generic_param_token.
12919
12920         * reflection.c (mono_custom_attrs_from_class): If the class type is
12921         VAR or MVAR retrieve the attributes of the generic param.
12922
12923 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12924
12925         * class.c (mono_class_init): Do class verification if the verifier
12926         is enabled.
12927
12928 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12929
12930         * verify-internal.h: Added mono_verifier_verify_class.
12931
12932         * verify.c: Added mono_verifier_verify_class. It checks for
12933         classes with explicit layout that have overlapping reference fields.
12934
12935         * pedump.c: Init the verifier state prior to verification. Fixed
12936         command line arguments.
12937
12938 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
12939
12940         * Makefile.am: Added verify-internals.h, hopefully fix the build.
12941
12942 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * verify-internals.h: Fix a warning.
12945
12946 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12947
12948         * verify-internals.h: New header with the verifier configuration
12949         extracted from mini.c.
12950
12951         * verify.c: Implemented the new functions exported by verify-internals.h.
12952
12953 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
12954
12955         * verify.c: Add proper verification of ckfinite.
12956
12957 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12958
12959         * verify.c (do_conversion): Improved error message to something
12960         more meanfull.
12961
12962         * verify.c (check_is_valid_type_for_field_ops): Fix to work
12963         with primitive types.
12964
12965 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12966
12967         * verify.c: Added tail prefix checking. Marked icall
12968         as unverifible.
12969
12970 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
12971
12972         * verify.c: Fix the detection of branches to the middle
12973         of an instruction.
12974
12975 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
12976
12977         * verify.c: Implemented verification of volatile. and
12978         unaligned. prefix. Check if a type is valid after retrieving it.
12979
12980 2008-04-01  Dick Porter  <dick@ximian.com>
12981
12982         * process.c (process_get_fileversion): If there's no string block,
12983         set the file language to en_US.  Fixes the other new part of bug
12984         374600.
12985
12986 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
12987
12988         * class.c: New functions mono_method_can_access_field_full and
12989         mono_method_can_access_method_full. They perform type visibility
12990         and type site check.
12991
12992         * class-internal.h: Added exported functions.
12993
12994         * verify.c: Use new functions to implement proper visibility checks.
12995
12996 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
12997
12998         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
12999
13000 2008-03-28  Dick Porter  <dick@ximian.com>
13001
13002         * process.c (process_get_fileversion): Use the first language ID
13003         we see, rather than insisting on an invariant language.  Fixes bug
13004         374600.
13005
13006 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
13007
13008         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
13009         the streams to fix reading of invalid memory later.
13010
13011         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
13012         to ease debugging.
13013
13014 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
13015
13016         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
13017         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
13018
13019 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
13020         * threads.h: Added MonoThreadManageCallback type and
13021         mono_thread_set_manage_callback prototype
13022         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
13023         (used to store the mono_thread_manage callback).
13024         * threads.c: Added mono_thread_set_manage_callback, and handle
13025         "MonoThread->manage_callback" in build_wait_tids.
13026
13027 2008-03-26  Dick Porter  <dick@ximian.com>
13028
13029         * process.c (process_get_fileversion): Set FileVersionInfo strings
13030         to Empty when the resource doesn't have the particular info.
13031         Fixes bug 355717.
13032
13033 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
13034
13035         * verify.c (mono_method_verify): Proper prefix validation.
13036
13037 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
13040         itself in a separate argument instead of throwing them. Fixes #373448.
13041
13042         * appdomain.c: Bump corlib version.
13043
13044 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
13045
13046         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
13047
13048 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
13049
13050         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
13051         version macros.
13052
13053 2008-03-20  Mark Probst  <mark.probst@gmail.com>
13054
13055         * generic-sharing.c, class-internals.h: Code for putting
13056         reflection types into the runtime generic context.
13057
13058 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
13059
13060         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
13061         Fixes #340662. 
13062
13063
13064 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
13065
13066         * verify.c (VerifyContext): Added instruction prefix data to the struct.
13067
13068         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
13069
13070         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
13071
13072         * verify.c (do_cast): Let the result value keep the boxed status.
13073
13074         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
13075
13076 2008-03-17  Jb Evain  <jbevain@novell.com>
13077
13078         * reflection.c: when running on a 2.0 runtime, emit
13079         unconditionally the #~ header version as 2.0, and the
13080         CLI header version as 2.5, for symmetry's sake with csc.
13081
13082 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * class.c: Remove the unused cache_interface_offsets stuff.
13085
13086         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
13087         profiler.c: Fix warnings.
13088
13089 2008-03-16  Mark Probst  <mark.probst@gmail.com>
13090
13091         * generic-sharing.c, class-internals.h: Support for putting
13092         methods into the runtime generic context.
13093
13094 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
13095
13096         * class.c (mono_class_setup_fields): Ignore calls made to this function for
13097         classes which are generic instances of not-yet finished typebuilders. Fixes
13098         #351172.
13099
13100         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
13101
13102 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
13105
13106         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
13107         field, replace it with a hash table in MonoDynamicImage.
13108
13109         * reflection.c (inflate_mono_method): Access the generic definition object from
13110         image->generic_def_objects instead of imethod->reflection_info.
13111
13112         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
13113
13114         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
13115         
13116         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
13117         function in reflection.c so it is easier to keep in sync with the dynamic image
13118         creation code.
13119
13120         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
13121         mono_image_close ().
13122
13123 2008-03-15  Mark Probst  <mark.probst@gmail.com>
13124
13125         * class.c (mono_class_generic_sharing_enabled): Disable generic
13126         sharing for all architectures except AMD64 and x86 to fix build.
13127
13128 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13129
13130         * verify.c: Use the generic definition MonoGenericContext when available.
13131         Remove code for checking generics instance compatibility in favor of
13132         mono_class_is_assignable_from.
13133
13134 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13135
13136         * marshal.c, marshal.h, metadata-internals.h, image.c,
13137         wrapper-types.h: New wrapper for invoking a shared static method
13138         without having to pass the runtime generic context argument.
13139
13140 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
13141
13142         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
13143
13144 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13145
13146         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
13147         
13148         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
13149         create a token from a FieldOnTypeBuilderInst.
13150         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
13151         (resolve_object): Ditto.
13152
13153         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
13154         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
13155
13156 2008-03-14  Martin Baulig  <martin@ximian.com>
13157
13158         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
13159
13160         * debug-mono-symfile.h
13161         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
13162         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
13163
13164 2008-03-10  Martin Baulig  <martin@ximian.com>
13165
13166         * debug-mono-symfile.h
13167         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
13168         `lexical_block_table_offset'.
13169         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
13170         `lexical_blocks'.
13171         (MonoSymbolFile): Added `version'.
13172
13173         * mono-debug.h
13174         (MonoDebugLexicalBlockEntry): Removed.
13175         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
13176         `lexical_blocks'.
13177
13178         * mono-debug.c (mono_debug_add_method): Don't compute lexical
13179         blocks here; the debugger now does this internally.
13180
13181 2008-02-27  Martin Baulig  <martin@ximian.com>
13182
13183         * object.c (mono_runtime_exec_main): Call
13184         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
13185         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
13186
13187 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13188
13189         * verify.c (verify_type_compatibility_full): Allow native int to be converted
13190         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
13191
13192 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
13193
13194         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
13195         ldftn with a virtual method.
13196
13197 2008-03-13  Geoff Norton  <gnorton@novell.com>
13198
13199         * decimal.c:  Only include memory.h if the platform has it.
13200
13201 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
13202
13203         * assembly.c, class.c, metadata-internals.h: make sure public key
13204         tokesns are compared in a case-insensitive way. Also, all
13205         the lookups in the GAC use a lowercase public key token
13206         (gaacutil already does the lowercasing on install). Fixes
13207         bug #369541.
13208
13209 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
13210
13211         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
13212         and return value.
13213
13214 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
13215
13216         * image.c: when someone loads a mscorlib from a file, return the
13217         currently loaded mscorlib (fixes bug #369253).
13218
13219 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13220
13221         * class.c: handle types with no parents by forcing them to have
13222         System.Object as a parent and marking them as broken (this currently
13223         allows the first part of bug #369173 to work as well, likely because
13224         we don't check for typeload exceptions everywhere yet).
13225
13226 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
13227
13228         * class.c: more complete check that types belong to corlib
13229         (fixes second part of bug #369173).
13230
13231 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
13232
13233         * generic-sharing.c:  Including glib.h for the MSVC builds to define
13234           "inline" to "__inline" before including mono-membar.h.
13235           
13236         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
13237           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
13238           MSVC builds.
13239
13240         Contributed under MIT/X11 license.
13241
13242 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13243
13244         * verify.c (do_invoke_method): Remove return type validation.
13245
13246         * verify.c (do_ret): Do return type validation at return site instead of
13247         call site.
13248
13249 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
13250
13251         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
13252
13253         * verify.c: Some todos cleaned and improved a few error messages.
13254
13255 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
13256
13257         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
13258
13259 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13260
13261         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
13262         system types correctly.
13263
13264         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
13265         function.
13266
13267 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13268
13269         * assembly.c (build_assembly_name): Fix a warning.
13270
13271 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
13272
13273         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
13274         the called function takes an object type argument. Fixes storing or
13275         valuetypes across remoting as well as reducing memory usage.
13276         * image.c, metadata-internals.h: remove now unused ldfld_remote and
13277         stfld_remote wrapper caches.
13278
13279 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13280
13281         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
13282         is not found.
13283
13284         * reflection.c (mono_image_register_token): New helper function to save
13285         a token->object mapping.        
13286
13287         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
13288         managed code.
13289
13290         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
13291         one dimension arrays. Fixes #367670.
13292         (mono_reflection_get_type_internal): Ditto.
13293
13294 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
13295
13296         * marshal.c: mono_load_remote_field_new() always returns object.
13297         so use the proper signature (fixes bug #366445).
13298
13299 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13300         
13301         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
13302         add an 'inline_failure' flag instead.
13303
13304 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13305
13306         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
13307         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
13308         contains the location of "this", used for exception handling.
13309
13310 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
13313         their size on all platforms for perf reasons.
13314
13315 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13316
13317         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
13318         object-internal.h
13319
13320         * object-internal.h: Same.
13321
13322 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13323
13324         * reflection.h: Fix the build I just broke.
13325
13326 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13327
13328         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
13329         Test if a token is valid, this remove explicit usage of 
13330         MonoDynamicImage::tokens from the verifier code.
13331
13332         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
13333
13334         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
13335         instead of direct access to MonoDynamicImage::tokens.
13336
13337 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13338
13339         * verify.c (token_bounds_check): Fix the build I just broke.
13340
13341 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
13342
13343         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
13344
13345         * verify.c (verifier_load_method): Fixed the errors message.
13346
13347         * verify.c (mono_method_verify): Fixed a debug message.
13348
13349 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
13350
13351         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
13352         mono-perfcounters.h, class-internals.h: support for predefined
13353         writable counters, query of categories and counters, bugfixes.
13354
13355 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13356
13357         * verify.c (do_refanytype): Verify the refanytype opcode.
13358
13359         * verify.c (mono_method_verify): Use do_refanytype.
13360
13361 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
13362
13363         * verify.c (do_mkrefany): Verify the mkrefany opcode.
13364
13365         * verify.c (mono_method_verify): Use do_mkrefany.
13366
13367 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
13368
13369         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
13370         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
13371         implementation.
13372
13373 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
13376         the type load exception.
13377
13378 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
13379
13380         * verify.c: Added a few FIXME for method signatures
13381
13382         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
13383         of mono_method_get_signature and get vararg call working. Removed unused
13384         checks for return value.
13385
13386         * verify.c (do_refanyval): Verify the refanyval opcode.
13387
13388         * verify.c (mono_method_verify): Implemented verification of arglist and
13389         use do_refanyval.
13390
13391 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13392
13393         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
13394         vtypes to marshal.c.
13395
13396         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
13397         it works for AOT as well.
13398
13399 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
13400
13401         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
13402         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
13403         the system time is adjusted.
13404
13405 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
13406
13407         * icall.c, icall-def.h: use the new time functions (fixes the
13408         non-monotonic behaviour of TickCount).
13409
13410 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13411
13412         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
13413         it breaks the build.
13414         
13415         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
13416         cattr is not finished yet.
13417
13418 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13419
13420         * verify.c: Proper token validation for field, method and type.
13421
13422 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
13423
13424         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
13425
13426         * loader.c (method_from_memberref): Generate type load error instead of method missing
13427         if the type is not found.
13428
13429 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13430
13431         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
13432         some of the conversions caused the generation of a marshal directive exception.
13433
13434 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13435
13436         verify.c: Report which exception should be thrown by the JIT.
13437         Added a lot of FIXME notes.
13438
13439 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13440
13441         * generic-sharing.c: Runtime generic context slots are not
13442         instantiated on init anymore.  Instead, provide function to do the
13443         instantiating on demand.
13444
13445         * class-internals.h: Added vtable to runtime generic context.
13446         Macros for encoding direct and indirect slot offsets in one
13447         guint32.
13448
13449 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13450
13451         * object.c, generic-sharing.c: Moved some generic sharing code
13452         from object.c to generic-sharing.c.
13453
13454         * generic-sharing.c: Added support for extensible runtime generic
13455         context.
13456
13457         * metadata-internals.h: Two new hash tables in MonoImage for
13458         extensible runtime generic context support.
13459
13460         * domain.c: Unregister generic vtables upon domain unloading.
13461
13462         * image.c: Destroy new hash tables upon image unloading.
13463
13464         * metadata.c: Unregister generic subclasses upon image unloading.
13465
13466         * class-internals.h: New data structure for runtime generic
13467         context template.  New fields in the runtime generic context for
13468         extensible part.
13469
13470         * Makefile.am: Added generic-sharing.c.
13471
13472 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
13473
13474         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
13475         there is a pending loader exception, raise it.
13476
13477         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
13478         same.
13479
13480         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
13481         same.
13482
13483         Fixes #363450.
13484
13485 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
13488
13489         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
13490         
13491         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
13492         ref-only requests for compatibility with MS.
13493
13494 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13495
13496         * reflection.c (mono_custom_attrs_from_method): Don't silently
13497         return an empty list for generic method instances.
13498         (mono_custom_attrs_from_param): Likewise.
13499
13500 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
13501             Raja R Harinath  <harinath@hurrynot.org>
13502
13503         Fix #354757
13504         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
13505         * class.c (mono_class_inflate_generic_method_full): Initialize it
13506         when a fully-open method is instantiated.
13507         * metadata.c (inflated_method_equal, inflated_method_hash): Update
13508         to new field.
13509         * reflection.c (inflate_mono_method): Don't create a temporary context.
13510
13511 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
13512
13513         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13514         Compute correct value, to prepare for imethod->reflection_info going away.
13515
13516 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13517
13518         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
13519
13520 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13521
13522         * verify.c: Implement skip visibility flag.
13523
13524 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
13525
13526         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
13527         which contains an extra field to tell the kind of exception that should be thrown.
13528
13529         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
13530
13531 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
13532
13533         * loader.c (mono_method_get_param_names): Initialize 'klass' after
13534         'method' is updated.
13535
13536 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
13537
13538         * class.c (mono_class_layout_fields): Set class->min_align for classes using
13539         explicit layout as well. Fixes #360375.
13540
13541 2008-02-11  Geoff Norton  <gnorton@novell.com>
13542
13543         * loader.c: Guard and dereference against inflated generic methods
13544
13545 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
13546
13547         * class.c: Include Retargetable spec in assembly name.
13548         * assembly.c: Always include PublicKeyToken spec in assembly name
13549         (with value "null" if assembly is not signed), and include
13550         Retargetable spec.
13551         * icall-def.h: Added icall for Assembly.get_fullname.
13552         * icall.c: Added icall returning the fullname of an assembly.
13553
13554 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13555
13556         * class.c (mono_class_setup_vtable_general): Add a missing call to
13557         mono_class_setup_methods () which is needed in the AOT case.
13558
13559 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
13560
13561         * verify.c (mono_type_get_stack_name): Added. Return the name for the
13562         stack type of the given MonoType.
13563
13564         * verify.c (verify_type_compatibility_full): Handle the void type.
13565
13566         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
13567         way stack merging works.
13568
13569         * verify.c (store_local): Improved verification message.
13570
13571         * verify.c (do_branch_op): If the merging is invalid, the method
13572         is unverifiable and not invalid. Improved error message.
13573
13574         * verify.c (merge_stacks): Properly merge a boxed valuetype and
13575         a reference type diferent than System.Object. Improved error
13576         message.
13577
13578 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
13579
13580         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
13581
13582         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
13583         type of an enum even if the argument is byref.
13584
13585         * verify.c: Replace all explicit uses of enumtype and enum_basetype
13586         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
13587
13588         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
13589
13590         *verify.c (verify_type_compatibility_full): Make enum types
13591         compatible with their base types.
13592
13593         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
13594         types are compatible for the special case of a boxed valuetype and
13595         System.Object.
13596
13597         * verify.c (verify_stack_type_compatibility): The function
13598         is_compatible_boxed_valuetype was extracted from here.
13599
13600         * verify.c (push_arg): Only set ctx->has_this_store if the method
13601         is not static.
13602
13603         * verify.c (do_ldelem): Fixed a typo in an error message and added
13604         strict check for mixing int32 and native int as the array type
13605         and ldelem type.
13606
13607         * verify.c (merge_stacks): Consider boxed valuetypes in the
13608         compatibility checks.
13609
13610 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
13611         * profiler.h: (MonoGCEvent): Added start-stop the world events.
13612
13613 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13614         *class.c: use_new_interface_vtable_code: renamed the env var to have
13615         a "MONO_" prefix, and fix the logic to enable it by default.
13616
13617 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
13618         *class.c:
13619         mono_class_setup_vtable_general: rewrote the way in which interface
13620         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
13621         makes the code more maintainable.
13622         For now the old code is still there, and can be activated setting
13623         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
13624
13625 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
13626
13627         * verify.c: guarded some debug functions around and #ifdef.
13628
13629         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
13630
13631 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
13634         changes for now since they seem to break too many things.
13635
13636 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13637
13638         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
13639         mono_marshal_find_nonzero_bit_offset): Added macro and function
13640         for finding the byte- and bit-offset of a bitfield within a
13641         struct.
13642
13643 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
13646         (mono_marshal_get_struct_to_ptr): Ditto.
13647
13648         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
13649         cctor_signature.
13650
13651 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13652
13653         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
13654         between methods for non-corlib types.
13655
13656 2008-02-02  Geoff Norton  <gnorton@novell.com>
13657
13658         * loader.c (mono_method_get_param_names): Populate the parameter name for 
13659         generic parameters as well. (Fixes #342536)
13660
13661 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
13662
13663         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
13664
13665         * verify.c (do_invoke_method): Fix for calling with byref structs.
13666
13667         * verify.c (do_cast): push a boxed value type based on the type token and not
13668         the type of stack.
13669
13670 2008-01-31  William Holmes  <billholmes54@gmail.com>
13671
13672         * process.c (process_module_string_read): Check the size returned form 
13673           VerQueryValue to avoid out of memory exception. 
13674
13675 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13678         Handle properly modules which are not in the moduleref table. Fixes
13679         #356938.
13680
13681 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
13684         the dynamic case which is now in managed code.
13685         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
13686
13687         * marshal.c (mono_string_to_bstr): Fix a warning.
13688         (init_com_provider_ms): Ditto.
13689
13690         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
13691
13692         * exception.c (mono_get_exception_out_of_memory): New helper function.
13693
13694 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
13695
13696         * marshal.c: Add support for BSTR marshalling
13697         using other COM systems.
13698
13699         Code is contributed under MIT/X11 license.
13700
13701 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13702
13703         * object.c (mono_runtime_invoke_array): reverted previous
13704         commit as it breaks the build.
13705
13706 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13707
13708         * object.c (mono_runtime_invoke_array): Verify arguments for
13709         invalid types. Fixes #348522.
13710
13711 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
13712
13713         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
13714         non-final virtual calls using call. 
13715
13716         * verify.c (do_invoke): fixed some TODOs.
13717
13718         * verify.c (push_arg): set has_this_store for "ldarga 0".
13719
13720 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13721
13722         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
13723         which belong to an inflated class. Fixes #356531.
13724
13725 2008-01-26  Robert Jordan  <robertj@gmx.net>
13726
13727         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
13728         which resort to FindFirstFile when a certain error condition
13729         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
13730         Code is contributed under MIT/X11 license.
13731
13732 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
13733
13734         * marshal.c (emit_marshal_string): Fix out string marshalling
13735         to use specified encoding. Fixes #323900.
13736
13737         Code is contributed under MIT/X11 license.
13738
13739 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
13740
13741         * class.c (mono_class_inflate_generic_method_full): Don't modify
13742         iresult->context after cache check.
13743
13744 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
13745
13746         * class.c (mono_class_inflate_generic_method_full): Change the
13747         struct assignments to memcpy for better visibility and add some comments.
13748
13749 2008-01-23  Dick Porter  <dick@ximian.com>
13750
13751         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
13752         procedure, and make it work on windows.
13753
13754 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
13755
13756         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
13757         a MonoReflectionTypeBuilder since it is always of that type.
13758
13759         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
13760
13761         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
13762
13763         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
13764         
13765         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
13766
13767         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
13768
13769         * reflection.c (mono_reflection_create_runtime_class): Remove already created
13770         instantiations from the type cache.
13771
13772 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13773
13774         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
13775
13776         * verify.c (do_unbox_value): push a controled mutability managed pointer.
13777
13778 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13779
13780         * verify.c (do_ldstr): added, verifies if the #US token is valid.
13781
13782         * verify.c (mono_method_verify): removed old TODO
13783
13784 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13785
13786         * verify.c (do_newobj): add visibility check.
13787
13788 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
13789
13790         * verify.c (do_load_function_ptr): add visibility check.
13791
13792 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
13793         *class.c:
13794         mono_generic_class_get_class: hook profiler events.
13795         mono_field_get_offset: added to support heap-shot in the new profiler.
13796         *class.h: exported mono_field_get_offset.
13797         * reflection.c:
13798         mono_reflection_setup_internal_class: hook profiler events.
13799
13800 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13801
13802         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
13803         argument here too and use it to avoid checking for pending exceptions if 
13804         possible.
13805
13806 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
13807
13808         * assembly.c (build_assembly_name): add arg for passing the assembly
13809         flags. Do not consider a PublicKey with value "null" valid.
13810         (mono_assembly_name_parse_full): added boolean argument that will be
13811         set if the assembly name contains a PublicKeyToken spec. Added support
13812         for the Retargetable spec for which only Yes or No are allowed as valid
13813         value. Consider assembly name invalid if Retargetable spec is set, but
13814         either version, culture or public key (token) are not specified.
13815         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
13816         with implementation in assembly.c.
13817         * icall.c (fill_reflection_assembly_name): also copy assembly flags
13818         from MonoAssemblyName.
13819         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
13820         introduced argument for mono_assembly_name_parse_full to know if the
13821         assembly name has a PublicKeyToken spec, and if it has instruct
13822         fill_reflection_assembly_name to use default value for keyToken (if
13823         PublicKeyToken is null).
13824
13825 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13826
13827         * verify.c (mono_method_verify): fixed ovf ops with
13828         float values. They are unverifiable now.
13829
13830 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
13831
13832         * class.c (set_failure_from_loader_error): add BadImageException to the
13833         list of exceptions that can cause a type to fail to load.
13834
13835         * class.c (mono_class_get_exception_for_failure): same.
13836
13837 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
13838
13839         * verify.c (in_any_exception_block): added, check if offset
13840         is part of any exception handling clause.
13841
13842         * verify.c (get_stack_type): added VAR and MVAR types.
13843
13844         * verify.c (do_stobj): better error messages.
13845
13846         * verify.c (do_cpobj): added, check cpobj.
13847
13848         * verify.c (do_initobj): added, check initobj.
13849
13850         * verify.c (do_sizeof): added, check sizeof.
13851
13852         * verify.c (do_localloc): added, check localloc.
13853
13854         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
13855
13856 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13857
13858         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
13859         save_lmf/restore_lmf opcodes.
13860
13861         * threads.c (mono_threads_install_notify_pending_exc): New function to
13862         install a callback notifying the JIT there is a pending exception on a thread.
13863         (mono_thread_request_interruption): Call the new callback.
13864         (mono_thread_get_and_clear_pending_exception): New function to return the
13865         exception pending on a thread.
13866
13867         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
13868         to turn off checking for pending exceptions.
13869         (mono_marshal_get_native_wrapper): Ditto.
13870
13871 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13872
13873         * threads-types.h: Get rid of the unnecessary extern declarations.
13874
13875 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
13876
13877         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
13878         return field from parent class if not private.
13879         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
13880         returns fields from parent class if they are not private.
13881         (method_nonpublic): added function to determine if a given method
13882         should be considered non-public. Returns false for private methods
13883         on parent class, and internal methods from parent on the 1.0 profile.
13884         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
13885         use method_nonpublic function to determine whether method should be
13886         returned.
13887         (property_accessor_public): use newly introduced method_nonpublic
13888         function to determine whether accessor is non-public. 
13889         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
13890         event from parent class if not private. Only return static event if
13891         Static flag is set, and only return static event from parent class if
13892         FlattenHierarchy flag is set.
13893         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
13894         include non-private events from parent class.
13895
13896 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13897
13898         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
13899         warning.
13900
13901 2008-01-16  Wade Berrier <wberrier@novell.com>
13902
13903         * security.c: Add assembly.h header to appease some warnings
13904
13905 2008-01-16  Dick Porter  <dick@ximian.com>
13906
13907         * process.c (process_module_string_read): Remove trailing null
13908         when saving string.
13909
13910 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13911
13912         * class-internals.h: A new data structure describing the layout of
13913         a runtime generic context (MonoRuntimeGenericContextTemplate).
13914
13915         * metadata-internals.h: Added a hash table to MonoDomain that maps
13916         from open generic classes to their runtime generic context
13917         templates.
13918
13919         * object.c: Building of the runtime generic context, including
13920         proper handling of generic type arguments of superclasses.
13921         Building of the runtime generic context according to the template.
13922
13923 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13924
13925         * class.c (mono_class_setup_fields): Set field.count for generic instances.
13926         Fixes #350856.
13927
13928         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
13929         mono_portability_find_file (). Fixes #325466.
13930         (mono_image_get_public_key): Fix a warning.
13931
13932 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13933
13934         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
13935         Fixes #353550.
13936         (mono_class_from_name_case): Ditto.
13937
13938 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
13939
13940         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
13941           common storage for the tables used in the System/NumberFormatter class.
13942
13943 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
13944
13945         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
13946
13947 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
13948
13949         * verify.c (get_boxable_mono_type): check if the token is valid.
13950
13951         * verify.c (set_stack_value): changed to add an error if an
13952         invalid type is set on stack. Changed all callers due to signature change.
13953
13954         * verify.c (do_stobj): implement stobj validation.
13955
13956 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
13959         set container->is_method, it was set earlier.
13960
13961         * metadata.c (type_in_image): Handle MVARs which belong to not finished
13962         generic methods.
13963
13964         * reflection.c (mono_reflection_initialize_generic_parameter): Set
13965         is_method of the generic container to TRUE for methods.
13966
13967 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13968
13969         * metadata.c (type_in_image): Handle type parameters properly.
13970
13971         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
13972         memory ownership of this structure.
13973
13974 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
13975
13976         * verify.c (get_boxable_mono_type): make typedref types been just
13977         unverifiable. check for void type.
13978
13979         * verify.c (do_unbox_any): added, verify opcode unbox.any.
13980
13981         * verify.c (do_load_function_ptr): accept method spec tokens.
13982
13983 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * marshal.c (mono_class_native_size): Always set *align even if this is called
13986         recursively.
13987
13988 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
13989
13990         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
13991         out-of-date.
13992
13993 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
13994
13995         * verify.c: removed some old unused tables. A huge bunch of small fixes
13996         to things found while testing the verifier with mono basic.
13997
13998         * verify.c (dump_stack_value): dump null literal flag to.
13999
14000         * verify.c (verify_type_compatibility_full): fix comparison
14001         for types that have a generic super type.
14002
14003         * verify.c (verify_stack_type_compatibility): fix compatibility
14004         between null literals and reference types. fix compatibility between
14005         boxed valuetypes and object. fix corner case test for enums.
14006
14007         * verify.c (do_cmp_op): proper verification of cgt.un in case
14008         of reference types.
14009
14010         * verify.c (do_invoke_method): fix error message.
14011
14012         * verify.c (do_store_indirect
14013
14014         * verify.c (check_is_valid_type_for_field_ops): proper verification
14015         of managed pointers to valuetypes and boxed valuetypes. proper verification
14016         of null literals.
14017
14018         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
14019         allow token to be a reference type.
14020
14021         * verify.c (do_cast): proper handling of boxes valuetypes.
14022
14023         * verify.c (do_stelem): proper handling of storing a boxed valuetype
14024         in object[].
14025
14026         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
14027         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
14028         fixed the decoding of unbox_any
14029
14030 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
14033
14034 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
14035
14036         * verify.c (do_newobj): do delegate verification.
14037
14038         * verify.c (verify_delegate_compatibility): perform delegate
14039         verification.
14040
14041         * verify.c (verify_ldftn_delegate): perform tests related to
14042         ldftn delegates.
14043
14044         * verify.c (mono_delegate_signature_equal): perform the
14045         slightly diferent signature comparison required by delegates.
14046
14047         * metadata.c (mono_metadata_type_equal_full): added and exported
14048         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
14049         allows signature only comparison.
14050
14051         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
14052         as MONO_INTERNAL.
14053
14054 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
14055
14056         * verify.c: added a bunch of stack_slot_* functions to
14057         make access to stack slot type easier. This is required to
14058         allow optional flags, like null literal, boxed value and
14059         this pointer.
14060         All access paths to IlStackDesc::stype have been changed 
14061         to use these new funcions.
14062         Removed a bunch of unused functions and cleared all warnings.
14063         This patch introduces the usage of the this pointer and 
14064         boxed value flags.
14065
14066 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
14069
14070 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
14073         match managed version.
14074
14075         * appdomain.c: Bump corlib version.
14076         
14077         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
14078         argument.
14079
14080 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
14081
14082         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
14083         Set public key token to zero-length byte array if assembly is not
14084         strongnamed.
14085
14086 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14087
14088         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
14089         writing a vtype array elem.
14090
14091 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
14092
14093         * assembly.c (build_assembly_name): return FALSE if length of token is
14094         not 16 (if not "null").
14095         (mono_assembly_name_parse_full): return FALSE if value of version,
14096         culture, token or key is 0.
14097         * icall.c (fill_reflection_assembly_name): add boolean arguments to
14098         specify whether public key and public key token must be set to default
14099         value (zero-length byte array) if not available. Set versioncompat to
14100         SameMachine. If public key is available or the default is set, then
14101         set PublicKey flag.
14102         (ves_icall_System_Reflection_Assembly_FillName): if no public key
14103         is available, use empty byte array as default value. On the 2.0
14104         profile, use default value for public key token if not set.
14105         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
14106         profile, use default value for public key if not set. On the 2.0
14107         profile, use default value for public key token if not set.
14108         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
14109         default values for public key and public key token.
14110
14111 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
14112
14113         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
14114         field to keep it in synch with the managed object.
14115
14116         * marshal.c (emit_marshal_object): Add support for byref marshalling of
14117         delegates. Fixes #351520.
14118
14119         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
14120         contains defined memory.
14121         
14122         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
14123
14124         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
14125         
14126         * sgen-gc.c (check_consistency): New helper function to do a consistency check
14127         of the GC data structures.
14128
14129         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
14130
14131         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
14132         
14133         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
14134         barrier.
14135         (mono_array_clone_in_domain): Ditto.
14136         (mono_array_clone_in_domain): Ditto.
14137
14138         * threads.c (start_wrapper): Register the thread start argument as a GC root.
14139         (cache_culture): Use a write barrier.
14140
14141         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
14142         (ves_icall_get_property_info): Ditto.
14143
14144         * object.h (MONO_STRUCT_SETREF): New macro.
14145
14146         * class-internals.h (MonoStats): Add some GC statistics.
14147
14148         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
14149
14150 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
14151
14152         * exception.c (mono_exception_from_name_two_strings):
14153         Break from loop after method is found.
14154
14155 2008-01-04  Dick Porter  <dick@ximian.com>
14156
14157         * process.c (process_module_string_read): Rename variable to
14158         reflect correct usage, after fixing bug 345972.
14159
14160 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
14161
14162         * verify.c (mono_type_create_fnptr_from_mono_method): 
14163         created a MonoType function pointer instance to be used during
14164         verification. The verifier releases this memory at end.
14165
14166         * verify.c (mono_method_is_constructor): extracted repeated
14167         checks for constructor into a single class.
14168
14169         * verify.c (do_push_field): use new extracted method
14170         for constructor check.
14171
14172         * verify.c (do_newobj): same.
14173
14174         * verify.c (do_ldftn): renamed to do_load_function_ptr
14175         and make it verify ldvirtftn too.
14176
14177         * verify.c (mono_method_verify: proper verification
14178         of ldvirtftn. release created MonoMethod instances.
14179
14180 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14181
14182         * verify.c (token_bounds_check): added.
14183
14184         * verify.c (do_ldftn): added.
14185
14186         * verify.c (mono_method_verify): proper verificartion of ldftn.
14187
14188 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
14189
14190         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
14191         than the table row count. It's the resposibility of the caller to
14192         make the bounds check and raise the correct error.
14193
14194         * metadata.c (mono_metadata_decode_row_col): Same.
14195
14196         * loader.c (mono_get_method_from_token): perform bounds check
14197         on token for methoddef table.
14198
14199 2007-12-29  Miguel de Icaza  <miguel@novell.com>
14200
14201         * icall.c
14202         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
14203         assert into a negative result, the managed code already coped with
14204         that.
14205
14206         Some folks on Windows reported this error. 
14207
14208 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
14209
14210         * appdomain.c: Bump corlib version.
14211         * icall.c:
14212         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
14213         CultureInfo.CreateCulture to create CultureInfo for name.
14214         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
14215         create CultureInfo for name. Fixes bug #347174.
14216
14217 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14218
14219         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
14220         flags.
14221
14222         * verify.c (is_valid_branch_instruction): allow branching to the
14223         first instruction of the protected block.
14224
14225         * verify.c (is_valid_cmp_branch_instruction): same.
14226
14227         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
14228         avoid double initialization.
14229
14230         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
14231         detect which cases the eval stack should just be copied.
14232
14233         * verify.c (mono_method_verify): check if the eval stack
14234         is empty when entering a protected block.
14235
14236 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
14237
14238         * verify.c: added is_clause_in_range, is_clause_inside_range,
14239         is_clause_nested and verify_clause_relationship. They perform
14240         the verifications stated in P1 12.4.2.7.
14241
14242         * verify.c (mono_method_verify): remove some unused variables,
14243         add the new exception clause checks, add instruction border
14244         checks for protected block start/end, improved some error 
14245         messages and fixed a bug in the way invalid instruction access
14246         is detected.
14247
14248 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
14249
14250         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
14251         from GC 7.0 if available.
14252
14253         * object.c: Remove an unused define.
14254         
14255         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
14256
14257         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
14258
14259         * null-gc.c (mono_gc_make_descr_for_array): Implement.
14260
14261         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
14262
14263         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
14264         to take the same arguments as the other make_descr functions.
14265
14266         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
14267
14268         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
14269         directly.
14270
14271         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
14272         mini.c.
14273
14274         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
14275         call to boehm-gc.c.
14276
14277         * boehm-gc.c (mono_gc_register_root): Fix a warning.
14278
14279         * null-gc.c (mono_gc_register_root): Fix a warning.
14280
14281         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
14282
14283         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
14284         (mono_gc_base_init): Call GC_init ().
14285
14286         * null-gc.c: Define mono_gc_register_root () as a no-op.
14287
14288         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
14289
14290 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
14291
14292         * verify.c: add prototype for merge_stacks at top
14293
14294         * verify.c (do_switch): added.
14295
14296         * verify.c (merge_stacks): on some cases the stack merging
14297         was not happening properly. Unequal stack sizes at merge
14298         points should be invalid.
14299
14300         * verify.c (mono_method_verify): added more debug info on stack state.
14301         verify switch properly.
14302
14303 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
14304
14305         * method-builder.h: New file, moved the mono_mb_ declarations here from 
14306         marshal.h.
14307
14308         * boehm-gc.c marshal.c: Include method-builder.h.
14309
14310         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
14311
14312         * marshal.c: Remove some code which is now in method-builder.c.
14313
14314 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
14315
14316         * method-builder.c: New file, extraction of the method builder functionality 
14317         from marshal.c.
14318
14319         * marshal.c: Move the mb functions into method-builder.c.
14320
14321         * marshal.h marshal.c: Export some mono_mb_... functions.
14322
14323         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
14324
14325         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
14326         the caller.
14327
14328         * class.c (mono_class_get_full): Check the token type in the dynamic case.
14329
14330         * loader.c (mono_field_from_token): Ditto.      
14331
14332         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
14333         type as well.
14334         
14335         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
14336         Fixes #342565.
14337
14338         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
14339         a helper function for setting it.
14340
14341         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
14342
14343         
14344         * assembly.c: Significally simplify code now that referenced assemblies are 
14345         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
14346
14347         * threads.h: Don't include  the internal threads-types.h header file. Fixes
14348         #349952.
14349
14350 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
14351
14352         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
14353         instructions that were target of branches or are at protected block boundaries.
14354
14355         * verify.c (in_same_block): handle filter clauses.
14356
14357         * verify.c (is_valid_branch_instruction): added. checks the target of
14358         instructions br or brtrue/false.
14359
14360         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
14361         binary branch instructions such as beq and bge.
14362
14363         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
14364         and made it pin the instruction as been part of the exception block.
14365
14366         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
14367         of in_same_block.
14368
14369         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
14370         of in_same_block.
14371
14372         * verify.c (do_ret): ret from a protected block is unverifiable and
14373         not invalid.
14374
14375         * verify.c (do_static_branch): verify br and br.s instructions.
14376
14377         * verify.c (merge_stacks): add extra param to support detection
14378         of branches in the middle of instructions.
14379         
14380         * verify.c (mono_method_verify): verify branches and exception blocks
14381         that target the middle of instructions. Proper verification of br and br.s.
14382
14383 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
14384
14385         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
14386         skip_visibility field.
14387         (reflection_methodbuilder_from_dynamic_method): Ditto.
14388
14389         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
14390         registrations. Fixes #348193.
14391
14392         * threads.h: Move the internal mono_thread_get_pending_exception () to
14393         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
14394
14395 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
14396
14397         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
14398         icall registration. Fixes #348193.
14399
14400         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
14401         for corlib classes into object. Fixes #349621.
14402
14403 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
14404
14405         * icall.c (property_accessor_nonpublic): new function to determine
14406         whether an accessor allows a property to be considered non-public.
14407         Returns false for private accessor(s) from parent class, and internal
14408         accessor(s) from parent on 2.0 profile (and higher).
14409         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
14410         to determine whether property should be included if NonPublic flag
14411         is set. Fixes bug #349078.
14412
14413 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
14414
14415         * verify.c (init_stack_with_value): added.
14416
14417         * verify.c (mono_method_verify): extracted common
14418         code for exception initialization into init_stack_with_value.
14419
14420         * verify.c (mono_method_verify): initialize the exception
14421         for handler clauses as well.
14422
14423         * verify.c (mono_method_verify): fix the exception clause
14424         ordering rules, it should use handler end offset and not
14425         start offset.
14426
14427 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
14428
14429         * rawbuffer.c: remove useless warning.
14430
14431 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
14432
14433         * threads.h, threads-types.h: move functions to the correct header
14434         (fixes bug#349952).
14435
14436 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14437
14438         * verify.c (mono_method_verify): proper verification
14439         of exception handling clauses ranges and fallthru in
14440         and out of protected blocks.
14441
14442 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14443
14444         * verify.c (mono_method_verify): fixed compilation issue.
14445
14446 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
14447
14448         * verify.c (mono_method_verify): a printf slipped in, changed
14449         to use verifier debug macro.
14450
14451 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
14452
14453         * verify.c (is_correct_leave): check for filter clauses.
14454
14455         * verify.c (do_filter): added.
14456
14457         * verify.c (mono_method_verify): property verification of leave.
14458
14459
14460 2007-12-18  Mark Probst  <mark.probst@gmail.com>
14461
14462         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
14463         Win32 build, until we figure out how to do the proper thing on
14464         Win32.
14465
14466 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
14467
14468         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
14469         by the previous patch.
14470         
14471         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
14472         the assembly resolve handler for refonly assemblies.
14473
14474 2007-12-17  Mark Probst  <mark.probst@gmail.com>
14475
14476         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
14477         Make sure only one thread is allowed to commence shutdown, and
14478         don't allow new threads to be started once shutdown is in
14479         progress.
14480
14481 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
14482
14483         * verify.c (is_correct_endfilter): added.
14484
14485         * verify.c (is_unverifiable_endfilter): added.
14486
14487         * verify.c (do_endfilter): added.
14488
14489         * verify.c (mono_method_verify): property verification of endfilter
14490         and fixed a corner case or endfinally.
14491
14492 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
14493
14494         * verify.h: new flags to support fail fast of unverifiable code and
14495         do non-strict verification. Non-strict verification is required to
14496         have MS runtime compatibility. There are a huge amount of unverifiable
14497         code that it accepts as verifiable. The strict mode verifies the code
14498         as the specs says.
14499         Non-strict mode will be required in cases where code needs to be
14500         accepted as verifiable but fails under strict mode.
14501
14502         * pedump.c: added support to fail fast and non-strict verification.
14503
14504         * verify.c: added support for both fail fast and non-strict verification.
14505
14506 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
14507
14508         * verify.c (is_correct_endfinally): added.
14509
14510         * verify.c (mono_method_verify): property verification of endfinally.
14511
14512 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14513
14514         * verify.c (in_any_block): check for filter clauses.
14515
14516         * verify.c (is_correct_rethrow): added.
14517
14518         * verify.c (mono_method_verify): property verification of rethrow.
14519
14520         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
14521
14522 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14523
14524         * verify.c (do_throw): added.
14525
14526         * verify.c (mono_method_verify): property verification of throw
14527
14528 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
14529
14530         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
14531         assemblies. Fixes #346425.
14532
14533 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
14534
14535         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
14536         FieldBuilders.
14537
14538         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
14539
14540         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
14541         prevent asserts when this is called with a token which might not be valid.
14542
14543         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
14544         lookup_dynamic_token_class with valid_token == FALSE.
14545
14546         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
14547
14548         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
14549
14550         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14551         
14552 2007-12-10  Mark Probst  <mark.probst@gmail.com>
14553
14554         * gc.c: Don't delay threadpool thread finalization unless Mono is
14555         shutting down.
14556
14557 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14558
14559         * threads.c: turn an assert into a non-fatal warning.
14560
14561 2007-12-09  Robert Jordan  <robertj@gmx.net>
14562
14563         * icall.c (GetVirtualMethod): Add missing argument validation.
14564
14565 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14566
14567         * verify.c (do_cast): added.
14568
14569         * verify.c (mono_method_verify): property verification of castclass and isinst.
14570
14571
14572 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14573
14574         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
14575
14576         * verify.c (do_stelem): added.
14577
14578         * verify.c (mono_method_verify): property verification of stelem.X.
14579
14580 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14581
14582         * class.c, class-internals.h: Introduce an environment variable
14583         (MONO_GENERIC_SHARING) through which the extent of generic code
14584         sharing can be controlled (share all classes, share only corlib
14585         classes, or share nothing).
14586
14587         * object.c: Only create runtime generic context for classes for
14588         which sharing is enabled.
14589
14590 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14591
14592         * verify.c (do_ldelem): refactor it to work with ldelem.any.
14593
14594         * verify.c (mono_method_verify): property verification of ldelem.any.
14595
14596 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
14597
14598         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
14599         added ldelem.X opcodes.
14600
14601         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
14602
14603         * verify.c: proper verification of ldelem.X 
14604
14605 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14606
14607         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
14608
14609 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14610
14611         * verify.c (mono_method_verify): null literal requires special handling,
14612         the value pushed on stack need to be flagged as so.
14613
14614         * verify.c (do_ldelema): Verify ldelema properly.
14615
14616 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
14617
14618         * verify.c: Verify ldlen properly.
14619
14620 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
14621
14622         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
14623         to the target object's type. Fixes #346160.
14624
14625 2007-12-05  Dick Porter  <dick@ximian.com>
14626
14627         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
14628         Solaris needs the same workaround as BSD-derived systems.  Fixes
14629         bug 323524, patch by Burkhard Linke
14630         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
14631
14632 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
14633
14634         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
14635         handle to use when error dialog is shown; otherwise, update mask
14636         to show no error dialog when an error occurs.
14637
14638 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14639
14640         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
14641
14642         * class.c (mono_class_get_field_default_value): New helper function to initialize
14643         field->def_type and field->data.
14644
14645 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14646
14647         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
14648         the general one.
14649
14650         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
14651
14652         * marshal.c: Avoid depending on delegate->method_info being set.
14653
14654         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
14655         
14656         * object.c (mono_delegate_ctor): Set delegate->method.
14657
14658         * object-internals.h (struct _MonoDelegate): Add 'method' field.
14659
14660         * appdomain.c: Bump corlib version.
14661
14662 2007-11-27  Raja R Harinath  <harinath@gmail.com>
14663
14664         * metadata.c (mono_generic_inst_equal_full): Short-circuit
14665         equality check if we're comparing canonicalized MonoGenericInsts.
14666
14667 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * class.c (generic_array_methods): Call mono_class_setup_methods () before
14670         accessing class->methods.
14671
14672 2007-11-22  Dick Porter  <dick@ximian.com>
14673
14674         * threads.c: Ensure that the synch_cs is set before trying to use
14675         it.
14676
14677 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
14678
14679         * profiler.c: r89126 broke the statistial profiler, unbreak.
14680
14681 2007-11-22  Martin Baulig  <martin@ximian.com>
14682
14683         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
14684
14685         * mono-debug.c
14686         (mono_debug_debugger_version): Bump to 3.
14687         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
14688         -> mono_debugger_class_initialized().
14689
14690         * mono-debug-debugger.c
14691         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
14692
14693         * class.c
14694         (mono_debugger_start_class_init_func): Removed.
14695         (mono_debugger_class_loaded_methods_func): Added.
14696         (mono_class_setup_methods): Call it here.
14697
14698 2007-11-22  Martin Baulig  <martin@ximian.com>
14699
14700         * mono-debug.c
14701         (mono_debug_add_delegate_trampoline): New public method.
14702         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
14703
14704         * mono-debug.h
14705         (MonoSymbolTable): Added `global_data_table'.
14706         (MonoDebuggerTypeKind): Removed.
14707
14708 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
14709
14710         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
14711         these methods.
14712
14713         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14714         
14715 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
14716
14717         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
14718
14719 2007-11-20  Martin Baulig  <martin@ximian.com>
14720
14721         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
14722
14723         * mono-debug-debugger.c
14724         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
14725         (mono_debugger_remove_breakpoint): Likewise.
14726         (mono_debugger_check_breakpoints): Likewise.
14727         (mono_debugger_register_class_init_callback): New public method.
14728         (mono_debugger_remove_class_init_callback): Likewise.
14729         (mono_debugger_add_type): Likewise.
14730
14731         * mono-debug-debugger.h
14732         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
14733
14734 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
14735
14736         * class.c: more interface implementations needed for the
14737         array enumerator (fixes bug #341112).
14738
14739 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
14740
14741         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
14742         fix ParamName of ArgumentNullExceptions.
14743
14744 2007-11-17  Miguel de Icaza  <miguel@novell.com>
14745
14746         * reflection.c (mono_reflection_encode_sighelper): Generate the
14747         modopts and modreqs.   I have a useless test that crashes monodis,
14748         but that shows the code working.
14749
14750 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
14753         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
14754
14755 2007-11-15  Dick Porter  <dick@ximian.com>
14756
14757         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
14758         When joining a thread, it's the thread that's calling Join that
14759         gets WaitSleepJoin state not the target.  Fixes the standalone
14760         test case in bug 334740, and hopefully the whole bug too.
14761
14762 2007-11-15  Dick Porter  <dick@ximian.com>
14763
14764         * process.c: Read file version info from the files pointed at by
14765         process modules, not the current process.  Fixes bug 315969.
14766
14767         Use windows typedef names in some places to fix warnings on the
14768         windows build.
14769
14770 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14771
14772         * image.c, metadata-internals.h: Added a generic_class_cache hash
14773         to MonoImage for looking up generic classes when sharing generics.
14774
14775 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14776
14777         * sgen-gc.c: warning cleanups.
14778
14779 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
14780
14781         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
14782         inherited properties.
14783
14784 2007-11-14  Mark Probst  <mark.probst@gmail.com>
14785
14786         * object.c, class-internals.h: Added more information to the
14787         runtime generic context.
14788
14789 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14790
14791         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
14792         instead of just the target method. Generalize the abstract method handling to
14793         handle any non-static method.
14794
14795         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14796         mono_marshal_get_delegate_invoke () signature change.
14797
14798 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14799
14800         * class.c, class-internals.h: Made
14801         mono_type_get_basic_type_from_generic () public.  Fixed member
14802         access check for shared generics.
14803
14804         * loader.c: Don't insert field into field cache if it's part of a
14805         non-inflated generic class.
14806
14807         * domain.c, domain-internals.h: The generic sharing context is now
14808         part of the jit info data structure.  Added two accessor
14809         functions.
14810
14811 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14812
14813         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
14814         the array Get/Set/Address methods, since the JIT inlines them.
14815
14816         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
14817
14818         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
14819         (mono_image_init): Initialize runtime_invoke_direct_cache.      
14820
14821         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
14822         mono_marshal_get_delegate_invoke signature change.
14823
14824         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
14825         an additional argument. Add support for invoking abstract methods.
14826
14827         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
14828
14829         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
14830
14831 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14832
14833         * class.c: Do field layout for open generic classes as well.
14834
14835 2007-11-09  Mark Probst  <mark.probst@gmail.com>
14836
14837         * gc.c, gc-internal.h: Don't finalize threadpool threads with
14838         other objects, because the threadpool is still around.  Put them
14839         in a list instead and after finalizing all other objects in the
14840         root domain shut down the thread pool and then finalize the
14841         threads.  Fixes bug #337383.
14842
14843         * threads.c, thread-types.h: New mono_thread_create_internal()
14844         function for marking a thread with the threadpool flag before it
14845         started.  Set synch_cs to NULL after freeing it.
14846
14847         * threadpool.c: Mark threadpool threads before they start.
14848
14849 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14850
14851         * reflection.h, reflection.c: don't export random functions
14852         and lazy load dbnull and missing objects.
14853
14854 2007-11-07  Jonathan Chambers <joncham@gmail.com>
14855
14856         * class.c: Initialize COM types if COM interfaces
14857         are present (not just COM classes).
14858         
14859         Code is contributed under MIT/X11 license.
14860
14861 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14862         * reflection.c:
14863         create_dynamic_mono_image: hook module profiler events (dynamic case).
14864         mono_image_basic_init: hook assembly profiler events (dynamic case).
14865
14866 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14867         * profiler.c:
14868         simple_appdomain_unload: completely terminate the profiler
14869         instead of only processing the statistical samples.
14870         simple_shutdown: make sure this is really called exactly once,
14871         even in multithreaded applications, and always listen to
14872         appdomain events.
14873         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
14874         here, the "[un]load" functions will do it.
14875         Fixes bugs #333791 and #325261.
14876
14877 2007-11-07  Geoff Norton  <gnorton@novell.com>
14878
14879         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
14880         rather than depend on __APPLE__.
14881
14882 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14883
14884         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
14885
14886 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
14887
14888         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
14889         UTF16 MonoString. Fix the crash from bug #335488
14890
14891 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
14892
14893         * marshal.c: Correct (for non-Win32 OS) length != size in 
14894         mono_string_from_bstr. Fix #339530.
14895
14896 2007-11-06  Geoff Norton  <gnorton@novell.com>
14897
14898         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
14899         to succeed
14900
14901 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
14902
14903         * process.c: Added run-time GetProcessId API detection for Windows.
14904
14905 2007-11-04  Miguel de Icaza  <miguel@novell.com>
14906
14907         * reflection.c  (mono_param_get_objects): If a parameter has the
14908         attribute [System.Runtime.InteropServices.Optional] we should
14909         set the DefaultValue of the ParameterInfo to be
14910         System.Reflection.Missing instead of DBNull.
14911
14912         See bug #339013.
14913
14914         (mono_get_reflection_missing_object): New method,
14915         returns the System.Reflection.Missing.Value singleton instance.
14916
14917 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14918
14919         * culture-info-table.h : regenerated.
14920
14921 2007-11-02  Jonathan Chambers <joncham@gmail.com>
14922
14923         * icall.c: Use GetEnvironmentStrings on windows
14924         so we are using the same environment block as 
14925         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
14926         #333740.
14927         
14928         Code is contributed under MIT/X11 license.
14929
14930 2007-10-31  Martin Baulig  <martin@ximian.com>
14931
14932         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
14933
14934         * mono-debug-debugger.h
14935         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
14936
14937 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
14938
14939         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
14940         classes.
14941
14942 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
14943
14944         * culture-info-table.h : regenerated.
14945
14946 2007-10-30  Robert Jordan  <robertj@gmx.net>
14947
14948         * icall-def.h, icall.c:
14949         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
14950
14951         Code is contributed under MIT/X11 license.
14952
14953 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14954
14955         * class.c (mono_class_setup_vtable): Find the inflated methods in the
14956         inflated class instead of inflating them again.
14957         
14958         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
14959         dynamic case.
14960
14961         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
14962         Call setup_supertypes () after klass->parent is set.
14963         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
14964
14965         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
14966         for inflated instances of not yet created dynamic generic classes.
14967         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
14968         times from inflated_method.
14969         (methodbuilder_to_mono_method): Ditto.
14970
14971 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
14972
14973         * gc.c: code cleanup and removed old untested option of not creating the
14974         finalizer thread.
14975
14976 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
14977
14978         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
14979         creating a jump trampoline for dynamic methods.
14980
14981 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
14982
14983         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
14984         generic TypeBuilders when called from another method of the same type (bug #335131).
14985
14986
14987 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
14990         doesn't seem to work perfectly.
14991         
14992         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
14993         called multiple times.
14994         (methodbuilder_to_mono_method): Ditto.
14995         (resolve_object): Inflate FieldBuilder's.
14996
14997 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14998
14999         * string-icalls.c, string-icalls.h, appdomain.c: patch from
15000         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
15001         RemoveEmptyEntries in the string.Split implementation (bug #322375).
15002
15003 2007-10-26  Dick Porter  <dick@ximian.com>
15004
15005         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
15006         Thread initialisation changes
15007
15008 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
15009
15010         * verify.c: fix compatibility check between arrays and System.Array
15011
15012 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
15013
15014         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
15015         too. Fixes #336999.
15016
15017 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * object.c (mono_value_box): Use typed allocation here.
15020
15021 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
15022
15023         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
15024         trampoline instead of compiling the method right away.
15025
15026         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
15027
15028 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
15029
15030         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
15031         related fields for dynamic classes. Fixes #334493.
15032
15033 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
15034
15035         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
15036         
15037         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
15038
15039         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
15040         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
15041
15042         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
15043
15044         * reflection.c (create_generic_typespec): Initialize klass->generic_container
15045         if needed.
15046         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
15047
15048 2007-10-18  Jonathan Chambers <joncham@gmail.com>
15049
15050         * marshal.c: Use correct key when removing item
15051         from ccw_hash.
15052         
15053         Code is contributed under MIT/X11 license.
15054
15055 2007-10-17  William Holmes  <billholmes54@gmail.com>
15056
15057         *marshal.c: Adding a case to marshal booleans to U1
15058
15059         Code is contributed under MIT/X11 license.
15060
15061 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
15062
15063         * class.c (mono_class_from_name): Search the modules compromising dynamic
15064         assemblies. Fixes #331601.
15065
15066 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
15067
15068         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
15069         exception if the type name contains an assembly component. Fixes #334203.
15070
15071         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
15072         modules inside dynamic assemblies. Fixes #334200.
15073         
15074         * reflection.c: Set image->public_key and image->public_key_length;
15075
15076         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
15077         fields.
15078
15079         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
15080         
15081 2007-10-16  Mark Probst  <mark.probst@gmail.com>
15082
15083         * metadata.c: Implemented correct comparing of generic classes.
15084         An inflated generic class can be equal to a non-inflated one if it
15085         is inflated with generic type variables as type arguments.  Fixes
15086         bug #333798.
15087
15088 2007-10-15  Dick Porter  <dick@ximian.com>
15089
15090         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
15091         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
15092         81646.
15093
15094         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
15095         instead of a monitor lock.  This means that monitor_try_enter and
15096         co can set the thread state safely.
15097         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
15098         thread_interrupt_requested, so interrupt actually works.
15099
15100         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
15101         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
15102         state accessor function
15103
15104 2007-10-15  Martin Baulig  <martin@ximian.com>
15105
15106         * mono-debug.h
15107         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
15108         the debugger with the current runtime.
15109
15110 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15111
15112         * object.c, object-internals.h: added the ability to set a single
15113         trampoline for all the slots in a vtable.
15114
15115 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15116
15117         * marshal.c: deal with a possible race condition during multicast
15118         delegate invocation.
15119
15120 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15121
15122         * class.c: ensure value type methods don't have the synchronized
15123         flag set.
15124
15125 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
15126
15127         * string-icalls.c, string-icalls.h: reverted unapproved patch that
15128         breaks the build.
15129
15130 2007-10-11  Joel Reed  <joelwreed@comcast.com>
15131
15132         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
15133         to take an options parameter so that empty entries can be removed during
15134         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
15135
15136 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15137
15138         * marshal.c: make sure we don't store the signature from a dynamic
15139         method into the runtime invoke cache (bug #327189).
15140
15141 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15142
15143         * marshal.c: make sure the wrapper methods are properly initialized.
15144
15145 2007-10-11  Mark Probst  <mark.probst@gmail.com>
15146
15147         * metadata.c, metadata-internals.h: Generalized
15148         mono_type_stack_size() to mono_type_stack_size_internal() which
15149         takes an additional argument specifying whether it allows open
15150         types.
15151
15152 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
15153
15154         * verify.c (do_invoke_method): handle typedbyref params
15155         correctly and check for unverifiable return values.
15156
15157         * verify.c (do_newobj): fix a warning.
15158
15159 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15160
15161         * verify.c: don't tread typedbyref as allways unverifable,
15162         so uses, like (ld/st)loc.0 are valid. verify for the cases
15163         that it matters, like boxing related operations.
15164
15165 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
15166
15167         * verify.c: add verification of the newobj opcode. verification
15168         of delegate instantation still missing due ldftn and virldftn not
15169         pushing the function type on stack
15170
15171 2007-10-08  Mark Probst  <mark.probst@gmail.com>
15172
15173         * class-internals.h: Runtime generic context data structure
15174         definition.
15175
15176         * object.c: Initialization of runtime generic context at runtime
15177         vtable creation time.
15178
15179 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
15180         * class.c (mono_class_create_from_typedef,
15181         mono_class_from_generic_parameter, mono_ptr_class_get,
15182         mono_fnptr_class_get, mono_bounded_array_class_get)
15183         * domain.c (mono_domain_create, mono_domain_free)
15184         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
15185         * image.c (do_mono_image_load, mono_image_close):
15186         Hooked up load-unload profiler events.
15187
15188 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15189
15190         * domain.c: track statistics about the actual amount of native code
15191         allocated.
15192
15193 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15194
15195         * class.c: the valuetype enumerators don't have the additional
15196         supertypes interfaces.
15197
15198 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15199
15200         * class.c: need more interfaces setup for the IEnumerator<T>
15201         object created for arrays (tests/ienumerator-interfaces.2.cs).
15202
15203 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
15204
15205         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
15206
15207 2007-10-05  Alp Toker  <alp@atoker.com>
15208
15209         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15210         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15211         #315863.
15212
15213 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15214
15215         * verify.c (verify_type_compatibility_full): verification of
15216         compatibility improved, validates correctly non-strict checks between
15217         native int and I4 types different than (unsigned)int32.
15218
15219         * verify.c (do_store_indirect): added, do all verification of
15220         ldind.X opcodes. 
15221
15222         * verify.c (get_load_indirect_mono_type): renamed to
15223         get_indirect_op_mono_type, as it now returns the MonoType for 
15224         ldind.X and stind.X opcodes.
15225
15226 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
15227
15228         * reflection.c: Fix the encoding of generic type definition for
15229         TypeBuilders.
15230
15231         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
15232         mono_image_typedef_or_ref but allows to specify if typespec lookups should
15233         be made. Typespec check is done prior to typeref cache lookup.
15234
15235         * reflection.c (mono_image_typedef_or_ref): now just delegate to
15236         mono_image_typedef_or_ref_full.
15237
15238         * reflection.c (encode_generic_class): encode the generic class
15239         directly instead of calling encode_type.
15240
15241         * reflection.c (encode_type): encode the generic type definition
15242         MonoClass as a generic instantiation.
15243
15244         * reflection.c (create_typespec): cache typespec tokens in
15245         the assembly->typespec cache. Don't create typespec for a generic
15246         instance MonoClass. Create typespec for the generic type defintion.
15247
15248         * reflection.c (create_generic_typespec): encode the generic
15249         class directly instead of calling encode_type.
15250
15251         * reflection.c (mono_image_create_token): encode the generic
15252         type definition not using a typespec for MonoType instances.
15253
15254
15255 2007-10-04  Raja R Harinath  <rharinath@novell.com>
15256
15257         Fix #328812
15258         * class.c (mono_image_init_name_cache): Don't return nested
15259         'protected internal' classes.
15260         (mono_class_from_name_case): Likewise.
15261
15262 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15263
15264         * icall-def.h, icall.c : get_bundled_machine_config() is now the
15265           common function used by both DefaultConfig in System.dll and
15266           InternalConfigurationHost in System.Configuration.dll.
15267
15268 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15269
15270         * class.c: automatically add to vectors only a few essential explicit
15271         generic interfaces. The rest of the interfaces that arrays should
15272         provide are currently implicitly added (but still not lazily, see the
15273         design in the discussion of bug#325495 for the details of what is
15274         needed for that). Additionally, implicit interfaces are assigned the
15275         same vtable slot as the explicit interfaces (as they are compatible):
15276         this enables huge memory savings since we don't need to instantiate
15277         as many memthods and as large vtables anymore. Also, Since
15278         GetEnumerator<T> returns an instance of a type that is required to
15279         support a similarly large set of interfaces as arrays, we add
15280         implicit interfaces and interface offset sharing support to those
15281         types, too. This change adds all the required interfaces so that
15282         the anonarray.cs test case in the bug report works (we don't add
15283         all the interfaces to arrays of arrays 3-level deep and more because
15284         of the memory requirements explained in the bug and since they are much
15285         less common: the lazy-loading support will enabled them to work, too).
15286
15287 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15288
15289         * verify.c (merge_stacks): major clean up, all type compatibility
15290         checks are done by verify_type_compatibility. This fix my earlier lack
15291         of understanding of the CLR type system and merge_stacks no longer looks
15292         scary.
15293
15294         * verify.c: fixed some bad spelling.
15295
15296 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
15297
15298         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
15299         a given stack slock.
15300         
15301         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
15302         verify_type_compatibility_full. This removed a near indentical function and fixed
15303         handling of Int32 and IntPtr across all opcodes.
15304
15305 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15306
15307         * class.c: only vectors have the additional generic interfaces.
15308
15309 2007-10-01  Jonathan Chambers <joncham@gmail.com>
15310
15311         * mono-config.c: Use g_strcasecmp instead of
15312         strcasecmp like everywhere else to fix
15313         compilation with MSVC.
15314         
15315         Code is contributed under MIT/X11 license.
15316
15317 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15318
15319         * object.c, object-internals.h: refactored the IMT code to enable
15320         building a single slot at a time and lazily creating the IMT trampolines
15321         and thunks.
15322
15323 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
15324
15325         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
15326
15327         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
15328         Fixes #328501.
15329         
15330 2007-09-29  Raja R Harinath  <harinath@gmail.com>
15331
15332         * loader.c (method_from_methodspec): Rearrange to avoid
15333         un-necessary exposition.  Don't assert out if the method's
15334         declaring type is a generic type definition.
15335
15336 2007-09-28  Martin Baulig  <martin@ximian.com>
15337
15338         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
15339
15340 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15341
15342         * class-internals.h: optimize field layout of MonoClass to
15343         requires less cachelines at runtime and save a few bytes on 64 bit
15344         systems.
15345
15346 2007-09-28  Jb Evain  <jbevain@novell.com>
15347
15348         * reflection.c: when encoding type names in custom attributes,
15349         if the type is a closed generic type, its generic arguments
15350         have to be serialized as AssemblyQualifiedName, so that when
15351         they are deserialized, it's possible to re-create them properly.
15352         Fixes #329450.
15353
15354
15355 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15356
15357         * object.c, class-internals.h: added delegate-creation counter.
15358
15359 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
15360
15361         * class.c: cleanup of the code that synthetizes interfaces for
15362         arrays in 2.0: saves quit a bit of corlib mempool memory.
15363         Code to fix bug #325495 ifdeffed out for now until the issues
15364         with memory usage and O(n^2) behaviour are fixed.
15365
15366 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
15367
15368         * marshal.c: when possible, do not duplicate the name of the methods
15369         in the method builder and in the generated MonoMethod.
15370
15371 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15372         * verify.c: added support for type checking ldind_* opcodes.
15373
15374 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
15375
15376         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
15377         which is used to distinguish the fully open instantiation of a TypeBuilder
15378         with the rest. This temporary hack is required to restore the property that
15379         the fully open instantiation is the same type of the generic type definition.
15380
15381         * class-internals.h (mono_generic_class_is_generic_type_definition):
15382         new function as part of the internal API.
15383
15384         * class.c (inflate_generic_type): return NULL when the generic inst is
15385         fully open. The fully open generic type is now the same as the generic type
15386         definition for non TypeBuilder types.
15387
15388         * class.c (mono_generic_class_get_class): removed assert since it is
15389         no longer valid, gklass->cached_class can point to the generic type definition.
15390
15391         * class.c (mono_generic_class_is_generic_type_definition): new.
15392
15393         * metadata.c (mono_generic_class_hash): added is_tb_open field
15394         to the hash calculation.
15395
15396         * metadata.c (free_generic_class): if the generic class is associated
15397         with the generic type definition, its field will come from the mempool and
15398         must not be freed.
15399
15400         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
15401         new, this function identifies the corner case of a TypeBuilder fully open
15402         instantiation.
15403
15404         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
15405         for lookup. Set gclass->cached_class to be the container class in case of
15406         the fully open instantiation of non TypeBuilder types.
15407
15408         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
15409         to compare generic classes.
15410
15411         * reflection.c (method_encode_methodspec): remove assert that
15412         no longer is valid.
15413
15414         * reflection.c (mono_reflection_generic_class_initialize): add
15415         an aditional assert to ensure the proper type is used.
15416
15417 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
15418
15419         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
15420         to enjoy it.
15421
15422 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15423
15424         * verify.c (push_arg): Fixed support for ldarga
15425         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
15426         MonoType used as first arg in case of instance calls.
15427
15428 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
15429
15430         * verify.c: Support for verifying VAR and MVAR types, 
15431
15432 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
15433
15434         * icall.c (ves_icall_get_property_info): Set the reflected type of the
15435         accessors correctly.
15436
15437 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15438
15439         * threads.c: support OSX and other systems in
15440         mono_thread_get_stack_bounds (bug #328026).
15441
15442 2007-09-25  Martin Baulig  <martin@ximian.com>
15443
15444         * mono-debug.h
15445         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
15446
15447 2007-09-24  Martin Baulig  <martin@ximian.com>
15448
15449         * mono-debug.h
15450         (MonoDebugClassEntry): Moved the definition of this struct into
15451         mono-debug.c to make it private.
15452
15453         * mono-debug.c
15454         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
15455         type table per symbol file, we don't need to store the symfile id
15456         any longer.
15457
15458 2007-09-24  Martin Baulig  <martin@ximian.com>
15459
15460         Create one type table per symbol file, since a `MonoClass *' gets
15461         invalid when its image is unloaded.
15462
15463         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
15464         (MonoDebugHandle): Added `type_table'.
15465
15466 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15467
15468         * mempool.c, mempool.h: added mono_mempool_new_size () API
15469         to be able to specify a smaller initial size for the pool.
15470         Adjusted the code to slowly increase pool size before using
15471         the previous default size.
15472         * image.c: use a small initial size for image mempools.
15473
15474 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
15475
15476         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
15477         Fixes ##320990.
15478
15479         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
15480         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
15481
15482 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
15483
15484         * metadata.c (mono_type_create_from_typespec): Remove an invalid
15485         free. Fixes #327438.
15486
15487 2007-09-21  Raja R Harinath  <harinath@gmail.com>
15488
15489         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
15490         generic instantiations, etc.
15491         <MONO_TYPE_ARRAY>: Likewise.
15492
15493 2007-09-21  Martin Baulig  <martin@ximian.com>
15494
15495         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
15496         these structs were never defined.
15497         (MonoDebugHandle): Removed the `_priv' field, it was never used.
15498
15499 2007-09-21  Martin Baulig  <martin@ximian.com>
15500
15501         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
15502
15503 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
15504
15505         * image.c: removed the guid hash tables: we can get the same info
15506         without the additional memory usage hit (partially fixes also bug #327052).
15507
15508 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15509
15510         * profiler.h, profiler-private.h, profiler.c: add a new profiler
15511         event to handle unloading methods. After the event is called, the
15512         corresponding MonoMethod* must be considered invalid.
15513         * loader.c (mono_free_method): call the new mono_profiler_method_free
15514         event.
15515
15516 2007-09-20  Mark Probst  <mark.probst@gmail.com>
15517
15518         * domain-internals.h: New flag in MonoJitInfo which marks shared
15519         generic methods.  New hash table (shared_generics_hash) in
15520         MonoDomain to keep track of shared generic methods.  Prototypes
15521         for functions to register and lookup shared generic methods.
15522
15523         * domain.c: Support for registering and looking up shared generic
15524         methods via a hash table (shared_generics_hash) in MonoDomain.
15525
15526         * class-internals.h: New exception to signal failure of shared
15527         compilation of a generic method.  New counters for generics
15528         sharing in MonoStats.
15529
15530 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15531
15532         * image.c, metadata-internals.h: don't keep a file descriptor open
15533         for loaded assemblies (bug#325988).
15534
15535 2007-09-19  Raja R Harinath  <rharinath@novell.com>
15536
15537         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
15538         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
15539         use the corresponding datatypes.
15540         (type_in_image): Update to changes.
15541         (CleanForImageUserData): Simplify.
15542         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
15543         Avoid quadratic behaviour in handling the "stolen" list by
15544         separating the filter predicate out, and by prepending the stolen
15545         items rather than appending them.
15546         (steal_ginst_in_image): Likewise.
15547         (mono_metadata_clean_for_image): Update to changes.
15548
15549 2007-09-19  Martin Baulig  <martin@ximian.com>
15550
15551         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
15552
15553 2007-09-19  Martin Baulig  <martin@ximian.com>
15554
15555         * mono-debug.c (mono_debug_cleanup): Don't call
15556         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
15557
15558 2007-09-19  Raja R Harinath  <harinath@gmail.com>
15559
15560         Fix crash on 'make run-test' in mcs/errors
15561         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
15562         Avoid more potential allocations in mono_class_from_mono_type.
15563         (ginst_in_image): Update to changes.
15564         (gclass_in_image): Rearrange slightly.
15565
15566 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15567
15568         * class.c (mono_class_init): Move the code that sets up class->methods to 
15569         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
15570
15571         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
15572         canonical instance of an inflated generic signature.
15573         (mono_type_create_from_typespec): Remove an invalid free.
15574
15575         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
15576
15577 2007-09-18  Marek Habersack  <mhabersack@novell.com>
15578
15579         * domain-internals.h: added a declaration of the
15580         mono_assembly_load_full_nosearch internal function.
15581
15582         * assembly.c (mono_assembly_load_with_partial_name): use
15583         mono_try_assembly_resolve return value properly.
15584         (mono_assembly_load_full_nosearch): copied the function body from
15585         mono_assembly_load_full, without the code to invoke assembly
15586         search hooks.
15587         (mono_assembly_load_full): calls the above new function and if the
15588         assembly is not resolved, invokes the search hooks.
15589
15590         * appdomain.c (mono_runtime_init): restore the global postload
15591         assembly search handlers.
15592
15593 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
15594
15595         * class.c (mono_class_init): Make sure class->methods and class->properties
15596         are never NULL in the generics case.
15597
15598         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
15599
15600 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
15601
15602         * metadata.c (free_generic_class): Disable some code to fix the build.
15603
15604         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
15605
15606         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
15607         from the image mempool.
15608
15609         * metadata.c (free_generic_class): Free more data from the inflated class.
15610
15611         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
15612
15613         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
15614         mempool.
15615         (mono_type_create_from_typespec): Ditto.
15616
15617         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
15618         MonoImage to the caller.
15619         (mono_init_internal): Save the opened image in a global variable.
15620         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
15621
15622         * reflection.c (resolve_object): Fix a leak.
15623
15624         * metadata.c: Fix the freeing of data in the generics caches.
15625         
15626         * metadata.c (free_generic_inst): Comment this out to fix the build.
15627         (free_generic_class): Ditto.
15628
15629         * metadata.c: Free cached generic methods, instantinations and classes when
15630         they are removed from the caches.
15631         (mono_metadata_free_type): Free the type itself.
15632
15633         * class.c: Free the result of mono_class_inflate_generic_type () in a few
15634         places.
15635
15636 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15637
15638         * boehm-gc.c: restrict managed allocs to __thread supporting
15639         architectures.
15640
15641 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
15642
15643         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
15644         (mono_generic_class_get_class): Fix a leak.
15645
15646         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
15647         mono_metadata_free_type ().
15648         (mono_metadata_inflate_generic_inst): Fix a leak.
15649
15650 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15651
15652         * mono-debug.c (free_header_data): Fix a leak missed earlier.
15653
15654         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
15655         mempool.
15656
15657         * mono-debug.c (mono_debug_close_image): Fix call to 
15658         g_hash_table_remove ().
15659
15660 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15661
15662         * icall-def.h: redirect all the string ctor to the managed
15663         CreateString () methods.
15664         * string-icalls.c, string-icalls.h: removed dead code for string
15665         ctors and icalls.
15666
15667 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15668
15669         * mono-debug.c: Fix memory leaks.
15670
15671 2007-09-14  Jonathan Chambers <joncham@gmail.com>
15672
15673         * threads-types.h: Implement mono_hazard_pointer_set and 
15674         mono_hazard_pointer_clear macros using do/while(0) to fix
15675         compilation with MSVC.
15676         
15677         Code is contributed under MIT/X11 license.
15678
15679 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
15682         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
15683
15684 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15685
15686         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
15687         icalls.
15688
15689 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
15690
15691         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
15692         managed-code allocated as well.
15693
15694 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15695
15696         * class.c (mono_class_is_assignable_from): Add support for generic variance.
15697
15698 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
15699
15700         * boehm-gc.c: fixed the build after the AOT changes.
15701
15702 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
15703
15704         * wrapper-types.h: Add an ALLOC wrapper type.
15705
15706         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
15707         reference managed allocator methods.
15708
15709 2007-09-12  Marek Safar  <marek.safar@gmail.com>
15710
15711         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
15712         of Type array and not MonoType, a fix suggested by Hari.
15713         
15714 2007-09-12  Jonathan Chambers <joncham@gmail.com>
15715
15716         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
15717         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
15718         
15719         Code is contributed under MIT/X11 license.
15720
15721 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15722
15723         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
15724
15725 2007-09-12  Marek Habersack  <mhabersack@novell.com>
15726
15727         * image.c (do_mono_image_open): if assembly file fails to open and
15728         MONO_IOMAP is in effect, try to find the path in a
15729         case-insensitive way.
15730
15731         * appdomain.c (mono_runtime_init): do not install postload hooks -
15732         tests show that MS.NET doesn't use anything of that sort to
15733         trigger the AppDomain.AssemblyResolve event.
15734         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
15735         made non-static.
15736         (mono_runtime_init): init portability helpers here.
15737
15738         * assembly.c (mono_assembly_load_with_partial_name): if other   
15739         attempts fail, trigger the AppDomain.AssemblyResolve event handler
15740         to resolve the assembly.
15741
15742         * domain-internals.h: added mono_try_assembly_resolve and marked
15743         it as internal.
15744
15745 2007-09-11  Jb Evain  <jbevain@novell.com>
15746
15747         * object-internals.h (MonoReflectionDynamicMethod): add
15748         a `MonoReflectionType *owner` field. The owner is used
15749         * reflection.c:
15750         (mono_reflection_create_dynamic_method): use the owner of the dynamic
15751         method as the class declaring the dynamic method.
15752         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
15753         dynamic method to the declaring type of the methodbuilder.
15754
15755 2007-09-11  Mark Probst  <mark.probst@gmail.com>
15756
15757         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
15758         rules for calling methods via reflection.
15759
15760 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * reflection.c (resolve_object): Add support for MonoGenericClass. 
15763         Inflate MonoType's.
15764
15765 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15766
15767         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
15768         provide a managed method that does fast allocations without needing
15769         a managed->unmanaged transition. Boehm GC implementation currently
15770         enabled for ptrfree objects on sane architectures.
15771
15772 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15773
15774         * marshal.c, marshal.h: exported a couple of useful functions and
15775         added mono_mb_get_label () to easily handle backward branches.
15776
15777 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
15778
15779         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
15780
15781 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
15782
15783         * loader.c (find_method): Fixed the regression introduced while
15784         fixing bug #81466.
15785
15786 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
15787
15788         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
15789         well.
15790         
15791         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
15792         icall.c reflection.c: Pass a MonoGenericContext argument to 
15793         mono_lookup_dynamic_token ().
15794
15795         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
15796         #82744.
15797         
15798 2007-09-09  Robert Jordan  <robertj@gmx.net>
15799
15800         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
15801         for generic methods.
15802
15803         * object.c (mono_object_get_virtual_method): Handle generic methods.
15804         Fixes bug #78882.
15805
15806         Code is contributed under MIT/X11 license.
15807
15808 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
15809
15810         * image.c: fix locking in mono_image_load_file_for_image ().
15811
15812 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
15813
15814         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
15815         used only as a cache: added an icall to fill it.
15816
15817 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
15818
15819         * reflection.h: exposed mono_reflection_free_type_info
15820         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
15821         since mono_reflection_bind_generic_parameters makes a copy of it.
15822         * reflection.c (free_type_info): subinfos should be freed.
15823         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
15824         made non static.
15825         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
15826         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
15827         this fixes #82695 and #81726.
15828    
15829
15830 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
15831
15832         * process.h, process.c:  added support for user profile/info in
15833           ProcessStartInfo. For now only Windows works.
15834
15835 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15836
15837         * metadata.c: consider the generic arguments when comparing
15838         signatures (bug #82614).
15839
15840 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15841
15842         * cil-coff.h, image.c: updated assembly loader to cope with the
15843         PE32+ 64 bit file format.
15844
15845 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
15846
15847         * assembly.c, class.c, domain.c, loader.c: remove useless
15848         inclusion of cil-coff.h.
15849
15850 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
15851
15852         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
15853         if interface is marked with CoClassAttribute. 
15854    
15855         Code is contributed under MIT/X11 license.
15856
15857 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
15858
15859         * sgen-gc.c: ensure no object from the to space is copied again or finalized
15860         if it's seen twice in major collections.
15861
15862 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
15863
15864         * sgen-gc.c: big objects are not copied to the gray area, but they
15865         need to be considered for scanning, too, if they are brought alive
15866         by an object ready for finalizations or a survived one.
15867
15868 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
15869
15870         * sgen-gc.c: properly account the number of disappearing links when
15871         they are nullified.
15872
15873 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
15874
15875         * sgen-gc.c: share the code to scan the registered roots between the
15876         different types of collections.
15877
15878 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15879
15880         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
15881
15882 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
15883
15884         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
15885         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
15886
15887 2007-08-28  Mark Probst  <mark.probst@gmail.com>
15888
15889         * security-manager.c (mono_security_manager_get_methods):
15890         LinkDemandSecurityException now has 2 arguments instead of 3.
15891
15892 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
15893
15894         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
15895         platforms which need it.
15896
15897 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15898
15899         * sgen-gc.c: unregister thread data structures with a pthread_key_t
15900         dtor.
15901
15902 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
15903
15904         * threads.c: free the thread static data on thread exit.
15905
15906 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
15907
15908         * class.c: walk the hierarchy to find the generic definition for
15909         a class (fixes runtime part of bug #82498).
15910
15911 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15912
15913         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
15914         ...
15915
15916         * image.c (mono_image_close): Here. Hopefully fixes #82510.
15917
15918 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15919
15920         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
15921
15922 2007-08-24  Robert Jordan  <robertj@gmx.net>
15923
15924         * appdomain.c: don't perform the ':'->';' substitution on Win32.
15925
15926 2007-08-24  Jb Evain  <jbevain@novell.com>
15927
15928         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
15929         for byref types.
15930
15931 2007-08-24  Mark Probst  <mark.probst@gmail.com>
15932
15933         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
15934         #82286.
15935
15936 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
15937
15938         * assembly.c: Fix a warning.
15939         
15940 2007-08-23  Marek Habersack  <mhabersack@novell.com>
15941
15942         * appdomain.c: parse the <runtime> section looking for the probing
15943         element with the 'privatePath' attribute, which sets additional
15944         directories in which the runtime should look for assemblies.
15945
15946 2007-08-23  Robert Jordan  <robertj@gmx.net>
15947
15948         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
15949         Fixes #82499.
15950
15951 2007-08-23  Martin Baulig  <martin@ximian.com>
15952
15953         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
15954         _mono_debug_init_corlib() and remove it from the header file.
15955
15956 2007-08-23  Martin Baulig  <martin@ximian.com>
15957
15958         * mono-debug-debugger.c
15959         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
15960         don't notify the debugger about it.
15961
15962         * mono-debug-debugger.h
15963         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
15964
15965 2007-08-23  Robert Jordan  <robertj@gmx.net>
15966
15967         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
15968         Code is contributed under MIT/X11 license.
15969
15970 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15971
15972         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
15973
15974 2007-08-22  Martin Baulig  <martin@ximian.com>
15975
15976         * mono-debug.c: Store debugging info on a per-domain basis and
15977         free it on domain unload.  Add support for unloading symbol files.
15978
15979         * mono-debug.h
15980         (MonoDebugList): New typedef.
15981         (MonoSymbolTable):
15982         - add `data_tables and `type_table'.
15983         - replace 'symbol_files' and `num_symbol_files' with a
15984           `MonoDebugList *'.
15985         (mono_debug_data_table): Removed.
15986         (mono_debug_list_add): New public function.
15987         (mono_debug_list_remove): New public function.
15988         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
15989         (mono_debug_init_2_memory): Renamed into
15990         mono_debug_open_image_from_memory().
15991         (mono_debug_close_image): New public function.
15992         (mono_debug_domain_create): Likewise.
15993         (mono_debug_domain_unload): Likewise.
15994         (MONO_DEBUGGER_VERSION): Bump to 60.
15995
15996         * mono-debug-debugger.h
15997         (MonoDebuggerEvent):
15998         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
15999         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
16000         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
16001         - rename `THREAD_CREATED' and `THREAD_EXITED' into
16002           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
16003         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
16004           meaning.
16005         (mono_debugger_add_symbol_file): Removed.
16006         (mono_debugger_add_type): Removed.
16007         (mono_debugger_lookup_type): Removed.
16008         (mono_debugger_lookup_assembly): Removed.
16009
16010         * domain.c
16011         (mono_domain_create): Call mono_debug_domain_create().
16012         (mono_init_internal): Call mono_debug_init_corlib().
16013
16014         * assembly.c
16015         (mono_assembly_close): Call mono_debug_close_image().
16016
16017 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
16018
16019         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
16020         mmap call.
16021
16022 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
16023
16024         * sgen-gc.c: ensure section->pin_queue_end is initialized
16025         correctly when non pinning objects in the section have been found.
16026
16027 2007-08-22  Marek Habersack  <mhabersack@novell.com>
16028
16029         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
16030         containing a list of directories separated by ':'. MSDN docs say
16031         the directories should be separated with ';'. Part of a bugfix for
16032         bug #81446
16033
16034 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
16035
16036         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
16037         it should MonoType and not MonoClass.
16038
16039 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
16040
16041         * culture-info-table.h : regenerated.
16042
16043 2007-08-20  William Holmes  <billholmes54@gmail.com>
16044
16045         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
16046          to call ReplaceFile Kernel32 on windows or in io-layer.
16047         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
16048         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
16049          as an internal call.
16050
16051         Code is contributed under MIT/X11 license.
16052
16053 2007-08-20  Jb Evain  <jbevain@novell.com>
16054
16055         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
16056         and MONO_EXCEPTION_FIELD_ACCESS.
16057
16058         * debug-helpers.[c|h]: new mono_field_full_name function.
16059
16060 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16061
16062         * class.c: Removed class_security_level() and moved it to
16063         security-core-clr.c.
16064
16065         * security-core-clr.c, security-core-clr.h: class_security_level()
16066         is now public and renamed to mono_security_core_clr_class_level().
16067         It also looks for security attributes in the classes a class is
16068         nested in.
16069
16070 2007-08-20  Mark Probst  <mark.probst@gmail.com>
16071
16072         * security-core-clr.c, security-core-clr.h: CoreCLR security
16073         utility functions.
16074
16075         * Makefile.am: Added security-core-clr.[ch].
16076
16077         * security-manager.c, security-manager.h: Functions and enum for
16078         setting and getting the security mode.
16079
16080         * class.c: CoreCLR security checks.
16081
16082 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
16083
16084         * icall-def.h, process.c, process.h: implemented icall to get
16085         user/system processor times.
16086
16087 2007-08-17  Mark Probst  <mark.probst@gmail.com>
16088
16089         * domain.c, threads.c, class-internals.h, domain-internals.h: New
16090         reader-lock-free jit_info_table.
16091
16092 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
16093
16094         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
16095
16096         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
16097
16098         * object-internals.h (MonoException): Add missing _data member.
16099
16100 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16101
16102         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
16103         checking that only methods with matching qname or fqname are picked
16104         from implemented interfaces.
16105
16106 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16107
16108         * verify.c (do_newarr):added, do type verification of
16109         newarr ops, push the right value on the eval stack.
16110         * verify.c (mono_method_verify): use do_newarr
16111
16112
16113 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16114
16115         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
16116         factored the common code into get_boxable_mono_type, which
16117         is now using mono_type_get_full, this fixed byref related tests.
16118
16119 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
16120
16121         * class.c: added mono_type_get_full, this function has the same
16122         behavior of mono_class_get_full but the returned MonoType has
16123         all metadata of the associated token in case of a typespec token.
16124         * class.c: added mono_type_retrieve_from_typespec, used by 
16125         mono_type_get_full to retrieve the token type.
16126         * class.c (mono_class_create_from_typespec): changed to use
16127         mono_type_retrieve_from_typespec.
16128         * class.c (mono_ldtoken): changed to use mono_type_get_full
16129         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
16130         * class-internals.h: exported mono_type_get_full for internal use.
16131
16132 2007-08-16  Jb Evain  <jbevain@novell.com>
16133
16134         * domain.c (supported_runtimes): add entry for
16135         the 'moonlight' runtime version.
16136
16137 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16138
16139         * verify.c (mono_method_verify): small typo sliped in.  
16140
16141 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16142
16143         * verify.c (do_unbox_value): added, do type verification of
16144         unboxing ops
16145         * verify.c (mono_method_verify): use do_unbox_value
16146
16147
16148 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16149
16150         * verify.c (dump_stack_value): fixed typo, was printing string
16151         instead of object on stack.
16152         * verify.c (do_box_value): moved the byref check up as it leads
16153         to invalid code and should be done earlier.
16154         * verify.c: improved error messages for and ldobj
16155
16156 2007-08-15  William Holmes  <billholmes54@gmail.com>
16157
16158         * marshal.c (emit_marshal_custom): Omit the call to 
16159           marshal_native_to_managed when calling native to managed 
16160           and the argument is specified as an out argument.
16161
16162         Code is contributed under MIT/X11 license.
16163
16164 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
16165
16166         * verify.c: fixed the type checks for generics, function pointers and vectors.
16167         Added type verification for ldobj and ldtoken. The verifier
16168         would segfault if header or signature of a method contained references
16169         to non-existant types.
16170
16171 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16172
16173         * marshal.c (cominterop_get_ccw): Patch from
16174         Bill Holmes to no walk up interface hierarchy. 
16175         All parent methods should be present in the interface for COM.
16176    
16177         Code is contributed under MIT/X11 license.
16178
16179 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
16180
16181         * marshal.c (emit_marshal_com_interface): Patch from
16182         Bill Holmes to handle COM Interfaces as return values
16183         for native->managed calls.
16184    
16185         Code is contributed under MIT/X11 license.
16186
16187 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
16188
16189         * marshal.c (cominterop_get_idispatch_for_object): Implement
16190         for runtime callable wrappers.
16191    
16192         Code is contributed under MIT/X11 license.
16193
16194 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
16195
16196         * pedump.c (main): changed from mono_init to mono_init_from_assembly
16197         so 2.0 types are accessible
16198
16199
16200 2007-08-13  Miguel de Icaza  <miguel@novell.com>
16201
16202         * domain.c (mono_init_internal): Call mono_assembly_load_friends
16203         once we load mscorlib.   Due to the order in which we initialize,
16204         the mono_assembly_load_full routine that loads mscorlib did not
16205         load friends.   We now load it once we load the
16206         mono_defaults.internals_visible_class class. 
16207
16208         * assembly.c: Expose the mono_load_friend_assemblies method.
16209
16210 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
16211
16212         * verify.c: improved the handling of boxing, better
16213         type checking for unary ops and conversion. Fix bug
16214         regarding managed pointer compatibility checking
16215
16216 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
16217
16218         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
16219
16220         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
16221
16222 2007-08-09  Raja R Harinath  <rharinath@novell.com>
16223
16224         * reflection.c (dup_type): Remove.
16225         * class.c (dup_type): Remove.
16226         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
16227         instead of the dodgy 'dup_type'.
16228         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
16229         handle the case where 'dup_type' needed the second argument.
16230
16231 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
16232
16233         * domain.c: Fix a warning.
16234
16235 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
16236
16237         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
16238         checking that methods with the same fqname are not overridden
16239         with a method from an ancestor.
16240
16241 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
16242
16243         * threads.c (free_thread_static_data_helper): Avoid a crash if
16244         thread->static_data is not yet set.
16245
16246 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
16247
16248         * marshal.c: Use correct image when emitting
16249         native wrapper for COM calls.
16250    
16251         Code is contributed under MIT/X11 license.
16252
16253 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
16254
16255         * icall-def.h, security.c, security.h :
16256           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
16257
16258 2007-08-07  Martin Baulig  <martin@ximian.com>
16259
16260         * mono-debug-debugger.h
16261         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
16262
16263         * domain.c (mono_domain_free): Call
16264         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
16265
16266 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
16267
16268         * verify.c (check_underflow, check_overflow): error message now returns IL offset
16269         * verify.c (in_same_block): code should test if either offset is inside the clauses
16270         * verify.c (mono_method_verify): push the exception into the eval stack of exception
16271         and filter blocks
16272
16273 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16274
16275         * image.c (mono_image_close): Fix a leak.
16276
16277         * object.c (mono_runtime_invoke_array): Avoid using alloca.
16278
16279         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
16280
16281 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
16282
16283         * domain.c, threads.c, threads-types.h: fix memory retention issue
16284         with thread static variables not being cleared on domain unload.
16285         Reuse thread static slots after domain unload.
16286
16287 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
16288
16289         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
16290         nullable type.
16291
16292         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
16293         now done in mono_runtime_invoke_array.
16294
16295         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
16296         receiver is a nullable type.
16297
16298         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
16299         generic parameter.
16300
16301 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
16302
16303         * marshal.c: Implement COM Objects as return type for 
16304         managed->unmanaged calls. Added Release calls for COM Object
16305         out/return values in managed->unmanaged calls.
16306
16307         Code is contributed under MIT/X11 license.
16308
16309 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
16310
16311         * threads.h, threads-type.h: move the hazard pointer declarations
16312         to the private header.
16313
16314 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
16315
16316         * file-io.c, appdomain.c: memory leak fixes.
16317
16318 2007-08-02  Dick Porter  <dick@ximian.com>
16319
16320         * socket-io.c
16321         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
16322         SO_REUSEADDR setting into io-layer/sockets.c.
16323
16324 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
16325
16326         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
16327         from Object when called on a generic parameter. Fixes #82211.
16328
16329 2007-08-01  Dick Porter  <dick@ximian.com>
16330
16331         * file-io.c (convert_share): Test FileShare values bit-by-bit.
16332         Fixes bug 79250 yet again.
16333
16334 2007-07-30  Martin Baulig  <martin@ximian.com>
16335
16336         Merged the `debugger-dublin' branch.
16337
16338         * mono-debug.h
16339         (MonoDebugDataTable): New typedef.
16340         (MonoDebugMethodAddressList): New typedef.
16341         (MonoDebugWrapperData): Removed.
16342         (MonoDebugSymbolTable): Removed `current_data_table',
16343         `current_data_table_size', `current_data_table_offset'.
16344         (MonoDebugDataItemType): Moved into mono-debug.c.
16345         (MonoDebugMethodJitInfo): Remove `address'.
16346         (mono_debug_data_table): New global variable.
16347         (mono_debug_lookup_method_addresses): New public function.
16348         (mono_debug_find_method): Take a `MonoMethod *', not a
16349         `MonoDebugMethodInfo *'.
16350
16351         * mono-debug.c: Drop support for the old symbol tables.
16352
16353 2007-06-28  Martin Baulig  <martin@ximian.com>
16354
16355         * mono-debug.c (mono_debug_debugger_version): New public variable.
16356
16357 2007-07-31  William Holmes  <billholmes54@gmail.com>
16358
16359         * metadata.c Changed mono_type_create_from_typespec to not insert
16360           the type into the hash map until after
16361           do_mono_metadata_parse_type has completed.
16362         Fixes Bug #82194
16363         Code is contributed under MIT/X11 license.
16364
16365 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
16366
16367         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
16368         generic parameter. Fixes #82211.
16369
16370 2007-07-27  Jb Evain  <jbevain@novell.com>
16371
16372         * pedump.c (dump_metadata, dump_metadata_header): dump
16373         versions contained in the metadata header.
16374
16375 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
16376
16377         * threads.c: register small_id_table with the GC.
16378
16379 2007-07-27  Mark Probst  <mark.probst@gmail.com>
16380
16381         * threads.c, threads.h, class-internals.h, object-internals.h:
16382         Hazard pointers, to be used by lock-free parallel algorithms.
16383
16384 2007-07-26  Dick Porter  <dick@ximian.com>
16385
16386         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
16387         routine on non-windows platforms, as I've not managed to think of
16388         a non-kludgy way of doing this.  Finishes off bug 78739.
16389
16390 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
16391
16392         * object.c: properly setup interface_bitmap in proxy vtables.
16393
16394 2007-07-25  Marek Habersack  <mhabersack@novell.com>
16395
16396         * appdomain.c (get_shadow_assembly_location): do not use TickCount
16397         to create unique shadow copy target directories, use the domain's
16398         serial number instead. Each domain gets a unique target directory
16399         that way.
16400
16401         * domain.c (mono_domain_create): added code to increment domain
16402         shadow copy serial number and cache the value in the current
16403         domain structure.
16404
16405         * domain-internals.h (struct _MonoDomain): added a new field -
16406         shadow_serial to hold the serial number used in generation of
16407         shadow-copy directories. This is to make sure that the directory
16408         name is unique for each and every domain created. We avoid a race
16409         condition with overriding assemblies already in use by other app
16410         domains.
16411
16412 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
16413
16414         * class.c (mono_bounded_array_class_get): fixed memory leak when 
16415         binding generic parameters.
16416
16417 2007-07-24  Raja R Harinath  <rharinath@novell.com>
16418
16419         * metadata.c (do_mono_metadata_parse_generic_class): Use
16420         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
16421         error.
16422
16423 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
16424
16425         * loader.c, class-internals.h, reflection.c: removed the per-method
16426         generics hashtable: we use the global one through the call of
16427         mono_class_inflate_generic_method ().
16428
16429 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
16430
16431         * class.c, metadata.c, class-internals.h: introduce yet another
16432         generics global cache for inflated methods (fixes 98% of the perf
16433         issue in bug #81806).
16434
16435 2007-07-23  Raja R Harinath  <rharinath@novell.com>
16436
16437         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
16438         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
16439         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
16440         return a MonoGenericInst containing (a copy) of those types.
16441         (mono_metadata_inflate_generic_inst): Update to changes.
16442         (mono_metadata_parse_generic_inst): Likewise.
16443         (mono_get_shared_generic_inst): Likewise.
16444         * reflection.c (mono_class_bind_generic_parameters): Likewise.
16445         (mono_reflection_bind_generic_method_parameters): Likewise.
16446         * metadata-internals.h: Likewise.
16447         * icall.c (free_generic_context): Kill.
16448         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
16449
16450         * reflection.c (reflection_methodbuilder_to_mono_method): Use
16451         mono_metadata_type_dup.
16452         * marshal.c (mono_mb_create_method): Likewise.
16453
16454         * metadata.c (mono_metadata_type_dup): Rename from
16455         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
16456         MonoImage.  Handle a few more cases, esp. when no mempool is given.
16457         * marshal.c, metadata-internals.h: Update to changes.
16458
16459 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
16460
16461         * class.c: fixed a small leak for array classes and removed warning.
16462
16463 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
16464
16465         * loader.c (mono_method_get_param_token): Make this work on generic methods.
16466         Return 0x8000000 for return parameters. Fixes #82161.
16467
16468 2007-07-21  Marek Habersack  <grendello@gmail.com>
16469
16470         * appdomain.c (get_shadow_assembly_location): append the current
16471         ticks value to the path. Avoids overwriting the same assemblies by
16472         several threads at the same time.
16473
16474 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16475         and Raja R Harinath  <rharinath@novell.com>
16476
16477         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16478         Simplify slightly.
16479         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
16480         property for testing if a method is a generic method definition.
16481
16482 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
16483
16484         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
16485
16486 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16487
16488         * verify.c: used function from private branch, reverted to the one in class.h 
16489
16490 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16491
16492         * verify.c: a typo slipped in and the code wont compile
16493
16494 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16495
16496         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
16497         disabled box instruction as it is doing the wrong thing
16498         improved stack dump messages, now it is easier to debug type related issues
16499
16500
16501 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
16502
16503         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
16504
16505 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16506
16507         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
16508         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
16509         grouped with class and valuetype. This change will simply 
16510         the code as it should be handled just like unmanaged pointers.
16511
16512 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16513
16514         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
16515
16516 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
16517
16518         * verify.c: several stack merge issues fixed, reference comparisons now
16519         check the type size. strict type check now works correctly.
16520         added more uses of IS_MANAGED_POINTER macro.
16521         fixed issues pointed by running the test suite against .net.
16522         
16523
16524 2007-07-19  Mark Probst  <mark.probst@gmail.com>
16525
16526         * class.c, loader.c, class-internals.h: Removed the
16527         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
16528         defines.
16529
16530         * icall.c: Better error checking in some internal reflection
16531         methods.
16532
16533 2007-07-18  William Holmes  <billholmes54@gmail.com>
16534
16535         * filewatcher.c : removed unused variable 'filename' in 
16536           ves_icall_System_IO_FSW_SupportsFSW
16537
16538 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
16539
16540         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
16541         obsolete, removed.
16542
16543 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
16544
16545         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
16546         
16547         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
16548
16549 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
16550
16551         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
16552         Implement generics support.
16553         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16554
16555         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
16556         type_args and method_args arguments.
16557         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
16558         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
16559         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
16560
16561 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
16562
16563         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
16564           It adds a rootimage parameter to mono_reflection_get_type_internal,
16565           adds new function mono_reflection_get_type_with_rootimage and use
16566           the rootimage to resolve the types instead of the current image
16567
16568 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16569
16570         * culture-info-table.h: Forgot to update after r78304.
16571
16572 2007-07-13  Raja R Harinath  <rharinath@novell.com>
16573
16574         * class.c (mono_class_is_open_constructed_type)
16575         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
16576
16577 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
16578
16579         * class.c (mono_bounded_array_class_get):  method fails if used with
16580         an incomplete TypeBuilder enum (no basetype field), fixed it by 
16581         avoiding calculating the size for such array as it cannot be instantiated.
16582         Fix bug #82015
16583
16584 2007-07-12  Raja R Harinath  <rharinath@novell.com>
16585
16586         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
16587         field.
16588         * metadata.c, reflection.c: Update to changes.
16589
16590 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
16591
16592         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
16593         mono_class_is_valid_enum, they are used to valide a enum when loading.
16594         * reflection.c: used new functions to throw TypeLoadException when and
16595         invalid enum is build with TypeBuilder. Fixes #82018
16596   
16597 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
16598
16599         * object.c: forgot commit of mono_class_setup_methods () to access
16600         iface->methods.
16601         * object-internals.h: added a few more handy fields to
16602         MonoIMTCheckItem.
16603
16604 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
16605
16606         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
16607         iface->methods.
16608
16609 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
16610
16611         * class-internals.h, object-internals.h, object.c: IMT-based
16612         interface invocation core from Massimiliano Mantione
16613         (massi@ximian.com) with a reworked arch-specific interface,
16614         bsearch implementation and a few bugfixes and memory savings by me.
16615
16616 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
16617
16618         * class.c (mono_class_create_from_typedef): mono would segfault if 
16619         an enum did not have a __value field. It now throws a TypeLoadException
16620         for such cases. Fix bug #82022
16621
16622 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16623
16624         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
16625
16626 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16627
16628         * class.c (mono_class_init): If a class is already inited but has
16629         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
16630
16631 2007-07-09  Mark Probst  <mark.probst@gmail.com>
16632
16633         * class.c: Properly handle the case of an unimplemented interface
16634         method.  Fixes: 81673.
16635
16636 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
16637
16638         * class-internals.h, object.c: cleanup patch from massi: use
16639         MonoVTable->interface_bitmap since the vtable interfaces offset array
16640         is going away.
16641
16642 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
16643
16644         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
16645         GetMDStreamVersion icall instead.
16646
16647 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
16648
16649         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
16650         not use mono_dl_build_path() with a full library name: makes
16651         fallbacks to libgaim and libfam work.
16652
16653 2007-07-06  William Holmes  <billholmes54@gmail.com>
16654
16655         * assembly.c: Added a continue statement in probe_for_partial_name when
16656          parse_assembly_directory_name fails.  Fixes : 82002
16657
16658 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
16659
16660         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
16661         and added a verification  for TYPEDBYREF.
16662         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
16663         make native int interchangeable with int32 and some small cleanup and formating.
16664         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
16665         handle byref of byref.
16666         * verify.c (push_local): handle byref of byref.
16667         * verify.c (do_binop): invalid mix of values is unverifiable
16668         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
16669         added visibility checks
16670         * verify.c (field related method): added visibility checks
16671         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
16672
16673 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
16676         string.
16677
16678 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
16679
16680         * profiler.c (mono_profiler_load): Fix an off-by-one error.
16681
16682         * marshal.c (emit_marshal_string): When returning a string from managed code,
16683         allways make a copy even for unicode strings. Fixes #81990.
16684
16685 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
16686
16687         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
16688         of byref generic inst types (bug #81997).
16689
16690 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
16691
16692         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
16693         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
16694
16695 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
16696
16697         * marshal.c (emit_marshal_string): Add support for unicode strings in
16698         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
16699
16700 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
16701
16702         * verify.c: field load/store are now verified, missing only access checks now
16703
16704 2007-06-28  Martin Baulig  <martin@ximian.com>
16705
16706         * mono-debug.c (mono_debug_debugger_version): New public variable.
16707
16708 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
16709
16710         * locales.c: When constructing DateTimeFormat or NumberFormat for
16711         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
16712         MonoCultureInfo contructed from the current locale is always
16713         read-only and has UseUserOverride set to true. All MonoCultureInfo
16714         instances returned for GetCultures have both IsReadOnly and
16715         UseUserOverride set to true. Fixes part of bug #81930.
16716
16717 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
16718
16719        * icall-def.h: Update System.__ComObject icalls
16720        * marshal.c: Avoid managed transition (and object creation)
16721        when looking up COM interface in RCW.
16722        * marshal.h: Ditto.
16723        
16724        Code is contributed under MIT/X11 license.
16725
16726 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
16729         to avoid crashes during assembly unloading.
16730
16731 2007-06-22  Raja R Harinath  <rharinath@novell.com>
16732
16733         Fix MethodInfo.IsGenericMethodDefinition
16734         * reflection.c (mono_reflection_bind_generic_method_parameters):
16735         Rearrange code to ensure we always uses a generic method definition.
16736         * class.c (mono_class_inflate_generic_method_full): Set
16737         'generic_container' field only for generic method definitions.
16738         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
16739         Use presense of 'generic_container' field as indication of being a
16740         generic method definition.
16741
16742 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
16743
16744         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16745
16746         * object-internals.h: Reflect changes in the layout of the managed Delegate
16747         class.
16748         
16749         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
16750         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
16751         runtime memory used by the dynamic method. Fixes #77146.
16752
16753 2007-06-21  Dick Porter  <dick@ximian.com>
16754
16755         * file-io.h: 
16756         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
16757         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
16758         81767.
16759
16760 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16761
16762         * reflection.c (method_encode_methodspec): Add a tripwire.
16763         * class.c (inflate_generic_type): The fully open generic type is
16764         not the same as the generic type definition.
16765
16766 2007-06-21  Martin Baulig  <martin@ximian.com>
16767
16768         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
16769
16770         * mono-debug-debugger.h
16771         (MonoDebuggerBreakpointInfo): Removed.
16772         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
16773         (mono_debugger_remove_breakpoint): Likewise.
16774         (mono_debugger_breakpoint_callback): Likewise.
16775         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
16776
16777 2007-06-21  Raja R Harinath  <rharinath@novell.com>
16778
16779         * metadata.c (mono_metadata_lookup_generic_class): The fully open
16780         generic type is not the same as the generic type definition.
16781         * class.c (mono_generic_class_get_class): Likewise.
16782
16783 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
16784
16785         * icall.c: The second argument to 
16786         System.Reflection.MethodBase.GetMethodFromHandleInternalType
16787         is a MonoType not a MonoClass.
16788
16789 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16790
16791         * verify.c: support for function pointers in the verifier
16792
16793 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
16794
16795         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
16796
16797 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
16798
16799         * assembly.c: removed Mono.Data.SqliteClient from the list of
16800         forward-compatible assemblies as it breaks the ABI (bug #81899).
16801
16802 2007-06-19  Raja R Harinath  <rharinath@novell.com>
16803
16804         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
16805         lookup/update with the loader lock.
16806         * reflection.c (mono_class_bind_generic_parameters): No need to
16807         protect mono_metadata_lookup_* with the loader lock.
16808         * class.c (inflate_generic_type): Likewise.
16809         
16810         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
16811         on a generic instantiated type.
16812
16813 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
16814
16815         *verify.c: produce meanfull error messages on verification error
16816         *verify.c: fixed some cases of verification errors reported as validation errors
16817         *pedump.c: fixed the error name array, now it shows validation errors properly
16818         *verify.h: fixed the contant that should be used for verification errors
16819
16820 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
16821
16822         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
16823         for bug #77596, 81858 and 80743 (generics data structures on domain
16824         unload).
16825
16826 2007-06-15  Raja R Harinath  <rharinath@novell.com>
16827
16828         Avoid allocating 'MonoGenericContext' on the heap.
16829         * class-internals (_MonoMethodInflated::context): Make field
16830         inline, not a pointer.
16831         * loader.c (method_from_methodspec): Allocate 'new_context' on the
16832         stack.  Use the context embedded within the inflated method as the
16833         hash key, rather than 'new_context'.
16834         * class.c (inflate_generic_context): Simplify.  Return a struct
16835         rather than allocating on the heap.
16836         (mono_class_inflate_generic_method_full): Update to changes.  Now,
16837         doesn't salt away a copy of the context -- simplifying the
16838         lifetime rules of a 'MonoGenericContext *'.
16839         (mono_method_get_context): Return pointer to embedded context.
16840         (setup_generic_array_ifaces): Allocate temporary context on stack.
16841         * reflection.c (inflate_mono_method): Likewise.
16842         (mono_reflection_bind_generic_method_parameters): Likewise.
16843         Use the context embedded within the inflated method as the hash key.
16844
16845         Avoid a source of allocation of 'MonoGenericContext'.
16846         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
16847         and 'cached_context' fields into embedded 'MonoGenericContext' field.
16848         * class.c: Update to changes.
16849         (mono_generic_class_get_context): Simplify drastically.  Now just
16850         returns a pointer to the field.
16851         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
16852         argument as a const pointer.
16853         (mono_metadata_generic_context_equal): Likewise.
16854         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
16855         Update to changes.
16856
16857 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
16858
16859         * verify.c improved the handling of brtrue/brfalse, factored out common code
16860
16861 2007-06-14  Raja R Harinath  <rharinath@novell.com>
16862
16863         Kill MonoGenericMethod.
16864         * class-internals.h (MonoGenericContext::method_inst): Rename from
16865         'gmethod' and convert to a MonoGenericInst.
16866         (MonoGenericMethod): Remove.
16867         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
16868         * loader.c (method_from_methodspec): Update to changes.  Use a
16869         MonoGenericContext as the key to the hashtable.
16870         * metadata.c (mono_metadata_generic_context_equal): Rename from 
16871         'mono_metadata_generic_method_equal' and take MonoGenericContext.
16872         (mono_metadata_generic_context_hash): Likewise from
16873         'mono_metadata_generic_method_hash'.  Change hash function.
16874         (mono_metadata_load_generic_params): Update to changes.
16875         (mono_get_shared_generic_method): Remove.
16876         * metadata-internals.h (mono_get_shared_generic_method): Remove.
16877         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
16878         (inflate_generic_context): Likewise.
16879         (mono_class_inflate_generic_method_full): Likewise.
16880         (setup_generic_array_ifaces): Likewise.
16881         (mono_class_create_from_typespec): Likewise.
16882         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
16883         (method_encode_methodspec): Update callsite.
16884         (reflection_methodbuilder_to_mono_method): Update to changes.
16885         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
16886         MonoGenericContext as the key to the hashtable.
16887         (inflate_mono_method): Update to changes.
16888
16889         * class-internals.h (MonoGenericMethod::container): Remove.
16890         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
16891
16892 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
16893
16894         * profiler-private.h, profiler.c, profiler.h: added API to profile
16895         exception events.
16896
16897 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16898
16899         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
16900
16901 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
16902
16903         * verify.c: method invocation is now validated, now we verify parameter types on stack.
16904         Fixed overflow and underflow not aborting the verification process.
16905
16906 2007-06-13  Mark Probst  <mark.probst@gmail.com>
16907
16908         * class-internals.h (MonoStats): Added stats entries for dynamic
16909         code allocations.
16910
16911 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
16912
16913         * loader.c (mono_free_method): Free header->locals and header->clauses.
16914
16915         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
16916         dynamic case.
16917
16918         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
16919
16920         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
16921
16922 2007-06-12  Raja R Harinath  <rharinath@novell.com>
16923
16924         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
16925         the tables.
16926
16927 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16928
16929         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
16930
16931 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16932
16933         MonoGenericMethod on a diet
16934         * class-internals.h (_MonoMethodInflated::reflection_info): Move
16935         here ...
16936         (_MonoGenericMethod::reflection_info): ... from here.
16937         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
16938         Update to changes.
16939         * reflection.c (inflate_mono_method): Likewise.
16940         (mono_reflection_bind_generic_method_parameters): Likewise.
16941
16942 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16943
16944         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
16945         *verify.c: factored long ldarg forms to share code with short forms
16946
16947 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
16948
16949         *verify.c: fixed code formating factored some duplicate code
16950         into a new function
16951
16952         *verify.h: fixed binary incompatibility introduced earlier
16953
16954         *pedump.c: fixed formating
16955
16956 2007-06-11  Raja R Harinath  <harinath@gmail.com>
16957
16958         Fix assertion when disassembling Mono.C5.dll
16959         * loader.c (method_from_methodspec): Avoid inflating a method
16960         twice with the same context.  If the methodref is inflated, use
16961         the declaring method instead.
16962
16963         * class.c (mono_class_from_generic_parameter): Fix case similar to
16964         bug #81830 handled below, but for method containers.
16965
16966 2007-06-10  Raja R Harinath  <harinath@gmail.com>
16967
16968         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
16969         get_shared_generic_class.  Directly inflate the instance.
16970         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
16971         (inflate_generic_class): Delete.
16972         (get_shared_generic_class): Delete.  Move setting of
16973         'cached_class' and 'cached_context' ...
16974         * metadata.c (mono_metadata_lookup_generic_class): ... here.
16975
16976         * metadata.c (mono_metadata_lookup_generic_class): Change
16977         signature to take the components of a MonoGenericClass rather than
16978         an allocated MonoGenericClass.  Change semantics to be intern-like.
16979         * reflection.c (mono_class_bind_generic_parameters): Update to
16980         changes.  Make locking region tighter.
16981         * class.c (inflate_generic_class): Update to changes.
16982         (get_shared_generic_class): Likewise.
16983         * metadata-internals.h: Likewise.
16984
16985         * reflection.c (mono_class_bind_generic_parameters): Take and
16986         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
16987         (mono_reflection_bind_generic_parameters): Use
16988         'mono_class_bind_generic_parameters' rather than duplicate the code.
16989         * class.c (mono_bounded_array_class_get): Update to changes.
16990         * object-internals.h: Likewise.
16991
16992         * reflection.c (mono_class_bind_generic_parameters): Only support
16993         parameterizing generic type definitions.  Remove support for other
16994         open types.
16995
16996 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
16997
16998         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
16999
17000         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
17001         in the dynamic case.
17002
17003 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
17004
17005         * threads.c: When cleaning up thread, reset the Background bit.
17006         Fixes bug #81720.
17007
17008 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
17009
17010        * metadata.c: Move variable declarations to top of scope.
17011        * verify.c: Move variable declarations to top of scope.
17012
17013        Code is contributed under MIT/X11 license.
17014
17015 2007-06-08  Raja R Harinath  <rharinath@novell.com>
17016
17017         * reflection.c (mono_class_bind_generic_parameters): Replace
17018         open-coded loop with mono_metadata_inflate_generic_inst.
17019
17020         * class.c (get_shared_generic_class): Don't call
17021         mono_get_shared_generic_inst.  Use the container's own
17022         'class_inst'.
17023
17024         * metadata.c (mono_metadata_load_generic_params): Move
17025         initialization of 'context' field here from ...
17026         * class.c (mono_class_create_from_typedef): ... here, and ...
17027         * loader.c (mono_get_method_from_token): ... here.
17028
17029         * class.c (get_shared_generic_class): Rename from
17030         mono_get_shared_generic_class and make static.
17031         (mono_get_shared_generic_inst): Move to metadata.c.
17032         * loader.c (mono_get_shared_generic_method): Likewise.
17033         * class-internals.h, metadata-internals.h: Update to changes.
17034
17035         Fix #81830
17036         * class.c (mono_class_from_generic_parameter): Don't assume a
17037         generic container owner exists.  Generic containers from monodis
17038         don't have any.
17039
17040 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
17041
17042         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
17043         * verify.h: new typedefs to returns the non-verifiable status
17044         * verify.c: initial implementation of generics, stack merging and object compatibility check
17045
17046 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17047
17048         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17049         a MonoInternalHashTable again (fixed bug in internal hash table
17050         code).
17051
17052 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17053
17054         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17055         MonoInternalHashTable again (fixed bug in internal hash table
17056         code).
17057
17058 2007-06-06  Mark Probst  <mark.probst@gmail.com>
17059
17060         * class.c, image.c, class-internals.h, domain.c,
17061         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
17062         changes.  Have to figure out what makes them break the SWF
17063         regression.
17064
17065 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17066
17067         * class.c, image.c, class-internals.h (MonoImage): class_cache is
17068         a MonoInternalHashTable now.
17069
17070 2007-06-04  Mark Probst  <mark.probst@gmail.com>
17071
17072         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
17073         MonoInternalHashTable now.
17074
17075 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
17076
17077         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
17078         invoke_impl code.
17079
17080         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
17081
17082         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
17083         dependent trampoline.
17084
17085         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17086
17087         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
17088
17089 2007-05-29  Robert Jordan  <robertj@gmx.net>
17090
17091         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
17092
17093 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
17094
17095         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
17096
17097 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
17098
17099        * marshal.c: Fix interface lookup loops for
17100        cominterop_get_com_slot_for_method and 
17101        cominterop_get_method_interface. Only need to lookup
17102        if type is a class, else use interface type method is on.
17103
17104        Code is contributed under MIT/X11 license.
17105
17106 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
17107
17108         * reflection.c: HasSecurity can be present even if no specially 
17109         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
17110         SecurityAttribute). Fix CAS regression tests on buildbot.
17111
17112 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
17113
17114        * appdomain.c: Add configure checks for header files.
17115        * image.c: Add configure checks for header files.
17116        * file-io.c: Add configure checks for header files.
17117        * debug-mono-symfile.c: Add configure checks for header files.
17118        * threadpool.c: Add configure checks for header files.
17119        * console-io.c: Add configure checks for header files.
17120        * profiler.c: Add configure checks for header files.
17121        * rawbuffer.c: Add configure checks for header files.
17122        * icall.c: Add configure checks for header files.
17123        * rand.c: Add configure checks for header files.
17124        * socket-io.c: Add configure checks for header files.
17125
17126        Code is contributed under MIT/X11 license.
17127
17128 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
17129
17130         * reflection.c (mono_custom_attrs_from_builders): Remove the 
17131         assertion as it breaks the build.
17132         
17133         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
17134
17135         * reflection.c (lookup_custom_attr): Make a copy here too.
17136
17137         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
17138         dynamic images.
17139
17140         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
17141         images.
17142
17143         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
17144         info.
17145
17146 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
17147
17148         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
17149         (load_cattr_value): Ditto.
17150
17151 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
17152
17153         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
17154
17155 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
17156
17157         * threads.c: In "start_wrapper", set apartment_state to MTA if
17158         apartment_state is Unknown and we're running on 2.0 profile or
17159         higher.
17160         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
17161         to main method, then set apartment_state to Unknown on 1.0 profile,
17162         and MTA on 2.0 profile.
17163
17164 2007-05-16  Jb Evain  <jb@nurv.fr>
17165
17166         * class-internals.h (MonoDefaults): Add an attribute_class and
17167           customattribute_data_class.
17168         * domain.c (mono_init_internal): Populate them.
17169         * reflection.c: Use them to remove duplicates. Make a vew
17170         MonoClass variables `static'.
17171
17172 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
17173
17174         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
17175         step in implementing IMT, so that all isinst checks now can go
17176         through the bitmap.
17177         This was needed because vtables for TransparentProxy need to look
17178         like the vtable of the "target" class, so they need to point to
17179         its interface bitmap directly.
17180
17181         * object.c: inside "mono_class_create_runtime_vtable" and
17182         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
17183
17184 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
17185
17186         * object-internals.h
17187           culture-info.h : added territory field in MonoCulture and
17188           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
17189         * locales.c : fill territory field above too.
17190         * culture-info-table.h : regenerated.
17191
17192 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
17193
17194         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
17195         Fixes #81599.
17196
17197 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
17198
17199         * object.c: Always initialize apartment, even if 
17200         there is no custom attributes on entry point.
17201         
17202         Code is contributed under MIT/X11 license.
17203
17204 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
17205
17206         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
17207         * metadata.c: If no encoding is set, check for unicode
17208         on class.
17209         
17210         Code is contributed under MIT/X11 license.
17211
17212 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17213
17214         * threads.c: Handle if mono_thread_current returns NULL 
17215         
17216         Code is contributed under MIT/X11 license.
17217
17218 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
17219
17220         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
17221         in start_wrapper. Added mono_thread_init_apartment_state and
17222         mono_thread_cleanup_apartment_state.
17223         * object.c: Initialize thread apartment state on main thread
17224         by checking for STAThreadAttribute on entry point.
17225         * object-internals.h: Add apartment_state field to MonoThread.
17226         * threads-types.h: Add unmanaged definition of 
17227         System.Threading.ApartmentState, MonoThreadApartmentState.
17228         
17229         Code is contributed under MIT/X11 license.
17230         
17231 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
17232
17233         * class.c: Fix windows build.
17234         * class-internals.h: Fix windows build.
17235         
17236         Code is contributed under MIT/X11 license.
17237
17238 2007-05-08  Robert Jordan  <robertj@gmx.net>
17239
17240         * process.c (CreateProcess_internal):
17241         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
17242         .CreateNoWindow was specified. Fixes #81496.
17243
17244 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17245
17246         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
17247         step in implementing IMT, replaced it with two compact arrays
17248         (interfaces_packed and interface_offsets_packed) and a bitmap that
17249         is used for isinst checks (interface_bitmap).
17250
17251         * class.c: (compare_interface_ids): compare function to pass to
17252         bsearch when looking for an interface with a given id.
17253         (mono_class_interface_offset): reimplemented using bsearch on
17254         interfaces_packed, getting the offset from interface_offsets_packed.
17255         (print_implemented_interfaces): utility debugging function.
17256         (setup_interface_offsets): reworked to initialize interfaces_packed,
17257         interface_offsets_packed and interface_bitmap.
17258
17259         * object.c: replaced all accesses to "MonoClass.interface_offsets"
17260         with uses of interfaces_packed and interface_offsets_packed.
17261
17262 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
17263
17264         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
17265         mono_class_interface_offset prototype to wrap all accesses to
17266         "MonoClass.interface_offsets".
17267
17268         * class.c: Implemented mono_class_interface_offset, and wrapped all
17269         accesses to "MonoClass.interface_offsets".
17270
17271         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
17272         "MonoClass.interface_offsets".
17273
17274 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
17275
17276         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
17277         GetMethodFromHandle overloads (bug #78637).
17278
17279 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
17280
17281         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
17282         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
17283
17284 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
17285
17286         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
17287         #81498.
17288
17289         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
17290         gracefully.
17291         (mono_custom_attrs_from_index): Ditto.
17292
17293         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
17294         Fixes #81501.
17295
17296 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
17297
17298         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
17299         is now allocated from a mempool.
17300
17301 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
17302
17303         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
17304         caller holds threads_lock, leading to deadlocks. Fixes #81476.
17305
17306 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
17307
17308         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
17309         mono_loader_clear_error () too late. Fixes #81463.
17310
17311 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
17312
17313         * culture-info-table.h : regenerated.
17314
17315 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
17316
17317         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
17318         is missing.
17319
17320 2007-04-25  Dick Porter  <dick@ximian.com>
17321
17322         * Makefile.am: Put the mingw enforced-optimisation back into the
17323         PLATFORM_WIN32 section.
17324
17325 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
17326
17327         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
17328         patch.
17329
17330         * image.c (mono_image_load_module): New API function to load a module reference.
17331
17332         * image.c (load_modules): Load modules lazily. Fixes #80812.
17333
17334         * class.c (mono_class_from_typeref): Use mono_image_load_module.
17335         
17336         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
17337
17338         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
17339         to mono_image_load_module_dynamic.
17340
17341 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
17342
17343         * marshal.c: Fix calling convention for CCW on non-windows
17344         platforms. STDCALL on windows, CDECL everywhere else to work 
17345         with XPCOM and MainWin COM.
17346         
17347         Code is contributed under MIT/X11 license.
17348
17349 2007-04-23  Martin Baulig  <martin@ximian.com>
17350
17351         Fix #80969.
17352
17353         * loader.c
17354         (method_from_memberref): Added `gboolean *used_context' argument.
17355         (mono_get_method_from_token): Likewise.
17356         (mono_get_method_full): Don't insert the method in the cache when
17357         `used_context' is true.
17358
17359 2007-04-23  Raja R Harinath  <rharinath@novell.com>
17360
17361         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
17362
17363         * reflection.c (mono_reflection_bind_generic_parameters): Don't
17364         create new MonoTypes for returned types.
17365         * class.c (mono_generic_class_get_class): Export mono-internal.
17366         * class-internals.h: Update to changes.
17367
17368 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
17369
17370         * threadpool.c, threadpool.h, icall-def.h: patch from
17371         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
17372
17373 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
17376         
17377         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
17378
17379         * threads.c (mono_thread_get_stack_bounds): New helper function.
17380
17381         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
17382         Correctly compute stack bounds when attaching. Fixes #81394.
17383
17384 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
17385
17386         * reflection.c: fix handling of doubles in custom attributes
17387         for the arm-fpa format (bug #81368).
17388
17389 2007-04-18  Raja R Harinath  <rharinath@novell.com>
17390
17391         * reflection.c (assembly_add_win32_resources): Mildly relax an
17392         bounds check to let the end pointer point just past the end of the
17393         allocated buffer.  (may fix #81384)
17394
17395 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
17396
17397         * culture-info-table.h : regenerated.
17398
17399 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
17400
17401         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
17402         the thread is aborted early.
17403
17404 2007-04-05  Dick Porter  <dick@ximian.com>
17405
17406         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
17407         FindFirstFile()/FindNextFile() to find entries.  This lets the
17408         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
17409         81038.
17410
17411         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
17412         the parameters of
17413         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
17414
17415 2007-04-04  Martin Baulig  <martin@ximian.com>
17416
17417         * debug-helpers.c
17418         (mono_method_desc_full_match): Add support for nested classes.
17419
17420 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
17421
17422         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
17423
17424 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
17425
17426         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
17427         waiting for too many threads.
17428
17429 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
17430
17431         * environment.c: Fix return value check on uname so we can get the 
17432         executing version on Solaris operating systems.
17433
17434 2007-03-28  Jb Evain  <jbevain@gmail.com>
17435
17436         * class.c (mono_type_get_name_recurse): Complete the
17437         fix for the creation of assembly qualified names for
17438         pointer types. Fixes #81208.
17439
17440 2007-03-27  Dick Porter  <dick@ximian.com>
17441
17442         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
17443         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
17444         changed.
17445
17446         * threads.c
17447         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
17448         the value of ReleaseMutex().
17449
17450 2007-03-27  Dick Porter  <dick@ximian.com>
17451
17452         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
17453         in little-endian order, not network endian, so must be converted
17454         to host endian here.  Fixes bug 80593.
17455
17456 2007-03-22  Jb Evain  <jbevain@gmail.com>
17457
17458         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
17459         qualified names for pointer types. Fixes #81208.
17460
17461 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
17462
17463         * marshal.c: Add support for PreserveSigAttribute. 
17464         
17465         Code is contributed under MIT/X11 license.
17466
17467 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
17468
17469         * process.c: Fix endianness issues. Fixes #81126.
17470
17471         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
17472         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
17473
17474         * image.c (mono_image_lookup_resource): Make this work on big-endian
17475         machines.Change API contract so the caller needs to free the return value.
17476         
17477         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
17478         API change.
17479         
17480 2007-03-14  Martin Baulig  <martin@ximian.com>
17481
17482         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
17483         mono_type_get_desc() as well.
17484
17485 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
17486
17487         * icall.c:  Fix environ access in VS.  
17488         
17489 2007-03-13  Alp Toker  <alp@atoker.com>
17490
17491         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
17492         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
17493         #63841.
17494
17495 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
17496
17497         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
17498         circular references among dynamic methods. Fixes #81091.
17499
17500         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
17501
17502 2007-03-09  Martin Baulig  <martin@ximian.com>
17503
17504         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
17505
17506 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
17507
17508         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
17509         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
17510         
17511         Code is contributed under MIT/X11 license.
17512         
17513 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
17514
17515         * loader.c: Reapply patch for bug #79424.
17516
17517 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17518
17519         * metadata.c (mono_type_to_unmanaged): Only convert object to
17520         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
17521
17522 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
17523
17524         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
17525         (and incorrectly set) is_reference field from MonoGenericInst.
17526
17527 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
17528
17529         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
17530         a little earlier.
17531
17532         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
17533
17534         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
17535
17536 2007-03-05  Miguel de Icaza  <miguel@novell.com>
17537
17538         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
17539         FileOptions.1 value to mean "temporary", map that to
17540         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
17541
17542         Fixes 80688
17543
17544 2007-03-03  Marek Habersack  <mhabersack@novell.com>
17545
17546         * appdomain.c: implement MS .Net style shadow copying. Copies of
17547         the assemblies are made in a subdirectory of the dynamic base
17548         directory, the assembly names are preserved.
17549         Copy .mdb and .config files along with the assemblies being shadowed.
17550
17551 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17552
17553         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
17554         (emit_marshal_handleref): Ditto.
17555
17556         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
17557         on Visual C++. Fixes #80671.
17558
17559 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
17560
17561         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
17562         for clone operations.
17563
17564 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * marshal.c: Fix warnings.
17567
17568 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
17569
17570         * loader.c: allow case-insensitive matching of the dll name
17571         in dllmap handling when prefixed with "i:".
17572
17573 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
17574
17575         * threads.c: Fix #ifdef for dummy_apc function for VS.
17576
17577 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
17578
17579         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
17580
17581 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
17582         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
17583         giving precedence to the methods with a fully qualified name
17584         (InterfaceName.MethodName) when building the interface sections
17585         of the vtable.
17586
17587 2007-02-16  Dick Porter  <dick@ximian.com>
17588
17589         * threadpool.c (append_job): Fix fast-path array handling, so it's
17590         less likely the array will grow exponentially when the load is
17591         heavy.
17592
17593 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17594
17595         * metadata-internals.h, loader.c: fix dllmap lookup order
17596         for non-function maps, too, and prepare for fallback code.
17597
17598 2007-02-12  Robert Jordan  <robertj@gmx.net>
17599
17600         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
17601         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
17602         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
17603         GlobalFree. Fixes a part of bug #77075.
17604
17605 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
17606
17607         * loader.c: implemented typedef parent in field memberref.
17608
17609 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
17610
17611         * marshal.c: Fix warnings and remember to call Release on
17612         IUnknown of RCW.
17613         
17614         Code is contributed under MIT/X11 license.
17615
17616 2007-02-10  Miguel de Icaza  <miguel@novell.com>
17617
17618         * class-internals.h: Add MonoHandleRef definition, and
17619         handleref_class to mono_defaults. 
17620
17621         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
17622         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
17623
17624         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
17625         (do nothing on this stage)
17626         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
17627         (emit_marshal_handleref): New method, used for argument handling
17628         of HandleRefs. 
17629
17630 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
17631
17632         * class.c (mono_class_setup_parent): Lazily init com types.
17633         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
17634         init com types.
17635         * object.c (mono_remote_class_vtable): Lazily init com types.
17636         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
17637         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
17638         * domain-internals.h: Expose mono_init_com_types.
17639         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
17640         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
17641         Add support for COM Callable Wrapper marshalling.
17642         * marshal.h: Add icall definitions.
17643         * gc.c: Handle freeing of CCWs in finalizer code.
17644         
17645         Code is contributed under MIT/X11 license.
17646
17647 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
17648
17649         * reflection.c: changed all the signature encoding code to use
17650         a variable-sized buffer.
17651
17652 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17653
17654         * marshal.c: locking fixes: never take the loader lock
17655         or other runtime locks when holding the marshal lock
17656         (fixes bug#80664).
17657
17658 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
17659
17660         * marshal.c: make the delegate function pointer mapping
17661         work for the moving GC.
17662
17663 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
17664
17665         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
17666         for bug #80618.
17667
17668 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
17669
17670         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
17671         gmodule.
17672
17673 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
17674
17675         * threadpool.c: made the code moving-GC safe.
17676
17677 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
17678
17679         * assembly.c, boehm-gc.c, class-internals.h, class.c,
17680         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
17681         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
17682         warning cleanup.
17683         * reflection.c: warning cleanup, some threading and moving GC fixes.
17684
17685 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
17686
17687         * class.c, loader.c: create the needed Set/Get/Address array methods
17688         as well as the .ctors in mono_class_init (), fixes bug #80567.
17689
17690 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
17691
17692         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
17693         we doesn't decrease its alignment. Should fix the sparc build.
17694
17695 2007-01-24  Dick Porter  <dick@ximian.com>
17696
17697         * socket-io.c
17698         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17699         Create the returned object if we need to ignore an unsupported
17700         socket option.  Fixes a segfault reported by Atsushi.
17701
17702 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
17703
17704         * class.c, object.c: restrict GC-tracked fields to
17705         UIntPtr fields used inside corlib, so we provide better
17706         type info to the GC and also allow broken packing as in
17707         bug #80580.
17708
17709 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
17710
17711         * sgen-gc.c: removed duplicated function.
17712
17713 2007-01-19  Miguel de Icaza  <miguel@novell.com>
17714
17715         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
17716         value that means that the value is not supported, but that we
17717         should not return a failure, but instead report this as a
17718         successful operation.
17719
17720 2007-01-19  Raja R Harinath  <rharinath@novell.com>
17721
17722         Fix tests/bug79956.2.il
17723         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
17724         (mono_generic_class_get_class): If the generic definition in an
17725         enum, copy over other fields related to it.
17726
17727 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
17728
17729         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
17730         genericinst enums (bug #79215).
17731
17732 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
17733         * class.c: Fix bug 80307.
17734
17735 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
17736
17737         * image.c: if the file table is not present, try to load
17738         all the modules, since we don't have info about them
17739         having or not metadata (bug #80517).
17740         * assembly.c: allow mono_assembly_load_references () to
17741         work for netmodules.
17742
17743 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
17744
17745         * image.c, metadata-internals.h, object.c: execute module
17746         cctors when running on the 2 runtime if present (bug #80487).
17747
17748 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
17749
17750         * icall.c: optimized InitializeArray() on bigendian.
17751
17752 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
17753
17754         * icall.c: fix for the broken ARM FPA double format.
17755
17756 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
17757
17758         * icall.c: handle endian issues for r4 and r8 types, too, in
17759         the InitializeArray() icall.
17760
17761 2007-01-15  Miguel de Icaza  <miguel@novell.com>
17762
17763         * loader.c (mono_loader_error_prepare_exception): Clear the error
17764         once we have extracted the information from it, do this before we
17765         call into the JIT's class loading mechanisms.
17766
17767         * object.c (mono_class_create_runtime_vtable): Do not clear the
17768         loader error before calling mono_class_get_exception_for_failure
17769         as the loader error is needed inside
17770         mono_class_get_exception_for_failure to throw the error (thinko).
17771
17772         Fixes #80521
17773         
17774 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
17775
17776         * reflection.c: align fields rva data so it's faster to load at
17777         runtime.
17778
17779 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17780
17781         Prepare to simplify GenericMethod handling.
17782         * class-internals.h (mono_method_get_context): New accessor function.
17783         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
17784         rather than directly accessing '->context' field.
17785
17786         * class-internals.h (_MonoGenericParam.method): Move ...
17787         (_MonoGenericContainer): ... here.  Add into union with klass field.
17788         * class.c, icall.c, loader.c, metadata.c, reflection.c:
17789         Update to changes.
17790
17791 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
17792
17793         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
17794         the wrapper type enum and reduce relocations.
17795
17796 2007-01-12  Raja R Harinath  <rharinath@novell.com>
17797
17798         * reflection.c (inflate_mono_method): Reuse method instantiation
17799         from the generic method, if available.
17800
17801 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17802
17803         * marshal.c (emit_marshal_variant): Fix conv_arg
17804         type in last commit, based on whether parameter is byref.
17805         
17806 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17807
17808         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
17809         marshalling.
17810         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
17811         MONO_TYPE_OBJECT back for VARIANT support.
17812
17813 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
17814
17815         * marshal.c, marshal.h, icall-def.h: Implement 
17816         Marshal.ReAllocCoTaskMem.
17817
17818 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
17819
17820         * marshal.c: memory retention fixes: use the proper
17821         image cache for runtime_invoke method lookups.
17822
17823 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
17824
17825         * mempool.c: added code to help debug mempool allocations.
17826
17827 2007-01-11  Dick Porter  <dick@ximian.com>
17828
17829         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
17830         support (experimenting with faking it with IP_MTU_DISCOVER for
17831         systems that don't have IP_DONTFRAGMENT.)
17832         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
17833         icall.
17834
17835         * icall-def.h: new System.Net.Sockets.Disconnect icall.
17836
17837         * socket-io.h: Add new fields to MonoSocketAsyncResult
17838         corresponding to the new ones in Socket.cs.
17839
17840 2007-01-11  Raja R Harinath  <rharinath@novell.com>
17841
17842         Fix IronPython regression mentioned in #80249
17843         * metadata.c (do_mono_metadata_parse_generic_class): Clear
17844         'cached_context' field, since it may have been initialized as a
17845         side-effect of metadata parsing.
17846
17847         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
17848         (_MonoGenericClass.cached_class): Move here and rename from lone
17849         remaining field of ...
17850         (_MonoInflatedGenericClass): ... this.  Remove.
17851         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
17852         to changes.
17853
17854         Fix mcs/tests/test-128.cs regression.
17855         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
17856         2007-01-10 change below.
17857         [MONO_TYPE_OBJECT]: Recurse into array case.
17858
17859 2007-01-11  Raja R Harinath  <harinath@gmail.com>
17860
17861         * class-internals.h (mono_get_inflated_generic_class): Remove.
17862         * class.c (mono_get_inflated_generic_class): Remove.
17863         (mono_generic_class_get_class): Rename from
17864         mono_class_create_generic.
17865         (mono_class_from_mono_type) [GENERICINST]: Use it.
17866         * reflection.c, metadata.c: Update to changes.  Use
17867         'mono_class_from_mono_type'.
17868
17869 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
17870
17871         * reflection.c: use passed type when encoding an array element
17872         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
17873
17874 2007-01-09  Robert Jordan  <robertj@gmx.net>
17875
17876         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
17877         result arguments (someDelegate.EndInvoke (unrelatedAres)).
17878         Fixes bug #80392.
17879
17880 2007-01-09  Raja R Harinath  <rharinath@novell.com>
17881
17882         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
17883
17884         * object.c (set_value): Avoid aliasing between type->data.klass
17885         and type->data.generic_class.
17886
17887         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
17888
17889 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17890
17891         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
17892         between type->data.klass and type->data.generic_class.
17893
17894 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
17895
17896         * marshal.c: In MS.NET, StringBuilder objects are not copied by
17897         value in out parameters.
17898
17899 2007-01-08  Raja R Harinath  <rharinath@novell.com>
17900
17901         Simplify invariant for MonoGenericClass::klass field.
17902         * class.c (mono_class_create_generic): Verify 'klass' is null.
17903         * metadata.c (do_mono_metadata_parse_generic_class): Don't
17904         initialize 'klass' field.
17905
17906 2007-01-05  Raja R Harinath  <rharinath@novell.com>
17907
17908         Ongoing work to avoid redundant data and simplify invariants.
17909         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
17910         'generic_class', and change type to a GenericInst.
17911         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
17912         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
17913
17914 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
17915
17916         * class.c : skip io-layer under PLATFORM_WIN32.
17917
17918 2007-01-03  Tor Lillqvist  <tml@novell.com>
17919
17920         Fix #80305: In a bundled executable, look in the bundled exe
17921         assembly to determine the runtime version. Add the possibility to
17922         bundle also the machine.config file.
17923         
17924         * assembly.c (mono_assembly_open_from_bundle): Make
17925         non-static. Allow being called even if we have no bundled
17926         assemblies, and return NULL right away in that case.
17927
17928         * domain-internals.h: Declare mono_assembly_open_from_bundle()
17929         here.
17930
17931         * domain.c (app_config_parse): Take an assembly exe file name as
17932         parameter instead of a config file name. Check for a bundled
17933         config file for that assembly by calling
17934         mono_config_string_for_assembly_file() (see below) before looking
17935         for one in the file system.
17936         (get_runtimes_from_exe): Corrsponding change to call of
17937         app_config_parse().
17938         (get_runtimes_from_exe): Check for bundled assembly exe file first
17939         by calling mono_assembly_open_from_bundle(). If no bundled
17940         assembly exe file is found, call mono_image_open() as before to
17941         look it up in the file system.
17942
17943         * mono-config.c: Add variable bundled_machinec_onfig.
17944         (mono_config_string_for_assembly_file): New function.
17945         (mono_config_for_assembly): Move code snippet that looks for a
17946         bundled assembly .config file into the above new function. Call
17947         it.
17948         (mono_register_machine_config, mono_get_machine_config): New
17949         functions to set and retrieve
17950
17951         * assembly.h: Declare mono_register_machine_config().
17952
17953         * mono-config.h: Declare mono_get_machine_config() and
17954         mono_config_string_for_assembly_file().
17955
17956         * icall.c: No declaration of environ necessary on Win32. It is
17957         declared (as a macro expanding to a function call) in stdlib.h.
17958         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
17959         New internal mono function. Returns the value of
17960         mono_get_machine_config() as a Mono string.
17961
17962         * icall-def.h: Add get_bundled_machine_config().
17963
17964 2007-01-04  Raja R Harinath  <rharinath@novell.com>
17965
17966         Remove redundant field
17967         * class-internals.h (_MonoGenericContext.container): Remove field.
17968         * loader.c (mono_method_get_signature_full): Don't parse a
17969         "container" for a signature parse when the signature is inflated
17970         immediately.
17971         (method_from_methodspec): Likewise, for a generic_inst.
17972         * class.c, metadata.c, reflection.c: Update to changes.
17973
17974 2006-01-04  Raja R Harinath  <rharinath@novell.com>
17975
17976         * class-internals.h (_MonoGenericClass): Rename 'context' field to
17977         'cached_context', and change semantics -- it starts off NULL, and
17978         is initialized on demand.
17979         * class.c (mono_generic_class_get_context): New accessor to
17980         replace 'context' field accesses.
17981         (mono_class_get_context): New helper.
17982         (*): Update to changes.
17983         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
17984
17985 2007-01-03  Miguel de Icaza  <miguel@novell.com>
17986
17987         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
17988         before the memcpy.   Fixes Marshal2 regression.
17989
17990 2007-01-02  Jb Evain  <jbevain@gmail.com>
17991
17992         * blob.h: add a MONO_TYPE_ENUM definition
17993         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
17994         fix the encoding of arrays of enums in custom attributes.
17995
17996         Fixes #79666.
17997
17998 2007-01-01  Miguel de Icaza  <miguel@novell.com>
17999
18000         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
18001         string is null terminated, but only cut the string short if it
18002         overflows the buffer.   
18003         
18004         (mono_string_to_byvalstr): Also fix this routine.   The code here
18005         was not properly terminating a string (it was only terminated
18006         because of the previous catch-all memset). 
18007
18008         I left the memset, because I do not know if applications expect
18009         the runtime to clear this region. 
18010
18011         Fixes #79944.
18012
18013         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
18014         Clear the error before returning to unmanaged code to prevent the
18015         runtime from being confused later on (fixes  80420).
18016         (ves_icall_type_from_name): Always call mono_loader_clear_error
18017         after parsing a type that could have failed.
18018         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
18019
18020         * loader.c (mono_loader_clear_error): Fix indentation.
18021
18022 2006-12-28  Martin Baulig  <martin@ximian.com>
18023
18024         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
18025
18026 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
18027
18028         * reflection.c: patch from Rolf Bjarne Kvinge to fix
18029         getting a token for an EnumBuilder.
18030
18031 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
18032
18033         * reflection.c: be more careful in case resource generation
18034         fails to create the data array.
18035
18036 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
18037
18038         * sgen-gc.c: write barrier for clone and fix unregister handles.
18039
18040 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
18041
18042         * reflection.c: some fixes needed in the generics code for the moving GC.
18043
18044 2006-12-22  Robert Jordan  <robertj@gmx.net>
18045
18046         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
18047         account. Fixes bug #80299.
18048
18049 2006-12-21  Raja R Harinath  <rharinath@novell.com>
18050
18051         Fix WaitHandle usage in delegates.
18052         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
18053         * object.c (mono_wait_handle_new): Use the property set method to
18054         initialize the handle.
18055         (mono_wait_handle_get_handle): New.
18056         * threadpool.c (mono_async_invoke): Use it.
18057         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
18058         Likewise.
18059         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
18060
18061 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
18062
18063         * marshal.c (emit_marshal): Call emit_marshal_variant and
18064         emit_marshal_com_interface when applicable.
18065         (emit_marshal_variant, emit_marshal_com_interface): Add
18066         methods for this case and remove if's from emit_marshal_object.
18067         
18068 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
18069
18070         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
18071
18072 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
18073
18074         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
18075         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
18076         and GlobalFree on Windows. Remove FIXME.
18077
18078 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18079
18080         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
18081         implementation for managed objects.
18082
18083 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
18084
18085         * object.c: implemented code to be used for checking
18086         that no reference field overlaps with non-references.
18087
18088 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18089
18090         * threadpool.c: fix queue code to be compatible with the
18091         moving GC.
18092
18093 2006-12-18  Miguel de Icaza  <miguel@novell.com>
18094
18095         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
18096         in structures by throwing ArgumentNullException.
18097
18098         (emit_marshal_safehandle): Also when they are null parameters.
18099
18100         (emit_marshal_safehandle): Add support for ref
18101         SafeHandles parameters
18102
18103 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18104
18105         * profiler.c: updated to use the mono-dl API instead of
18106         gmodule.
18107
18108 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18109
18110         * profiler.c: updated to use the mono-dl dynamic loading
18111         API instead of gmodule.
18112
18113 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
18114
18115         * profiler.c: use readlink, older versions of glib don't have
18116         g_file_read_link ().
18117
18118 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18119
18120         * profiler.c: try to detect the path to mono if libc fails to provide
18121         a useful name (bug #80286).
18122
18123 2006-12-16  Raja R Harinath  <rharinath@novell.com>
18124
18125         Fix #80242
18126         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
18127         instance, use the generic type definition instead.
18128         (ves_icall_Type_GetNestedTypes): Likewise.
18129         * class.c (mono_class_create_generic): Always set the
18130         nested_classes of a generic instance to NULL, even if the generic
18131         type definition has nested types.
18132
18133 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
18134
18135         * marshal.c (mono_string_from_bstr): Revert previous Windows change
18136         and fix on Linux.
18137         
18138 2006-12-15  Miguel de Icaza  <miguel@novell.com>
18139
18140         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
18141         my arguments were in the wrong order.   I also fixed the Windows
18142         version which seems to have had the same issue.
18143
18144         (mono_free_bstr): On Unix, this is g_free.
18145         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
18146         conversions (for the tests in corlib to pass).
18147
18148 2006-12-14  Miguel de Icaza  <miguel@novell.com>
18149
18150         * marshal.c (emit_ptr_to_object_conv): For now, ignore
18151         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
18152         exception if a ref SafeHandle in a struct has changed).
18153         
18154         (emit_struct_conv): Do not perform layout checks for classes
18155         derived from SafeHandle, as those are specially handled. 
18156
18157         (emit_object_to_ptr_conv): Add support for
18158         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
18159
18160         (emit_marshal_safehandle): Implement conversion of return values
18161         of safehandles (MARSHAL_ACTION_CONV_RESULT).
18162         
18163         * threads.c: WaitHandle now is compiled with two different handles
18164         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
18165         for 2.0.
18166         
18167         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
18168         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
18169         these routines to cope with both kinds of fields.
18170
18171 2006-12-12  Miguel de Icaza  <miguel@novell.com>
18172
18173         * metadata.c (mono_type_to_unmanaged): Handle the case where
18174         type->data.klass is a SafeHandle, and in that case, return the
18175         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
18176         MONO_MARSHAL_CONV_SAFEHANDLE. 
18177
18178 2006-12-11  Miguel de Icaza  <miguel@novell.com>
18179
18180         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
18181         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
18182         calling emit_marshal_object.
18183
18184         (emit_marshal_safehandle): Implement marshalling of
18185         SafeHandle parameters (no ref support yet).
18186
18187         (MarshalAction): Document the defines as I implement
18188         them for SafeHandle.
18189
18190         (emit_marshal_object): indentation police.
18191
18192         * class-internals.h: Define MonoSafeHandle.
18193         Add safehandle_class to MonoDefaults type.
18194
18195         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
18196         list of classes to check for fields. 
18197
18198         * domain.c (mono_init_internal): Add SafeHandle to the list of
18199         mono_defaults loaded.
18200
18201 2006-12-15  Raja R Harinath  <rharinath@novell.com>
18202
18203         Fix #80253
18204         * reflection.c (mono_reflection_bind_generic_parameters): If the
18205         generic type definition is a type builder, ensure that it is fully
18206         initialized before instantiating it.  Kill some dead code.
18207
18208 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
18209
18210         * object.c: clear the loader_error () before loading
18211         more metadata stuff (bug #80258).
18212
18213 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
18214
18215         * icall.c, icall-defs.h: type modifiers icalls for
18216         parameters and properties.
18217
18218 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
18219
18220         * object.c, icall.c: fixed warnings.
18221
18222 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18223
18224         * marshal.c: fixed a couple of leaks and coding style in a few places.
18225
18226 2006-12-08  Dick Porter  <dick@ximian.com>
18227
18228         * process.c: Cope with NULL ProcessStartInfo arguments on windows
18229         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
18230         80173.
18231
18232 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
18233
18234         * process.c: ProcessStartInfo may have only filename set and
18235         arguments can be NULL.
18236
18237 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18238
18239         * icall.c: fix leak found by Robert Jordan.
18240
18241 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18242
18243         * marshal.c, marshal.h: generate managed method to access an element
18244         of a multi-dimensional array.
18245
18246 2006-11-30  Paolo Molaro (lupus@ximian.com)
18247
18248         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
18249
18250 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
18251
18252         * icall.c: back out GetFields () fix until the serialization code is
18253         fixed to not depend on the incorrect behaviour.
18254
18255 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
18256
18257         * profiler.c: provide defaults if none are set.
18258
18259 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
18260
18261         * Makefile.am, attrdefs.h: new public header file with
18262         constants for attributes for use by embedders.
18263
18264 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
18265
18266         * icall.c: GetFields () fix for bug #80064.
18267
18268 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
18269
18270         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
18271         removed long unused icalls.
18272
18273 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
18274   
18275         * marshal.c: 
18276                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
18277                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
18278                 can be generated without a delegate class.
18279                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
18280         
18281         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18282
18283 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18284
18285         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
18286         #80069.
18287
18288 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18289
18290         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
18291         icall-def.h: added icalls needed by System.GC.
18292
18293 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
18294
18295         * loader.c: ensure the class in catch clauses is handled
18296         correctly for generics methods (fixes bug#79980).
18297
18298 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
18299
18300         * monitor.h, monitor.c: added mono_locks_dump () function
18301         to help debug deadlocks involving managed locks.
18302
18303 2006-11-13  Dick Porter  <dick@ximian.com>
18304
18305         * file-io.c (get_file_attributes): If the file is a symlink try
18306         and get the stat data for the target, but also add the
18307         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
18308         the specs for the windows symlink support, but will probably have
18309         to be reworked when I have test data from a vista machine.  Fixes
18310         bug 79887.
18311
18312 2006-11-13  Dick Porter  <dick@ximian.com>
18313
18314         * gc.c (mono_domain_finalize): 
18315         * marshal.c (mono_delegate_begin_invoke): 
18316         * threadpool.c (socket_io_init, mono_thread_pool_init)
18317         (mono_thread_pool_finish): 
18318         * monitor.c (mono_monitor_try_enter_internal): 
18319         * threads.c (mono_thread_resume, mono_thread_init)
18320         (mono_thread_suspend_all_other_threads)
18321         (mono_thread_execute_interruption): 
18322         * appdomain.c (mono_domain_unload): Check for NULL error returns
18323         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
18324         75733.
18325
18326 2006-11-11  Miguel de Icaza  <miguel@novell.com>
18327
18328         * process.c
18329         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
18330         Only close the handle if the value of the handle is not
18331         INVALID_HANDLE_VALUE.  This just makes the process a bit more
18332         robust.
18333
18334         Improvement for #75733, so that we do not run into this problem. 
18335
18336         
18337         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
18338         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
18339         internal variables.  Fixes #79462 
18340         
18341
18342 2006-11-09  Dick Porter  <dick@ximian.com>
18343
18344         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18345         Use poll() not select().  Fixes bug 79397.
18346
18347 2006-11-09  Raja R Harinath  <rharinath@novell.com>
18348
18349         Fix #79872
18350         * assembly.c (mono_assembly_load_from_full): Check that the given
18351         image has an assembly manifest.
18352
18353 2006-11-09  Ankit Jain  <jankit@novell.com>
18354
18355         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
18356         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
18357         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
18358
18359 2006-11-07  Dick Porter  <dick@ximian.com>
18360
18361         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18362         Put the old resolver behaviour back for pre-2.0 profiles.
18363
18364 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18365
18366         * threadpool.c: precise GC and locking fixes.
18367
18368 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
18369
18370         * class.c: don't load types that have an explicit unaligned
18371         managed reference. Provide better info in the TypeLoad exception.
18372         Part of the fix for bug #79744.
18373         * object.c: use the correct check for class type load issues.
18374
18375 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18376
18377         * class.c: enforce alignment of fields with managed references
18378         even when Pack=1 is forced by the user (bug #77788).
18379
18380 2006-11-03  Dick Porter  <dick@ximian.com>
18381
18382         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
18383         If the address reverse lookup fails, return it as the hostname
18384         anyway.  Fixes bug 79721.
18385
18386 2006-11-03  Dick Porter  <dick@ximian.com>
18387
18388         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
18389         Fix build on Windows.
18390
18391 2006-11-02  Dick Porter  <dick@ximian.com>
18392
18393         * icall-def.h: 
18394         * object-internals.h: 
18395         * exception.c (mono_get_exception_thread_interrupted): 
18396         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
18397         Fixes bug 74525.
18398
18399         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
18400         Check for pending Thread.Interrupt.
18401
18402 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
18403         * loader.c: Fixed bug 79684.
18404
18405 2006-10-27  Dick Porter  <dick@ximian.com>
18406
18407         * file-io.c (get_file_attributes): Force symlinks to directories
18408         to be returned as a regular file.  Fixes bug 79733.
18409 2006-10-26  Dick Porter  <dick@ximian.com>
18410
18411         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
18412         CreateFile to open a directory then we need to set the
18413         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
18414
18415 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
18416
18417         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
18418         friends.
18419
18420 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18421
18422         * sgengc.c: small cleanup of timer code.
18423
18424 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
18425
18426         * sgen-gc.c: fix some warnings and start adding support for
18427         complete object removal on domain unload.
18428
18429 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
18430
18431         * assembly.c: build_assembly_name should not consider a version
18432         number without build or revision number invalid. Fixes bug #79715.
18433
18434 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
18435
18436         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
18437         call kernel32 function OutputDebugString directly.
18438         
18439         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
18440         
18441 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
18442
18443         * reflection.c: small cleanup, using a function to insert a MonoString
18444         in the string heap.
18445
18446 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
18447
18448         * reflection.c: moving GC fixes.
18449
18450 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
18451
18452         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
18453         all the objects with finalizers belonging to an unloading appdomain.
18454
18455 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
18456
18457         * sgen-gc.c: added ability to allocate even when the nursery is fully
18458         pinned and fixed a couple of bugs.
18459
18460 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18461
18462         * threads.h: Revert the last change for now.
18463
18464         * threads.h (mono_thread_get_pending_exception): Rename this to
18465         mono_thread_get_undeniable_exception ().
18466
18467 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
18468
18469         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
18470         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
18471         when fname does not refer to valid assembly. This result in a more
18472         meaningful error message.
18473         * exception.c: added mono_get_exception_bad_image_format2 which 
18474         constructs a BadImageFormatException using the ctor taking a custom
18475         message and the file name. Passing in a NULL msg results in a default
18476         message.
18477         * exception.h: define mono_get_exception_bad_image_format2 function.
18478         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
18479         when file name pointed to an invalid IL image. Use 
18480         mono_get_exception_file_not_found2 to construct FileNotFoundException,
18481         as this results in a more meaningful error message.
18482
18483 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
18484
18485         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
18486         #79465.
18487
18488 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
18489
18490         * metadata.c (mono_type_size): Change the align parameter to guint32 for
18491         consistency with the other _size functions.
18492         (mono_type_stack_size): Ditto.
18493
18494         * class.c object.c icall.c: Fix warnings caused by the above change.
18495
18496         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
18497
18498         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
18499
18500         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
18501
18502 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
18503
18504         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
18505         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
18506         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
18507         threadpool.h, threads-types.h: mark more internal functions.
18508
18509 2006-10-11  Dick Porter  <dick@ximian.com>
18510
18511         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
18512         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
18513         reproduce the bug even before applying the fix.)
18514
18515 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
18516
18517         * reflection.c: allow retrieving attributes for arguments in generic
18518         methods (bug #79241).
18519
18520 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
18521
18522         * debug-mono-symfile.c: properly check fopen () result (found by
18523         coverity).
18524
18525 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
18526
18527         * reflection.c: make error message clearer and fixed two
18528         issuelets found by Coverity.
18529
18530 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
18531
18532         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
18533
18534 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
18535
18536         * object-internals.h, gc-internal.h, profiler-private.h:
18537         mark internal functions.
18538
18539 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
18540
18541         * reflection.c: put data in the text section.
18542         * icall.c: recognize more types in type_from_typename ().
18543         * process.c, marshal.c: added some GC FIXMEs.
18544
18545 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18546
18547         * loader.c: check for NULL before initializing.
18548
18549 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
18550
18551         * gc.c (finalizer_thread): Use a non-alertable wait here.
18552
18553         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
18554         until the correct solution is found.
18555
18556 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18557
18558         * reflection.c (mono_module_get_object): Avoid an assert when operating on
18559         modules with no metadata. Fixes #79596.
18560
18561         * image.c (load_metadata_ptrs): Put back the error message when
18562         the #- heap is encountered since the support is not complete yet.
18563
18564 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
18565
18566         * gc.c: do not allow the user to SuppressFinalize () a
18567         delegate because it would leak the trampoline if present.
18568
18569 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
18570
18571         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
18572         PropertyPtr table.
18573
18574 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
18575
18576         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
18577
18578         * metadata.c (mono_metadata_get_param_attrs): Ditto.
18579
18580         * row-indexes.h: Add definitions for *Ptr tables.
18581
18582         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
18583
18584         * metadata.c (mono_metadata_translate_token_index): New helper function to
18585         translate table indexes used in uncompressed metadata.
18586         (mono_metadata_decode_table_row): Ditto.
18587         (mono_metadata_decode_table_row_col): Ditto.
18588
18589         * metadata.c: Add table schema for *Ptr tables.
18590
18591         * class.c loader.c: Use the new helper function to access the affected metadata
18592         tables.
18593         
18594         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
18595         #38532.
18596         
18597 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
18598
18599         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
18600         sequences which can be unbounded in size. Fixes #79583.
18601
18602 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
18603
18604         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
18605         static initialization.
18606
18607         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
18608
18609         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
18610
18611         * domain.c (mono_domain_free): Free up type_init_exception_hash.
18612
18613         * object.c (mono_runtime_class_init): Implement correct semantics when a static
18614         ctor fails, i.e. throw the same exception on subsequent accesses.
18615         
18616 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
18617
18618         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
18619         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
18620         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
18621         Handle marshalling of interfaces and VARIANTs contained in structs.
18622         
18623         Code is contributed under MIT/X11 license.
18624         
18625 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
18626
18627         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
18628         
18629         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
18630         mempool.
18631
18632 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18633
18634         * console-io.c: ignore previous SIGINT handler.
18635
18636 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
18637
18638         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
18639         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
18640         #79460, #79461, #79485.
18641
18642         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
18643
18644         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
18645         #79217.
18646
18647 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
18648
18649         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
18650         could be generated from it.
18651
18652 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
18653
18654         * rand.c: fix read loop to correctly handle EINTR.
18655
18656 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18657
18658         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
18659         internal calls are defined to keep methods closer to the declaring
18660         type and allow a significant reduction in runtime relocations and
18661         memory usage.
18662
18663 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
18664
18665         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
18666         exception message to have FileNotFoundException use the default
18667         assembly load error message. Fixes bug #79426.
18668         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
18669
18670 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18671
18672         * threadpool.c: (start_thread_or_queue) use the root domain when
18673         creating the thread instead of the async object one.
18674
18675 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
18676
18677         * class.c, object.c, class-internals.h, reflection.c:
18678         for arrays, store element_size inside MonoClass (speedup
18679         for array object creation).
18680
18681 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
18682
18683         * icall.c: fixed CodeBase to use the file name and not the module
18684         name (bug #79365).
18685
18686 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
18687
18688         * mono-debug.c, mono-debug.h: export find_method as
18689         mono_debug_find_method ().
18690
18691 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
18692
18693         * debug-helpers.c, class-internals.h: added a few functions useful
18694         when debugging under gdb.
18695
18696 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18697
18698         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
18699         characters that need special handling.
18700
18701 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
18702
18703         * mono-config.c: make the os/cpu specification more flexible,
18704         allowing lists and negation.
18705
18706 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
18707
18708         * marshal.c: COM Interop fixes. Handle case where method->klass.
18709         is interface. Handle BSTR/MonoString when null. Use CDECL as 
18710         calling convention on non-windows platforms. This is for
18711         compatibility with XPCOM and MainWin COM.
18712         
18713         Code is contributed under MIT/X11 license.
18714         
18715
18716 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
18717
18718         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
18719         correctly. Fixes #79217.
18720
18721         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
18722
18723 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
18724
18725         * mono-config.c: allow both an os and cpu attribute for dllmap
18726         and dllentry elemnets to enable a single config file to be used
18727         for multiple architectures.
18728
18729 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
18730
18731         * loader.c: MonoLoaderError was cleared too soon on load failure.
18732         Fixes bug #79424.
18733
18734 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
18735
18736         * icall.c: use the defining class vtable when accessing a
18737         static field, not a pobblibly derived class.
18738
18739 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
18740
18741         * icall.c string-icalls.c: Remove references to unicode.h.
18742
18743         * unicode.h unicode.c Makefile.am: Remove these unused source files.
18744
18745         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
18746
18747         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
18748         indicating the image where custom marshaller types should be looked up.
18749         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
18750         custom marshallers, instead of corlib. Fixes #79425.
18751
18752 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
18753
18754         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
18755
18756 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
18757
18758         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
18759         Implement Environment.ProcessorCount.
18760         
18761         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
18762         Implement Environment.ProcessorCount.
18763         
18764         * icall.c: 
18765         Add Environment.ProcessorCount icall.
18766         
18767         Patch by Jason McFall.
18768
18769 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18770
18771         * assembly.c: don't append .exe/.dll when the filename already contains
18772         one of those extensions.
18773
18774 2006-09-12  Martin Baulig  <martin@ximian.com>
18775
18776         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
18777         to array interfaces.
18778
18779 2006-09-11  Martin Baulig  <martin@ximian.com>
18780
18781         * reflection.c (mono_image_build_metadata): Create the
18782         MethodImpl's after emitting all types and methods, so we don't
18783         need another fixup pass for them.
18784
18785 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
18786
18787         * class.c (mono_class_from_name_case): Fix regression introduced by the last
18788         change.
18789
18790 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
18791
18792         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
18793         unload.
18794
18795 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
18796
18797         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
18798         args is not set. Fixes #78926.
18799
18800 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
18801
18802         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
18803
18804         * image.c (load_class_names): Move this to class.c, and rename it to 
18805         'mono_image_init_name_cache'.
18806         (load_modules): Fix a warning.
18807
18808         * class.c icall.c image.c: Initialize image->name_cache lazily.
18809
18810         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
18811         on its name using information in the AOT file.
18812
18813         * class.c (mono_class_from_name): Use the new hook function.
18814
18815 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
18816
18817         * reflection.c (mono_param_get_objects): Handle enum default parameter values
18818         correctly.
18819
18820         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
18821         Fixes #79289.
18822         
18823 2006-09-06  Martin Baulig  <martin@ximian.com>
18824
18825         * icall.c (mono_lookup_internal_call): Small fix.
18826
18827 2006-09-05  Raja R Harinath  <rharinath@novell.com>
18828
18829         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
18830         double g_free.
18831
18832 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
18833
18834         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
18835         when --debug is specified.
18836
18837 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
18838
18839         * class.c (setup_generic_array_ifaces): Fix a warning.
18840
18841 2006-09-04  Miguel de Icaza  <miguel@novell.com>
18842
18843         * Temporarily remove the patch to assemly.c that checks the
18844         assembly versions as it breaks our gacutil.
18845
18846 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
18847
18848         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
18849
18850         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
18851         a net 1.0 runtime.
18852
18853         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
18854         created using the default ctor. Fixes #79152.
18855         (mono_string_builder_to_utf16): Ditto.
18856
18857 2006-09-01  Martin Baulig  <martin@ximian.com>
18858
18859         Fix handling of the generic array interfaces.
18860
18861         * class-internals.h
18862         (MonoDefaults): Removed `generic_array_class' and added
18863         `generic_ilist' class.
18864
18865         * class.c
18866         (mono_bounded_array_class_get): Add the new generic array interfaces.
18867         (setup_generic_array_ifaces): New static method; create vtable
18868         entries for each method in the generic array interfaces.
18869
18870         * metadata.c
18871         (select_container): Allow "parent-less" generic methods.
18872
18873         * marshal.c
18874         (mono_marshal_get_generic_array_helper): New public method.
18875
18876         * icall.c
18877         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
18878         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
18879         moved the interncall into System.Array.
18880
18881 2006-09-01  Raja R Harinath  <rharinath@novell.com>
18882
18883         A few more cases of avoiding work on types with ->byref set.
18884         Has the real fix for #79238
18885         * icall.c (is_generic_parameter): New helper.
18886         (ves_icall_Type_GetGenericParameterPosition): Use it.
18887         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
18888         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
18889         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18890         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
18891         reference types.
18892         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
18893         reference types.
18894         (ves_icall_Type_get_IsGenericInstance): Likewise.
18895         (ves_icall_Type_get_IsGenericType): Likewise.
18896
18897 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
18898
18899         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
18900         class if possible.
18901
18902         * mempool.h (mono_mempool_get_allocated): New helper function.
18903
18904         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
18905         change.
18906
18907         * mempool.c: Fix warnings and the calculation of stats.
18908
18909         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
18910
18911         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
18912
18913         * loader.c (mono_get_method_from_token): Update method_count stat.
18914
18915         * class-internals.h (MonoStats): Add some stats.
18916
18917 2006-08-31 Robert Jordan  <robertj@gmx.net>
18918
18919         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
18920         with managed variants.
18921         All code is contributed under the MIT/X11 license.
18922         
18923 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
18924
18925         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
18926         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
18927
18928         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
18929
18930         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
18931         with cycles in classes.
18932
18933         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
18934
18935         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
18936         missing a [MarshalAs] directive. Fixes #79203.
18937
18938         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
18939         klass->marshal_info. Fixes #79217.
18940
18941 2006-08-30  Martin Baulig  <martin@ximian.com>
18942
18943         Committing a patch from Joachim Ante <joe@otee.dk>:
18944         Add support for binary data symbol stores.
18945
18946         * debug-mono-symfile.c
18947         (mono_debug_open_mono_symbol_file): Renamed into
18948         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
18949         arguments.
18950
18951         * mono-debug.c
18952         (mono_debug_open_image): Added `raw_contents' and `size' args.
18953         (mono_debug_init_2_memory): New public function.
18954
18955 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
18956
18957         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
18958
18959 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18960
18961         * appdomain.c: implement support for ShadowCopyFiles.
18962
18963 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
18964
18965         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
18966         when value is NULL (and should remove CID #51).
18967
18968 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18969
18970         * image.c: moved 2 functions to ../utils.
18971
18972 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
18973
18974         * gc.c: cope with the target object of a GC handle being NULL
18975         (bug #78877).
18976
18977 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
18978
18979         * class.c: recursively check parent's explicit implementations
18980         of interface methods (fixes bug #79125).
18981
18982 2006-08-19  Miguel de Icaza  <miguel@novell.com>
18983
18984         * filewatcher.c: Avoid warnings when building, do not redefine
18985         constants that are defined.
18986
18987         Remove warnings.
18988
18989 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18990
18991         * image.c: don't fail when the link points to an absolute path.
18992
18993 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
18994
18995         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
18996         Fix CID #3.
18997
18998 2006-08-17  Miguel de Icaza  <miguel@novell.com>
18999
19000         * image.c (full_path): A new method used to obtain the actual path
19001         of an assembly even in the presence of symbolic links.  
19002
19003         This is necessary for the case where we are running a binary that
19004         has been GACed, but we are using the "published" path name
19005         ($prefix/mono/1.0/blah.exe) which happens to point to the real
19006         file in the GAC.
19007
19008         This was the source of the failure for the `xsp' command with the
19009         recent AppDomain changes, as far as the runtime was concerned,
19010         there were two different assemblies: $prefix/mono/1.0/blah.exe and
19011         $prefix/mono/gac/blah/version/blah.exe.
19012
19013         (do_mono_image_open): use full path
19014
19015 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19016
19017         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
19018
19019 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
19020
19021         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
19022         domain_id is supplied. Fix CID #241 and corlib's unit tests.
19023
19024 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19025
19026         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
19027         small structures. Fixes #78990.
19028
19029 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
19030
19031         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
19032
19033         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
19034
19035 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19036
19037         * appdomain.c:
19038         * marshal.c: don't load all the assemblies from a domain into newly
19039         created ones. The new domains might have different rules and load
19040         assemblies from different locations. Fixes bug #76757.
19041
19042         Patch by Lluis. Conflicts resolved by Brian Crowell.
19043
19044 2006-08-16  Alp Toker  <alp@atoker.com>
19045
19046         * socket-io.c: First half of the fix for #79084.
19047         Set sa_size to the length of the content, not that of the struct.
19048         Don't add NULL suffix to the content, this should be done in
19049         managed code if needed.
19050
19051 2006-08-14  Raja R Harinath  <rharinath@novell.com>
19052
19053         Fix part of #79012
19054         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
19055         mono_metadata_parse_type returns NULL.
19056
19057 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
19058
19059         * normalization-tables.h : new file for string normalization data.
19060         * locales.c, locales.h, icall.c :
19061           added load_normalization_resource() for string normalization,
19062           and icall as well.
19063         * Makefile.am : added normalization-tables.h to the sources.
19064
19065 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
19066
19067         * marshal.c: Add more helper functions to reduce code duplication and use them
19068         everywhere.
19069
19070 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
19071
19072         * marshal.c: Fix non-x86 stdcall warnings.
19073         
19074         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
19075         them everywhere.
19076
19077 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
19078
19079         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
19080         type check on multi-dimensional arrays. Fixes #79000.
19081
19082 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
19083
19084         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
19085         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
19086         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
19087         * class-internals.h: add is_com_object to class structure.
19088         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
19089         null checks to COM object marshalling. Fix .ctor call on RCW.
19090         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
19091         
19092         All code is contributed under the MIT/X11 license.
19093
19094 2006-08-09  Dick Porter  <dick@ximian.com>
19095
19096         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
19097         racing mono_monitor_allocator_lock() somewhere, so don't delete
19098         the critical section for now.  Found by running and exiting
19099         monodevelop.
19100
19101 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
19102
19103         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
19104         (ves_icall_System_ComObject_FindInterface): Ditto.
19105         (ves_icall_System_ComObject_CacheInterface): Ditto.
19106
19107         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
19108         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
19109
19110 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19111
19112         * threadpool.c: treat pipes from process asynchronous reads as sockets
19113         when reading from them, so we get select/poll or epoll to wait for
19114         data.
19115
19116 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
19117
19118         * loader.c: Fix a typo (CID #233) in the null check.
19119
19120 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
19121
19122         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
19123         Hopefully fixes #78949.
19124         
19125         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
19126         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
19127         bytes. Fixes #78972.
19128
19129 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19130
19131         * filewatcher.c: we need to set errno here.
19132
19133 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19134
19135         * filewatcher.c: let Win32Exception get the error value.
19136
19137 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19138
19139         * filewatcher.c: translate errno into win32 errors for Win32Exception
19140         to know what happened.
19141
19142 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
19143
19144         * threadpool.c: Fix more warnings.
19145
19146         * assembly.c (search_loaded): Fix warnings.
19147
19148         * threadpool.c (mono_thread_pool_finish): Fix warnings.
19149         (mono_async_invoke): Ditto.
19150
19151 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
19152
19153         * object.c (mono_remote_class_vtable): Need to create proxy vtable
19154         entries for __ComObject type in addition to ComImport types.
19155         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
19156         about hash table.
19157         
19158         All code is contributed under the MIT/X11 license.
19159
19160 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
19161
19162         * image.c: avoid tentative loading of modulerefs that contain
19163         no metadata (P/Invoke library names).
19164
19165 2006-07-28  Dick Porter  <dick@ximian.com>
19166
19167         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
19168         mono_loader_lock() somewhere, so don't delete the critical section
19169         for now.  Found by running and exiting monodevelop.
19170
19171 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19172
19173         * filewatcher.c: define the inotify syscalls when we're building on
19174         linux and have sys/syscall.h. The build system might not have support
19175         for inotify but the target system might have it.
19176
19177 2006-07-26  Miguel de Icaza  <miguel@novell.com>
19178
19179         * domain.c: Documentation updates.
19180
19181         * loader.c (mono_free_method): Do not release the method
19182         information if we are being profiled, as profilers will use this
19183         information at shut down to present some data to the user.
19184
19185         This is needed so that the profiler does not crash, as the
19186         profiler tends to keep MonoMethods around, and they might become
19187         invalid if we free these.
19188
19189         (mono_get_method_constrained): Return the original CIL stream
19190         method as well, so verification can be performed against it.
19191
19192 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19193
19194         * filewatcher.[ch]: support for inotify file system watcher.
19195         * icall.c: add new internal calls for the inotify file system watcher.
19196
19197 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19198
19199         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
19200         #78888.
19201
19202 2006-07-20  Dick Porter  <dick@ximian.com>
19203
19204         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
19205         warning.
19206
19207 2006-07-20  Dick Porter  <dick@ximian.com>
19208
19209         * threads.c (start_wrapper): Do the thread cleanup while we still
19210         hold a reference to its object.  Fixes bug 78123.
19211
19212 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
19213
19214         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
19215         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
19216           "managed-to-managed".
19217         * icall.c: Redirect string constructors that take sbyte* to
19218           ves_icall_System_String_ctor_RedirectToCreateString.
19219         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
19220           to CreateString () methods with matching signature.
19221         * reflection.c: Use original security informations for
19222           MONO_WRAPPER_MANAGED_TO_MANAGED.
19223         * security-manager.c: Use original security informations for
19224           MONO_WRAPPER_MANAGED_TO_MANAGED.
19225         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
19226           that is a placeholder and only its address should be used.
19227         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
19228           that is a placeholder and only its address should be used.
19229
19230 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
19231
19232         Begin implementing COM Interop.
19233         * appdomain.c: Increment corlib version.
19234         * class.c: Set ComImport classes' parent to __ComObject.
19235         * loader.c: Mark cominterop methods as such.
19236         * domain.c: Add __ComObject class to MonoDefaults structure.
19237         * image.c: Add 2 hashtables to the image for COM Interop related methods
19238         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
19239         using the mempool allocator
19240         
19241         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
19242         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
19243         declaration for mono_metadata_type_dup_mp.
19244         
19245         * debug-helpers.c: Added strings for two additional wrapper types
19246         * object.c: Create proxy objects for ComImport classes
19247         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
19248         and added __ComObject class to MonoDefaults structure.
19249         
19250         * object-internals.h: Finish MonoRealProxy definition, and add definition of
19251         MonoComInteropProxy and MonoComObject.
19252         
19253         * marshal.c: Added support for COM Interop
19254         (signature_cominterop): Converts managed signature to corresponding
19255         unmanaged COM signature.
19256         (cominterop_get_function_pointer): gets unmanaged function pointer via
19257         COM object vtable
19258         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
19259         (cominterop_get_method_interface): returns interface type that method is defined on
19260         (mono_mb_emit_cominterop_call): emits native call to function pointer
19261         gotten from vtable
19262         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
19263         that matches signature of unmanaged function.
19264         (cominterop_get_native_wrapper): wrapper around adjusted method call.
19265         (cominterop_get_invoke): forwards call from proxy to __ComObject
19266         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
19267         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
19268         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
19269         
19270         * marshal.h: Added Marshal icall declarations.
19271         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
19272         so we can access them in finalizer
19273         
19274 2006-07-14  Dick Porter  <dick@ximian.com>
19275
19276         * object.c (mono_type_initialization_cleanup): Fix a race
19277         condition by temporarily commenting out the critical section
19278         deletion.
19279
19280 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
19281
19282         * reflection.c (create_custom_attr): Fix some warnings.
19283         (create_custom_attr_data): Ditto.
19284         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
19285         types. Fixes #78855.
19286
19287 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
19288
19289         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
19290
19291         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
19292
19293 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
19294
19295         * reflection.c (resolve_object): Add support for DynamicMethod.
19296
19297         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
19298         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
19299
19300 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
19301
19302         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
19303         don't leak GPtrArray's pdata has we have no use (nor free) for it.
19304
19305 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
19306
19307         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
19308         Fixes #77888.
19309
19310 2006-06-30  Raja R Harinath  <rharinath@novell.com>
19311
19312         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
19313         slightly: remove a shadow local variable.
19314
19315 2006-06-29  Raja R Harinath  <rharinath@novell.com>
19316
19317         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
19318         definition that introduces the virtual function slot.
19319         Also fix Coverity #105.
19320
19321 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
19322
19323         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
19324         for dynamic assemblies. Fixes #78724.
19325
19326 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
19327
19328         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
19329         Fixes #78722.
19330
19331 2006-06-21  Martin Baulig  <martin@ximian.com>
19332
19333         * reflection.c
19334         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
19335         fixes #76484.
19336
19337 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
19338
19339         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
19340
19341 2006-06-20  Raja R Harinath  <rharinath@novell.com>
19342
19343         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
19344         nor TYPEREFs.
19345         * class.c (mono_class_create_from_typespec): Add 'context' argument.
19346         Inflate result if necessary.
19347         (mono_class_get_full): Remove old version.  Rename from
19348         'mono_class_get' and add 'context' argument.  Pass it to
19349         ..._create_from_typespec.
19350         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
19351         (mono_ldtoken): Revert change below.
19352
19353 2006-06-20  Martin Baulig  <martin@ximian.com>
19354
19355         * class.c (mono_ldtoken): Don't pass the generic context to
19356         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
19357
19358 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
19359
19360         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
19361         and later freeing it. Fixes #78638.
19362
19363 2006-06-15  Miguel de Icaza  <miguel@novell.com>
19364
19365         * icall.c (mono_class_get_throw): Revert over-zealous error
19366         throwing, the caller for mono_class_get_throw will cope with
19367         errors when classes are not properly initialized already.
19368
19369         The code still copes with loader exceptions though.
19370
19371         Fixes the regression in reftype1 and reftype3 from the CAS tests.
19372         
19373 2006-06-14  Miguel de Icaza  <miguel@novell.com>
19374
19375         Fixes the `make run1' version of RuntimeAbort (to be commited,
19376         source is in Bugzilla).
19377         
19378         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
19379         FALSE on class loading failure instead of returning true.
19380
19381         * class.c (mono_class_create_from_typedef): It is possible for
19382         mono_metadata_interfaces_from_typedef_full to fail if a class is
19383         not found, cope with this.
19384         
19385
19386 2006-06-14  Dick Porter  <dick@ximian.com>
19387
19388         * socket-io.c: 
19389         * process.c: Fix a bunch of signed/unsigned warnings from gcc
19390         4.1.1
19391
19392 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
19393
19394         * culture-info-table.h : oops, forgot to make it nsync with r61548.
19395
19396 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19397
19398         * icall.c: Another fix for building mono in Visual Studio.
19399
19400 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
19401
19402         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
19403         
19404 2006-06-09  Martin Baulig  <martin@ximian.com>
19405
19406         * debug-mono-symfile.c: Put this back and really fix it this
19407         time. Sorry for all the trouble.
19408
19409 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
19410
19411         * icall.c (mono_class_get_throw): Fix a warning.
19412         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
19413         ReflectionTypeLoadException if needed. Fixes #78606.
19414
19415         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
19416         (mono_class_init): Ditto.
19417
19418         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
19419         ref_only exceptions.
19420         (mono_loader_clear_error): Make this work even if there is no error.
19421
19422 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
19423
19424         * object-internals.h marshal.c marshal.h icall.c: Implement method 
19425         Marshal.GetComSlotForMethodInfo using internal call.
19426
19427 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
19428
19429         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
19430         a function for signalling it.
19431
19432         * class.c (mono_class_from_typeref): Use the new kind of loader error when
19433         a referenced assembly is not found.
19434
19435         * loader.c (mono_loader_error_prepare_exception): Add support for 
19436         LOADER_ERROR_ASSEMBLY. Fix formatting.
19437
19438 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
19439
19440         * domain.c appdomain.c class-internals.h marshal.c: Add support 
19441         for VARIANT marshalling on windows and increment corlib version
19442         since Variant struct was added.
19443
19444 2006-06-03  Miguel de Icaza  <miguel@novell.com>
19445
19446         * debug-mono-symfile.c: Revert Martin's previous patch which broke
19447         stack trace line information:
19448
19449         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
19450         (Martin) when looking up B which is between A and C, return A not C.
19451
19452         Bug is #78573.
19453
19454         Thanks to Alexander Olk for tracking this down.
19455
19456 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
19457
19458         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
19459         
19460         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
19461         avoid clobbering its value.
19462         (mono_string_to_lpstr): Fix a warning on windows.
19463
19464 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19465
19466         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
19467
19468         * reflection.c loader.c: Removed references to 'dummy' flag.
19469
19470         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
19471
19472         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
19473         it gets GC tracking.
19474
19475         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
19476         GC tracking.
19477         
19478         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
19479
19480         * marshal.c threadpool.c: Update callers of mono_async_result_new.
19481
19482         * appdomain.c: Bump corlib version.
19483
19484 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19485
19486         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19487         CEE_STIND_REF when working with object references.
19488
19489 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
19490
19491         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
19492         Fixes #78539.
19493
19494 2006-05-30  Miguel de Icaza  <miguel@novell.com>
19495
19496         * loader.c (method_from_memberref): Fix argument value for
19497         mono_loader_set_error_method_load (I was passing the MonoClass
19498         instead of the class name char *).
19499
19500 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
19501
19502         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
19503         CEE_STIND_REF when working with object references.
19504
19505 2006-05-30  Martin Baulig  <martin@ximian.com>
19506
19507         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
19508         mono_method_full_name() change and replace the ':' with a '.'
19509         here.
19510
19511 2006-05-30  Martin Baulig  <martin@ximian.com>
19512
19513         * debug-mono-symfile.c
19514         (mono_debug_symfile_lookup_location): Fix the algorithm:
19515         when looking up B which is between A and C, return A not C.
19516
19517 2006-05-29  Martin Baulig  <martin@ximian.com>
19518
19519         * mono-debug.h
19520         (MonoDebugMethodInfo): Make the typedef public.
19521         (MonoDebugSourceLocation): New public struct.
19522
19523         * mono-debug.c
19524         (mono_debug_source_location_from_address): Removed.
19525         (mono_debug_source_location_from_il_offset): Removed.
19526         (mono_debug_il_offset_from_address): Removed.
19527         (mono_debug_address_from_il_offset): Removed.
19528         (mono_debug_lookup_method): New public function.
19529         (mono_debug_lookup_source_location): New public function; replaces
19530         the old mono_debug_source_location_from_*() functions; see the
19531         inline documentation.
19532         (mono_debug_free_source_location): New public function.
19533         (mono_debug_print_stack_frame): New public function; see the
19534         inline documentation.
19535
19536         * debug-mono-symfile.c
19537         (mono_debug_find_source_location): Renamed into
19538         mono_debug_symfile_lookup_location(); only take a
19539         `MonoDebugMethodInfo *' and an `offset' argument; added inline
19540         documentation.
19541         (mono_debug_find_method): Renamed into
19542         mono_debug_symfile_lookup_method().
19543
19544 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
19545
19546         * assembly.c (mono_assembly_open_full): Dont overwrite the status
19547         returned by mono_image_open_full ().
19548
19549         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
19550         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
19551         #78517.
19552
19553         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
19554         #78518.
19555
19556 2006-05-27  Miguel de Icaza  <miguel@novell.com>
19557
19558         * class.c (mono_class_from_typeref): handle missing images
19559         earlier, deals with bug #78418.   Refactor code; 
19560
19561         Fix a warning introduced in my previous commit (some stale code
19562         from before I revisited my patch).
19563
19564         * class.c (mono_class_create_from_typedef): On failure, remove the
19565         class from the MonoImage->class_cache as the class is not
19566         initialized;   Fixes the leak pointed out by Paolo.
19567
19568 2006-05-25  Dick Porter  <dick@ximian.com>
19569
19570         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
19571         DeleteCriticalSections until I figure out which one may still be
19572         sometimes locked when mono_thread_cleanup is called.
19573
19574 2006-05-24  Dick Porter  <dick@ximian.com>
19575
19576         * threads.c (mono_thread_cleanup): Move the threading cleanup out
19577         of mono_thread_manage and back into its own function, so it can be
19578         called after the finalizer thread has finished.
19579
19580         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
19581
19582 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
19583
19584         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
19585         Fixes #78495.
19586
19587         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
19588         with non-blittable elements.
19589         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
19590
19591 2006-05-24  Martin Baulig  <martin@ximian.com>
19592
19593         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19594         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
19595
19596         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
19597         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
19598         `mono_debugger_event_handler' to NULL.
19599
19600 2006-05-24  Martin Baulig  <martin@ximian.com>
19601
19602         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
19603
19604 2006-05-24  Martin Baulig  <martin@ximian.com>
19605
19606         * mono-debug-debugger.h
19607         (mono_debugger_create_notification_function): Added
19608         `MonoCodeManager *' argument.
19609
19610 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
19611
19612         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
19613
19614 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
19615
19616         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
19617         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
19618         implementation.
19619
19620 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
19621
19622         * icall.c: precise GC support: objects can't be stored in unmanaged
19623         memory anymore, even if they are kept alive by other references: since
19624         they can move the GC needs to be able to always find them.
19625
19626 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
19627
19628         * object.c: precise GC support for static fields. Support
19629         for moving GCs: write barriers and pinned allocation for interned
19630         strings.
19631
19632 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
19633
19634         * domain.c, domain-internals.h: precise GC support for the MonoDomain
19635         structure.
19636
19637 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
19638
19639         * class.c, gc.c: sgen and precise GC updates.
19640
19641 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
19642
19643         * marshal.h, marshal.c: added write barrier wrapper and precise type
19644         fixes.
19645
19646 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
19647
19648         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
19649         support.
19650
19651 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
19652
19653         * reflection.c: precise and sgen GC updates.
19654
19655 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
19656
19657         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
19658
19659 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
19660
19661         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
19662
19663 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
19664
19665         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
19666         MONO_TYPE_OBJECT. Fixes #78462.
19667
19668 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
19669
19670         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
19671         and blittable types.
19672
19673 2006-05-17  Miguel de Icaza  <miguel@novell.com>
19674
19675         * class.c (mono_class_get_exception_for_failure): Implement parts
19676         of a TODO: if the loader error is set (instead of the class
19677         error), we return a Loader exception that can be properly thrown
19678         elsewhere.
19679
19680         This was exposed by some Winforms 2.0 code that I tried to run
19681         (Atsushi pointed me to it).
19682
19683 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
19684
19685         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
19686         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
19687         
19688         * marshal.c (emit_marshal_vtype): Add limited support for 
19689         UnmanagedType.LPStruct. Fixes #78427.
19690
19691         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
19692         Applied a patch from kangaroo to fix #77523.
19693
19694 2006-05-17  Martin Baulig  <martin@ximian.com>
19695
19696         * threads.c
19697         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
19698         (debugger_thread_created): Removed.
19699         (debugger_thread_exited): Removed.
19700
19701 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
19702
19703         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19704
19705         * object-internals.h (MonoReflectionResource): Sync with managed version.
19706
19707 2006-05-12  Wade Berrier <wberrier@novell.com>
19708
19709         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
19710
19711 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
19712
19713         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
19714         functions try to allocate from the image mempool.
19715
19716 2006-05-12  Dick Porter  <dick@ximian.com>
19717
19718         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
19719
19720 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
19721
19722         * object.c: The FieldGetter and FieldSetter methods require the full
19723         name of the class, not only the name. Fixes bug #78277.
19724
19725 2006-05-11  Miguel de Icaza  <miguel@novell.com>
19726
19727         * loader.c (method_from_memberref): Do not pass the NULL klass to
19728         mono_loader_set_error_() methods.  Pass the non-NULL value
19729         (class). 
19730
19731 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
19732
19733         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
19734         (mono_assembly_close): Null out assembly->image->references after freeing it.
19735
19736         * image.c (mono_image_close): Free image->references.
19737         
19738         * reflection.c (mono_image_basic_init): Fix a small memory leak.
19739
19740 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19741
19742         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
19743         before checking if it's NULL (g_assert).
19744
19745 2006-05-10  Martin Baulig  <martin@ximian.com>
19746
19747         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
19748         I thought I already killed that two months ago, but now it somehow reappeared.
19749
19750 2006-05-10  Martin Baulig  <martin@ximian.com>
19751
19752         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
19753
19754 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
19755
19756         * reflection.c: Allocate memory for dynamically created methods in the image
19757         mempools.
19758
19759 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
19760
19761         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
19762         don't use the ad pointer before checking if it's NULL (g_assert).
19763
19764 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
19765
19766         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
19767         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
19768
19769         * marshal.c: Allocate all signatures from mempools.
19770
19771         * marshal.c: Allocate some more signatures from mempools.
19772
19773 2006-05-09  Miguel de Icaza  <miguel@novell.com>
19774
19775         * object.c (mono_load_remote_field): The code used to provide a
19776         temporary variable for returning results if the user did not
19777         provide a result pointer.  But our temporary variable was allocted
19778         on the satck.
19779
19780         Fix calling code to always pass a result area.   Coverity ID 103.
19781
19782 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
19783
19784         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
19785         value, not the old. Fixes #78312.
19786         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
19787
19788         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
19789         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
19790         per-image cache.
19791
19792         * assembly.c (mono_assembly_close): Free image->references.
19793
19794         * assembly.c (mono_assembly_names_equal): Fix a warning.
19795         (mono_assemblies_cleanup): Cleanup more global data.
19796
19797         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
19798
19799         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
19800         ptr_cache and image->modules.
19801
19802         * image.c (mono_image_init): Allocate array_cache lazily.
19803         
19804 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19805
19806         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
19807         behavior was changed recently and has bad side effects.
19808
19809 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
19810
19811         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
19812         
19813         * assembly.c (mono_assembly_close): Remove a debug printf.
19814
19815         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
19816
19817         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
19818         to also allow for temporary references between mono_image_open ()/close ().
19819
19820         * domain.c (get_runtimes_from_exe): Add a FIXME.        
19821
19822 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
19823
19824         * marshal.c: Fix support for dynamic methods.
19825
19826         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
19827
19828         * marshal.c (mono_marshal_cleanup): New cleanup function.
19829
19830         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
19831         image mempools.
19832
19833         * class.c (mono_class_init): Fix leaking class->nested_classes.
19834
19835         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
19836
19837         * image.c (mono_image_init): Initialize the new cashes.
19838
19839         * image.c (mono_image_close): Destroy the new cashes.
19840
19841         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
19842
19843         * mempool.c (mono_mempool_strdup): New helper function.
19844
19845         * class-internals.h: Add prototype for mono_loader_unlock ().
19846
19847         * domain.c (mono_jit_info_table_find): Fix a warning.
19848         (mono_debugger_check_runtime_version): Ditto.
19849
19850         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
19851         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
19852         functions to these modules.
19853
19854         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
19855         metadata modules.
19856         
19857         * marshal.c (mono_free_bstr): Fix a warning.
19858
19859         * assembly.c (mono_assembly_open_full): Fix another small leak.
19860
19861         * object.c: Fix some unload leaks in the remoting code.
19862
19863         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
19864         function.
19865
19866         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
19867
19868         * reflection.c: Fix some unload leaks in dynamic assemblies.
19869
19870 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
19871
19872         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
19873         * marshal.h: Add BSTR support on Win32
19874         * icall.c: Add BSTR icalls
19875         * metadata.h: Add BSTR enums
19876
19877 2006-04-28  Miguel de Icaza  <miguel@novell.com>
19878
19879         Work to catch the crash from #76795 and turn it into an
19880         exception.   As I stubbed out pieces of the VisualBasic support,
19881         I found a number of places where the code was failing and I added
19882         checks to those places. 
19883         
19884         * metadata.c (do_mono_metadata_parse_generic_class): Make this
19885         function return a status code.  If we fail to parse the signature
19886         from mono_metadata_parse_generic_inst, return FALSE.
19887
19888         * loader.c (mono_get_method_from_token): If we fail to load the
19889         method (mono_class_get) return NULL.   
19890
19891         * (method_from_memberref): Return NULL if we are unable to parse
19892         the method signature
19893
19894         (mono_loader_error_prepare_exception): Since we now use the
19895         loader_error flag internally to stop processing, and obtaining
19896         exceptions that might be thrown will walk this code path the
19897         proper way of going from a MonoLoaderError into a
19898         MonoException was convoluted.   This new routine encapsulates the
19899         process of turning the error into an exception and *clearing* the
19900         error afterwards.
19901         
19902 2006-04-27  Miguel de Icaza  <miguel@novell.com>
19903
19904         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
19905         with missing assemblies), and to cope with:
19906
19907                 * Missing fieldref from a non-existing assembly.
19908                 * Missing methodref from a non-existing assembly.
19909
19910         The first batch of work to address *some* of the issues from 76661.
19911         
19912         * object.c (mono_class_create_runtime_vtable): If we fail to
19913         initialize the class raise the exception here. 
19914
19915         * metadata.c (mono_class_get_overrides_full): If any methods fail
19916         to load return the failure to the caller.
19917
19918         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
19919         flagging assemblies that failed to load.   
19920
19921         Do not crash if we are unable to load the assembly.
19922
19923         (mono_assembly_close): Do nothing with REFERENCE_MISSING
19924         assemblies. 
19925
19926         * loader.c (mono_loader_set_error_type_load): Change the
19927         convention to always pass unallocated strings, so we make our own
19928         copies (I know our own code had duplicated strings before, but
19929         this keeps the normal conventions).
19930         (method_from_memberref): Call mono_loader_set_error_method_load
19931         for all possible failures of loading the class. 
19932         Remove assert, turn into a loader error.
19933
19934         (mono_loader_error_to_exception): Move this routine from mini
19935         (mini_loader_error_to_exception) there was no need to have that in
19936         mini. 
19937
19938         * class.c (mono_class_from_typeref): If we were not able to load
19939         the assembly with mono_assembly_load_reference, call the
19940         mono_loader_set_error_type_load to register the problem.
19941
19942         (mono_class_setup_fields): If we fail to load the type from
19943         mono_metadata_parse_type_full, call mono_class_set_failure and
19944         break from the loop.
19945
19946         If class->exception_type is set, we do not layout the fields as
19947         that might crash the runtime, and instead return (from breaking
19948         from the previous loop).
19949
19950         (mono_class_setup_vtable): This now returns a boolean indicating
19951         whether the table was properly setup.   The decision is driven by
19952         mono_class_get_overrides_full which might run into non-existing
19953         methods. 
19954         
19955         (mono_class_init): Returns TRUE on success or FALSE if there was a
19956         problem in loading the type (incorrect assemblies, missing
19957         assemblies, methods, etc).
19958
19959         When we call mono_class_setup_fields we also check for a potential
19960         error inside this call (either a class exception or a general
19961         loader exception).
19962
19963         (mono_class_create_from_typedef): If the parent fails to load
19964         (calling mono_class_get_full) return NULL.
19965         
19966         ** Important **
19967
19968         calls to mono_metadata_parse_type_full should be checked
19969         everywhere and set the mono_class_set_failure
19970         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
19971
19972         The current patch checks the places where my manually constructed
19973         tests show the errors are showing up, but we should do it
19974         everywhere. 
19975
19976         ** Important2 **
19977
19978         mono_class_init return values should be tested everywhere, like
19979         the previous case this is something that we should audit
19980         everywhere and not only on the cases exposed by the tests I
19981         created. 
19982
19983 2006-04-26  Miguel de Icaza  <miguel@novell.com>
19984
19985         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
19986         boolean parameter and instead pass the information on `options'
19987         parameter (FileOptions).
19988
19989         * icall.c: Register the new signature for MonoIO.Open.
19990
19991         * debug-helpers.c (dis_one): Trying to understand how coverity
19992         works.  Fix Run 5, item 78.
19993
19994 2006-04-26  Dick Porter  <dick@ximian.com>
19995
19996         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
19997         dereference.
19998
19999 2006-04-25  Martin Baulig  <martin@ximian.com>
20000
20001         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
20002
20003         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
20004         debugger_thread_created().
20005         (debugger_gc_push_all_stacks): Don't handle the main thread in any
20006         special way.
20007         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
20008         (mono_debugger_finalize_threads): New function; undo the effects
20009         of mono_debugger_init_threads().
20010         (mono_debugger_create_all_threads): Removed.
20011
20012 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
20013
20014         * image.c (mono_image_close): Tidy up trace messages.
20015
20016         * assembly.c (mono_assembly_close): Ditto.
20017
20018         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
20019         no longer references an already freed assembly. Fixes #78168.
20020
20021 2006-04-21  Dick Porter  <dick@ximian.com>
20022
20023         * threads.c (mono_thread_detach): Fix reference counting when
20024         detaching threads.
20025
20026 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
20027
20028         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
20029         #78155.
20030
20031 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
20032
20033         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
20034         (mono_type_to_stind): Ditto.
20035
20036         * marshal.c: Use the new helper functions to simplify code.
20037
20038         * image.c (mono_image_close): Add some code for help debug assembly unloading
20039         problems.
20040
20041         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
20042         image mempool.
20043
20044         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
20045         assembly was already loaded in another appdomain. Fixes #78083.
20046
20047 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
20048
20049         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
20050         referenced assemblies.
20051         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
20052
20053         * domain.c (mono_domain_free): Add a trace message.
20054
20055         * appdomain.c (add_assemblies_to_domain): Ditto.        
20056
20057         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
20058         field.  
20059
20060 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20061
20062         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
20063
20064 2006-04-12  Martin Baulig  <martin@ximian.com>
20065
20066         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
20067         `USE_INCLUDED_LIBGC'.   
20068
20069 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
20070
20071         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
20072         the patch contains ../ and a small directory name later. Hopefully fixes
20073         #78035.
20074
20075 2006-04-10  Martin Baulig  <martin@ximian.com>
20076
20077         Clean up the debugger's thread-handling code.
20078
20079         The debugger's thread-handling code has been moved from
20080         ../mini/debug-debugger.c to threads.c.  We now iterate directly
20081         over the `threads' hash, keep track of exiting threads and also
20082         use proper locking.
20083
20084         We can now debug XSP and XSP based applications with the debugger.
20085
20086         * object-internals.h (MonoThread): Added `gpointer end_stack'.
20087
20088         * threads.h
20089         (MonoThreadCallbacks): Removed; this was only used by the debugger.
20090         (mono_install_thread_callbacks): Likewise.      
20091
20092         * threads.c (mono_thread_callbacks): Removed.
20093         (debugger_thread_created, debugger_thread_exited): New static functions.
20094         (start_wrapper): Call debugger_thread_created().
20095         (thread_cleanup): Call debugger_thread_exited().
20096         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
20097         (mono_debugger_init_threads): New public function.
20098         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
20099         iterate directly over the `threads' hash and also use proper locking.
20100
20101         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
20102
20103         * mono-debug-debugger.h
20104         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
20105
20106 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
20107
20108         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
20109         argument type=array. Fixes #78057.
20110
20111 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
20112
20113         * culture-info-table.h : regenerated. Fixed bug #69652.
20114
20115 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
20116
20117         * loader.c metadata.c: Reapply a variant r59116.
20118         
20119         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
20120
20121         * class.c (mono_class_setup_interface_offsets): New internal function.
20122
20123         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
20124         interfaces too. Fixes #77398.
20125
20126         * reflection.c (encode_cattr_value): Add support for 
20127         parameter type=object, argument type=array.
20128         (load_cattr_value): Ditto. Fixes #77916.
20129
20130         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
20131         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
20132
20133         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
20134         a byval char array and CharSet is Ansi.
20135
20136         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
20137
20138 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
20139
20140         * metadata.c: Add some locking comments.
20141         
20142         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
20143         mempool.
20144         (mono_metadata_free_method_signature): Don't free the signature itself.
20145
20146         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
20147
20148         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
20149         reference the same MonoImage.
20150         (mono_assembly_load_from_full): Add an assert.
20151
20152 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
20153
20154         * image.c (mono_image_close): Don't put the image we are about to free into the
20155         loaded_images_guid_hash.
20156
20157         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
20158         to reduce code duplication.
20159
20160         * marshal.c: Register the native functions called by this module as icalls, to
20161         somewhat centralize the creation of MonoMethodSignature's.
20162
20163         * loader.c (mono_method_signature): Add a cache for method signatures.
20164
20165         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
20166         the parameter attributes of a method.
20167         (mono_metadata_parse_method_signature_full): Refactored the computation of
20168         parameter attributes into a separate function. Also avoid one allocation in
20169         most cases.
20170
20171         * assembly.c (mono_assembly_close): Ditto.
20172
20173         * image.c (mono_image_close): Log trace messages with INFO level.
20174
20175         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
20176
20177         * image.c reflection.c: Correct reference counting of image modules.
20178         
20179         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
20180         of this function from the image mempool.
20181         
20182         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
20183         to allow more cached types to be used.
20184
20185         * mono-debug.c (mono_debug_add_method): Appled patch from
20186         David S. Miller  <davem@sunset.davemloft.net>: Access 
20187         minfo->lexical_blocks[] entry elements using read32().
20188
20189 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
20190
20191         * loader.c (mono_free_method): No longer free the method header for non-dynamic
20192         methods as it is allocated from the mempool.
20193
20194         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
20195         image mempool.
20196
20197         * metadata-internals.h: Add comments describing the reference counting scheme
20198         used for MonoImage and MonoAssembly.
20199
20200         * image.c assembly.c reflection.c: Rework reference counting of images and 
20201         assemblies so they are freed when the runtime is shut down. Free some 
20202         additional memory structures when an image is unloaded.
20203         
20204 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
20205
20206         * class.c loader.c reflection.c: Allocate more data structures in
20207         the image mempool.
20208
20209 2006-03-31  Miguel de Icaza  <miguel@novell.com>
20210
20211         * icall.c
20212         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
20213         build on pre glib 2.4 systems.
20214
20215 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
20216
20217         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
20218
20219         * icall.c: Fix some warnings.
20220
20221 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
20222
20223         * culture-info-table.h : regenerated.
20224
20225 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
20226
20227         * threads.c, object-internals.h, verify.c: changed the culture caching
20228         code to use a normal MonoArray for storage so the GC can keep track of
20229         them easily. Fixed bits of the cache logic, too and simplified the
20230         code.
20231
20232 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
20233
20234         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
20235         thread for non-Boehm GCs.
20236
20237 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
20238
20239         * domain.c, object.c, domain-internals.h: reduce the amount of memory
20240         needed to keep track of the data for static fields.
20241
20242 2006-03-29  Raja R Harinath  <rharinath@novell.com>
20243
20244         Fix #75172
20245         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
20246         for interface classes.  Use 'num_methods' instead.
20247         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
20248         before using '->vtable_size' field.
20249
20250 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
20251
20252         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
20253         doesn't contain managed pointers, so use a normal hashtable.
20254
20255 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
20256
20257         * reflection.c, class-internals.h, domain.c: fixed handling of types
20258         used as values for objects in custom attributes (bug #77915):
20259
20260 2006-03-24  Martin Baulig  <martin@ximian.com>
20261
20262         * class.c (mono_class_setup_fields): Added support for generic
20263         instances; fixes #77580.
20264
20265 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20266
20267         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
20268
20269 2006-03-24  Dick Porter  <dick@ximian.com>
20270
20271         * file-io.c (get_file_attributes): More stat macro breakage.
20272         Fixes bug 77759.
20273
20274 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
20275
20276         * profiler.c: added the file=filename option in the default profiler
20277         to output the profile data to filename.
20278
20279 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20280
20281         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
20282         bug #77877.
20283
20284 2006-03-22  Martin Baulig  <martin@ximian.com>
20285
20286         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
20287         allocated `MonoClassField *' in `fb->handle'.
20288
20289 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
20290
20291         * class.c, image.c, metadata-internals.h: implemented new mechanism to
20292         allocate interface ID to save memory and allow better ID reuse on
20293         appdomain unload. setup_generic_vtable () removal from Martin.
20294
20295 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20296
20297         * object.h, appdomain.c, domain.c, exception.c, icall.c,
20298         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
20299         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
20300         write barriers for reference stores with managed objects accessed with
20301         C structures in the runtime and in embedding programs.
20302
20303 2006-03-20  Raja R Harinath  <rharinath@novell.com>
20304
20305         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
20306         'interface_id' and 'max_interface_id' fields of MonoClasses
20307         representing open generic types.
20308
20309 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
20310
20311         * object.h, object.c, icall.c: added functions to deal with
20312         storing valuetypes that contain references in managed objects.
20313         * reflection.c, string-icalls.c, threads.c, marshal.c: small
20314         fixes and comments around uses of mono_array_addr ().
20315
20316 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
20317
20318         * object.h, icall.c, monitor.c: object.GetHashCode ()
20319         implementation that supports the moving garbage collector.
20320
20321 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
20322
20323         * icall.c, threads-types.h, threads.c: implemented finalizer for
20324         LocalDataStoreSlot.
20325
20326 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
20327
20328         * metadata.c (mono_type_size): Add a fixme.
20329         (mono_type_stack_size): Ditto.
20330
20331         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
20332         'type_forwarders' field.
20333
20334         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
20335         attribute from net 2.0.
20336
20337         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
20338         from class.c.
20339
20340         * class.c (mono_class_setup_fields): Fix a warning.
20341         
20342         * class.c (mono_class_from_name): Add support for assemblyref entries
20343         in the EXPORTEDTYPE table.
20344
20345         * reflection.c: Add support for handling type forwarders under net 2.0.
20346
20347         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
20348         
20349 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
20350
20351         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
20352         overwriting entries in ModuleBuild->types, also clean up the code
20353         a little. Fixes #77774.
20354
20355 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
20356
20357         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
20358         load friend assembly info when present.
20359
20360 2006-03-14  Raja R Harinath  <rharinath@novell.com>
20361
20362         Fix crasher on gtest-158.cs.
20363         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
20364         the return value if the MonoClass we want is yet in an
20365         inconsistent state.
20366         * class.c (mono_class_create_from_typedef): Add an comment
20367         explaining an order dependency between mono_class_setup_parent and
20368         mono_class_setup_mono_type.
20369
20370 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
20371
20372         * class.c: documentation updates and events bug fix.
20373
20374 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
20375
20376         * class.c: some cleanup, locking fixes.
20377
20378 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
20379
20380         * class.c: fix the generics code to setup nested
20381         type info to the instantiated type (bug #77770).
20382
20383 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
20384
20385         * marshal.c: fixed a few type correctness issues.
20386
20387 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20388
20389         * loader.c: the Set/Get/Addrtess array methods should be public.
20390
20391 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
20392
20393         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
20394         
20395         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
20396         info->wrapper.
20397
20398 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
20399
20400         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
20401
20402         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
20403
20404         * mempool.c (mono_mempool_alloc): Speed this up a bit.
20405         (mono_mempool_alloc0): Ditto.
20406
20407 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20408
20409         * socket-io.c:
20410         (create_object_from_sockaddr): it was allocating 4 extra bytes
20411         for the AF_UNIX data. Fixes bug #77747.
20412
20413 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
20414
20415         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
20416
20417 2006-03-09  Dick Porter  <dick@ximian.com>
20418
20419         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
20420         Fixes bug 76966 again.
20421
20422 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
20423
20424         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
20425         names from r57532
20426         * appdomain.c: Bumped corlib version to 48 (due to r57532)
20427
20428 2006-03-07  Martin Baulig  <martin@ximian.com>
20429
20430         * object.c
20431         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
20432
20433 2006-03-07  Martin Baulig  <martin@ximian.com>
20434
20435         * class.c
20436         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
20437         regression introduced in r56970; see gtest-252.cs.
20438
20439         * loader.c (mono_get_method_constrained): Correctly handle generic
20440         methods; see gtest-253.cs.
20441
20442 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
20443
20444         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
20445
20446 2006-03-04  Martin Baulig  <martin@ximian.com>
20447
20448         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
20449         compute the parent type at runtime, just like we're already doing
20450         it for interfaces.
20451
20452         * reflection.c
20453         (mono_reflection_bind_generic_parameters): Don't compute the
20454         parent type anymore.
20455
20456         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
20457
20458 2006-03-04  Martin Baulig  <martin@ximian.com>
20459
20460         * mono-debug-debugger.h
20461         (mono_debugger_create_notification_function): Allocate memory at
20462         runtime and return a pointer to it.
20463
20464 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
20465
20466         * assembly.c: Fix windows build.
20467         
20468         * assembly.c: Fix build.
20469
20470         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
20471
20472         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
20473         
20474 2006-03-03  Dick Porter  <dick@ximian.com>
20475
20476         * process.c
20477         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
20478         Check parameters before dereferencing them.  Fixes Aaron's part of
20479         bug 77393.
20480
20481 2006-03-03  Raja R Harinath  <rharinath@novell.com>
20482
20483         Fix performance regression.
20484         * loader.c (find_method_in_class): Add 'from_class' argument.
20485         Rename 'klass' argument to 'in_class'.  The signature is compared
20486         against the method in 'in_class', and the corresponding method is
20487         returned from 'from_class'.
20488         (find_method): Walk both 'in_class' and 'from_class' in parallel.
20489         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
20490         type definition and generic instantiation in parallel.
20491         (mono_get_method_constrained): Update to changes.
20492
20493 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
20494
20495         * threads.c: make sure the domain is correct, too when doing
20496         mono_thread_attach ().
20497
20498 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
20499
20500         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
20501         windows. Fixes #77683.
20502
20503 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
20504
20505         * object.h, *: introduced specific way to set elements of an array
20506         of references to be used as write barrier. Still need to audit the
20507         uses of mono_array_addr.
20508
20509 2006-03-01  Miguel de Icaza  <miguel@novell.com>
20510
20511         * object-internals.h: New field to cache the assmebly name, patch
20512         from Tambet Ingo (tambet@ximian.com)
20513
20514 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
20515
20516         * decimal.h, class-internals.h, metadata-internals.h,
20517         file-io.h: mark a few function declarations as internal, to
20518         reduce the number of PLT entries.
20519
20520 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20521
20522         * file-io.c: fix typo in warning message.
20523
20524 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
20525
20526         * loader.c: on unix, lookup the "*A" version of a function
20527         if charset is auto as a second option before failing.
20528
20529 2006-02-28  Raja R Harinath  <rharinath@novell.com>
20530
20531         * class.h (mono_class_inflate_generic_method): Revert to two
20532         argument version.
20533         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
20534         (mono_class_inflate_generic_method_full): Add.
20535         * class.c (mono_class_inflate_generic_method_full): Rename from
20536         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
20537         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
20538         * loader.c, reflection.c: Update to changes.
20539
20540 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
20541
20542         * icall.c: const fixes and small improvements.
20543
20544 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20545
20546         * threadpool.c: for asynchronous connect(), enable the same workaround
20547         for BSD 6 as for the Mac. Fixes bug #77637.
20548
20549 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
20550
20551         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
20552         formatted classes. Fixes #77524.
20553
20554 2006-02-24  Raja R Harinath  <rharinath@novell.com>
20555
20556         * class.c (inflate_generic_type): Add a couple more
20557         micro-optimizations.
20558         (inflate_generic_context): Don't use the 'gmethod' from
20559         'inflate_with'.
20560         (mono_class_inflate_generic_method): If the method has generic
20561         parameters, but the passed-in context doesn't have a 'gmethod',
20562         create one.  Use the possibly simplified generic instantiation
20563         from the declaring class instead of the one passed in.
20564
20565 2006-02-24  Raja R Harinath  <harinath@gmail.com>
20566
20567         Make generic method signature and method header handling lazy.
20568         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
20569         (inflate_generic_header): Likewise.
20570         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
20571         parameter to avoid inflating types.
20572         (mono_get_inflated_method): Empty out.
20573         * class.h (mono_class_inflate_generic_method): Update to changes.
20574         * loader.c (mono_get_method_from_token): Don't parse signature for
20575         generic methods, nor methods of generic classes.
20576         (mono_method_signature): Rename from 'mono_method_signature'.
20577         Inflate signature on demand.
20578         (mono_method_get_header): Inflate method header on demand.
20579         * reflection.c: Update to changes.
20580
20581 2006-02-23  Raja R Harinath  <rharinath@novell.com>
20582
20583         * metadata.c (mono_metadata_inflate_generic_inst): If the
20584         instantiation is closed, don't bother expanding it in the new
20585         context.
20586         * class.c (inflate_generic_class): If the generic instantiation
20587         doesn't change after inflation, return the argument itself.
20588         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
20589         Add bounds checks.
20590         (inflate_generic_context): If neither the generic class nor the
20591         generic method instantiations change, return the original context.
20592         * reflection.c (mono_method_get_object): Do
20593         'mono_get_inflated_method' before accessing the ->klass field.
20594         (inflate_mono_method): Don't create a MonoGenericMethod unless
20595         necessary.
20596         (inflate_method): Don't pass a constructed type as the declaring
20597         type of a methodbuilder.
20598
20599 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
20600
20601         * object.c: fix memory overwrite.
20602
20603 2006-02-22  Dick Porter  <dick@ximian.com>
20604
20605         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
20606         it doesn't work any more.
20607         (mono_threads_request_thread_dump): Fix unused variable warnings.
20608
20609 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
20610
20611         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
20612         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
20613         the public header file.
20614
20615 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
20616
20617         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
20618
20619 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
20620
20621         * class-internals.h, object.c: reduce the size of MonoVTable
20622         and store the interface_offsets array at negative offsets.
20623
20624 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
20625
20626         * metadata.c: tweak table descriptors data structures to reduce
20627         size and runtime relocations.
20628
20629 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20630
20631         * marshal.c: fix some types and opcodes to be type-safe
20632         in marshaling wrappers.
20633
20634 2006-02-21  Ankit Jain  <jankit@novell.com>
20635
20636         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
20637
20638 2006-02-21  Raja R Harinath  <rharinath@novell.com>
20639
20640         * metadata.c (get_constraints): Relax debugging checks for monodis.
20641
20642 2006-02-21  Ankit Jain  <jankit@novell.com>
20643
20644         * metadata.c (mono_metadata_load_generic_params): Move the code
20645         checking for ambiguous generic params from here to mono/dis/get.c
20646         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
20647
20648 2006-02-21  Raja R Harinath  <harinath@gmail.com>
20649
20650         Fix assertion triggered when compiling nemerle.
20651         * class.c (mono_get_shared_generic_inst): Rename from
20652         get_shared_inst and make non-static.
20653         * loader.c (mono_get_shared_generic_method): New.  Used to create
20654         the MonoGenericContext-equivalent of a MonoGenericContainer.
20655         (mono_get_method_from_token): Initialize the 'context' field of
20656         the created MonoGenericContainer.
20657         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
20658         * metadata.c (get_constraints): Add sanity check.
20659         * class-internals.h: Add new internal methods.
20660
20661         * reflection.c (verify_safe_for_managed_space): New sanity check.
20662         Currently checks that owner-less generic parameters aren't allowed
20663         in managed space.
20664         (mono_type_get_object): Use it.
20665         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
20666         that are now in mono_type_get_object.
20667         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
20668
20669 2006-02-19  Raja R Harinath  <harinath@gmail.com>
20670
20671         * metadata.c (mono_type_create_from_typespec): Rename from
20672         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
20673         argument and caching of types in the generic container.
20674         (unwrap_arrays, find_generic_param): Remove.
20675         * metadata-internals.h: Update.
20676         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
20677
20678 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
20679
20680         * class.c (mono_class_get_exception_for_failure): Fix a warning.
20681
20682         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
20683         return values. Fixes #77581.
20684
20685         * class.c (mono_fnptr_class_get): Switch name and name_space.
20686
20687         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
20688         classes and add support for [In, Out] attributes.
20689         (mono_marshal_free_asany): Ditto. Fixes #77524.
20690
20691 2006-02-18  Raja R Harinath  <harinath@gmail.com>
20692
20693         * class.c (mono_class_from_generic_parameter): Make more robust to
20694         incomplete MonoGenericContainers from monodis.
20695
20696 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20697
20698         * class-internals.h: added some more exception types.
20699         * class.c, metadata.c: added a few checks to handle missing
20700         types.
20701
20702 2006-02-17  Raja R Harinath  <rharinath@novell.com>
20703
20704         Use owner-less generic-params some more.
20705         * class.c (my_mono_class_from_generic_parameter): Remove.
20706         (mono_class_from_generic_parameter): Handle null image,
20707         param->name and param->owner.
20708         (mono_class_from_mono_type): Update.
20709         (mono_class_create_from_typespec): Remove 'container' parameter.
20710         If that parameter is non-null, the result is always inflated by
20711         'mono_class_get_full' anyway.
20712         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
20713         parameter.
20714         (mono_class_get_full): Update.
20715
20716         * class.c (inflate_generic_type) [GENERICINST]: If the generic
20717         instance is not open, don't bother inflating.
20718         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
20719         parse metadata for inflated classes.
20720         (_mono_class_get): Change GenericContext* parameter to
20721         GenericContainer*.
20722         (mono_class_create_from_typespec): Likewise.  Simplify, and
20723         implement trivially.  All the cases are handled in
20724         mono_class_from_mono_type.  Don't inflate returned class.
20725         (mono_class_get_full): Delegate GENERICINST optimization to
20726         inflate_generic_type.
20727         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
20728
20729 2006-02-16  Dick Porter  <dick@ximian.com>
20730
20731         * socket-io.c (create_object_from_sockaddr): Fix typo.
20732         (create_sockaddr_from_object): Check array lengths before
20733         potentially accessing items off the end.
20734         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
20735         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
20736         (ves_icall_System_Net_Sockets_Socket_Send_internal)
20737         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
20738         length checks to avoid wraparound overflows.
20739         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
20740         contents of the array of sockets
20741         (hostent_to_IPHostEntry2)
20742         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
20743         Check return value of inet_ntop ().
20744         (addrinfo_to_IPHostEntry): Fix typo
20745
20746 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20747
20748         Type metadata parsing doesn't use generic-instantiation information.
20749         * metadata.c (mono_metadata_parse_array_full): Change
20750         MonoGenericContext* parameter to MonoGenericContainer*.
20751         (mono_metadata_parse_type_full): Likewise.
20752         (mono_type_create_from_typespec_full): Likewise.
20753         (mono_metadata_parse_mh_full): Likewise.
20754         (mono_metadata_parse_generic_inst): Likewise.
20755         (do_mono_metadata_parse_generic_class): Likewise.
20756         (do_mono_metadata_parse_type): Likewise.
20757         * metadata-internals.h: Update to changes.
20758         * class.c (mono_class_find_enum_basetype): Likewise.
20759         (mono_class_setup_fields): Likewise.
20760         (mono_class_create_from_typespec): Likewise.
20761         * loader.c (method_from_methodspec): Likewise.
20762         (mono_get_method_from_token): Likewise.
20763         (mono_method_get_header): Likewise.
20764
20765 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
20766
20767         * marshal.c: handle additional GENERICINST case (patch from
20768         Thong Nguyen <tum@veridicus.com>).
20769         Fix a few cases where LDIND_I/STIND_I was used for references.
20770
20771 2006-02-16  Raja R Harinath  <rharinath@novell.com>
20772
20773         * reflection.c (mono_reflection_get_token): Remove unused variable.
20774
20775 2006-02-16  Martin Baulig  <martin@ximian.com>
20776
20777         * reflection.c (mono_reflection_get_token): Add support for fields
20778         in instantiated generic types.
20779
20780         * icall.c
20781         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
20782
20783 2006-02-15  Martin Baulig  <martin@ximian.com>
20784
20785         * icall.c
20786         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
20787         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
20788         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
20789         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
20790
20791 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
20792
20793         * class.c, metadata.c, metadata.h, object.c, icall.c,
20794         marshal.c: changed mono_type_get_underlying_type () to do
20795         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
20796         Fixed handling of instantiated generic valuetypes (bug #75479).
20797
20798 2006-02-15  Raja R Harinath  <rharinath@novell.com>
20799
20800         * metadata.c (mono_metadata_decode_signed_value): Simplify.
20801         Delegate to mono_metadata_decode_value, and work on the returned value.
20802
20803         * icall.c (ves_icall_MonoType_GetGenericArguments):
20804         Add consistency check here too.
20805         
20806 2006-02-15  Ankit Jain  <jankit@novell.com>
20807
20808         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
20809         char/short etc.
20810
20811 2006-02-15  Ankit Jain  <jankit@novell.com>
20812
20813         * metadata.c (mono_metadata_decode_signed_value): New function to decode
20814         signed values, used only for representing lower bounds of arrays.
20815         (mono_metadata_parse_array_full): Use new
20816         mono_metadata_decode_signed_value to decode lower bounds.
20817
20818 2006-02-14  Martin Baulig  <martin@ximian.com>
20819
20820         * reflection.c
20821         (mono_reflection_get_token): Support "MonoGenericMethod" and
20822         "MonoGenericCMethod" and allow generic instances / methods.
20823
20824 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
20825
20826         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
20827         to obtain the terminal size using an ioctl.
20828
20829         * object.c (mono_nullable_init): Revert this as nullable reference
20830         types are not valid.
20831         (mono_nullable_box): Ditto.
20832
20833 2006-02-09  Dick Porter  <dick@ximian.com>
20834
20835         * threads.c (mono_thread_detach): Drop a reference to the thread
20836         we're detaching.
20837
20838 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
20839
20840         * object.c (mono_nullable_init): Handle nullable reference types.
20841         (mono_nullable_box): Ditto. Fixes #77446.
20842
20843 2006-02-07  Martin Baulig  <martin@ximian.com>
20844
20845         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
20846
20847 2006-02-07  Ankit Jain  <jankit@novell.com>
20848
20849         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
20850         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
20851         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
20852         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
20853         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
20854         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
20855
20856 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
20857
20858         * class.c (mono_class_create_generic): Set type_token as well.
20859
20860         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
20861         compatible with MS.
20862
20863 2006-02-02  Martin Baulig  <martin@ximian.com>
20864
20865         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
20866         has never been used so far.
20867
20868 2006-02-02  Martin Baulig  <martin@ximian.com>
20869
20870         * mono-debug-debugger.h: Changed comment at the top of this file;
20871         the header is not installed, but it's safe to #include it from
20872         within the JIT.
20873
20874         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
20875         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
20876
20877 2006-02-02  Martin Baulig  <martin@ximian.com>
20878
20879         * mono-debug.h
20880         (MonoSymbolTable): Removed the `metadata_info' field.
20881
20882         * mono-debug.c
20883         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
20884
20885         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
20886         (mono_debugger_add_builtin_types): Removed.
20887         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
20888         (mono_debugger_create_notification_function): We now operate on a
20889         pre-allocated area; take a `gpointer' and return `void'.
20890
20891         * mono-debug-debugger.c
20892         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
20893         (mono_debugger_add_builtin_types): Removed.
20894
20895 2006-02-02  Martin Baulig  <martin@ximian.com>
20896
20897         * threads.c (mono_debugger_create_all_threads): New public method.
20898
20899 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
20900
20901         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
20902         breaks on several platforms.
20903
20904 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
20905
20906         * assembly.c: the VS.NET build doesn't supply default values for
20907         MONO_ASSEMBLIES and MONO_CFG_DIR.
20908
20909 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
20910
20911         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
20912         helper function.
20913
20914         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
20915
20916         * loader.c (method_from_memberref): Fix a warning.
20917
20918         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
20919
20920         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
20921         with explicit layout. Fixes #77433.
20922
20923 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
20924
20925         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
20926         max_interface_id is initialized before using it. Fixes #77398.
20927         (ves_icall_Type_GetInterfaces): Ditto.
20928
20929 2006-01-30  Raja R Harinath  <rharinath@novell.com>
20930
20931         * metadata.c (mono_metadata_parse_method_signature_full): Don't
20932         allocate memory for parameter attributes when parsing memberref
20933         signatures.
20934         * loader.c (mono_loader_set_error_method_load): Don't warn.
20935         (method_from_memberref): Ensure MissingMethodException gets thrown
20936         if method is not found.  Make warning more informative.
20937
20938 2006-01-29  Raja R Harinath  <harinath@gmail.com>
20939
20940         Fix #77397
20941         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
20942         return true if is byref.
20943         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
20944         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
20945         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20946
20947 2006-01-27  Raja R Harinath  <rharinath@novell.com>
20948
20949         Fix tests/find-method.2.il
20950         * loader.c (find_method, find_method_in_class): Remove is_inflated
20951         argument.  Revert 2006-01-18 change.
20952         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
20953         is generic, search for method in its generic definition.
20954         * class.c (mono_class_setup_vtable_general): Print generic
20955         arguments of generic types in debugging printf.
20956
20957 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
20958
20959         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
20960
20961         * threads.c (mono_threads_request_thread_dump): New helper function.
20962
20963 2006-01-25  Raja R Harinath  <rharinath@novell.com>
20964
20965         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
20966
20967 2006-01-25  Ankit Jain  <jankit@novell.com>
20968
20969         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
20970         move definition to ..
20971         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
20972         
20973 2006-01-25  Ankit Jain  <jankit@novell.com>
20974             Raja R Harinath  <rharinath@novell.com>
20975
20976         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
20977         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
20978         as necessary.
20979
20980 2006-01-25  Martin Baulig  <martin@ximian.com>
20981
20982         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
20983         `MonoDebuggerThread' into debug-debugger.c.
20984
20985 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
20986
20987         * profiler.c: fix printing of data.
20988
20989 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
20990
20991         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
20992           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
20993
20994 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
20995
20996         * object.c: fix deadlock related to string interning.
20997
20998 2006-01-23  Martin Baulig  <martin@ximian.com>
20999
21000         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
21001
21002         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
21003
21004 2006-01-23  Martin Baulig  <martin@ximian.com>
21005
21006         * mono-debug.h: Moved the prototypes of some functions which are
21007         used by the JIT here from mono-debug-debugger.h.
21008
21009 2006-01-21  Martin Baulig  <martin@ximian.com>
21010
21011         * Makefile.am: Don't install mono-debug-debugger.h.
21012
21013 2006-01-21  Martin Baulig  <martin@ximian.com>
21014
21015         * mono-debug-debugger.h: Enforce the private status of this header
21016         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
21017         Moved some stuff from mono-debugger-jit-wrapper.h here.
21018
21019 2006-01-20  Raja R Harinath  <rharinath@novell.com>
21020
21021         * class.c (mono_class_from_typeref): Add a sanity test to help
21022         catch lack of assembly load/search hooks.
21023
21024 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
21025
21026         * marshal.c (emit_struct_conv): Relax the fields with same offset
21027         check even more. Fixes #77230.
21028
21029 2006-01-18  Martin Baulig  <martin@ximian.com>
21030
21031         * loader.c (find_method_in_class): Added `gboolean is_inflated'
21032         argument; if false, we compare the uninstantiated signatures.
21033         (method_from_memberref): Compare the uninstantiated signatures;
21034         fixes #76417.
21035
21036 2006-01-18  Robert Jordan  <robertj@gmx.net>
21037
21038         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
21039         Clear the weak link. Fixes bug #77170.
21040
21041         * gc.c (mono_gchandle_free):
21042         Reflect *-gc.c changes (tiny optimization).
21043
21044 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
21045
21046         * metadata.c (mono_metadata_signature_dup): Applied patch from
21047         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
21048         Fixes #77288.
21049
21050 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
21051
21052         * marshal.c (emit_struct_conv): Allow fields with the same offset when
21053         marshalling from native to managed code. Fixes #77230.
21054
21055 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21056
21057         * threadpool.c: fix problem (Mac only) when more than one asynchronous
21058         connect. Fixes bug #77020.
21059
21060 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
21061
21062         * class.c: fixed id assignement for nested interfaces (bug #77275).
21063         Added also better info for --print-vtable debugging.
21064
21065 2006-01-12  Martin Baulig  <martin@ximian.com>
21066
21067         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
21068         interfaces on-the-fly; fixes #76625.
21069
21070         * class-internals.h
21071         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
21072         don't need that anymore.
21073
21074 2006-01-12  Miguel de Icaza  <miguel@novell.com>
21075
21076         * socket-io.c
21077         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21078         To avoid initing the nested_classes when not needed I turned the
21079         PeerCredData as a toplevel internal class, as it has to be shared
21080         anyways. 
21081
21082         Fixes the CASA issue.
21083
21084 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
21085
21086         * domain.c: Accessors for MonoJitInfo
21087
21088         * profiler-private.h: Add jitinfo to the end jit hook
21089
21090         * profiler.[ch]: Define new hooks, called after jitting which give
21091         the MonoJitInfo that was compiled
21092
21093 2006-01-10  Martin Baulig  <martin@ximian.com>
21094
21095         * class.c (mono_class_setup_events): Add support for generic
21096         classes; fixes #76440.
21097
21098 2006-01-06  Raja R Harinath  <rharinath@novell.com>
21099
21100         Fix #77160.
21101         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
21102         on passed-in method.
21103
21104 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21105
21106         * object.c (mono_runtime_invoke_array): Add Nullable support.
21107
21108         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
21109
21110 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
21111
21112         * file-io.c: Don't consider sockets as directory and avoid an endless
21113         loop. Fix bug #76966.
21114
21115 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
21116
21117         * object.c (mono_nullable_init): New helper function.
21118         (mono_nullable_box): Ditto.
21119
21120         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
21121
21122         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
21123
21124         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
21125         
21126 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
21127
21128         * class.c (mono_class_is_assignable_from): Make T assignable to 
21129         Nullable<T>.
21130
21131 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
21132
21133         * appdomain.c: Bump corlib version to 46.
21134         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
21135         serialization purpose) and changed ves_icall_System_Reflection_
21136         Assembly_get_code_base signature to accept a boolean (to escape, or 
21137         not, the assembly code base).
21138
21139 2005-12-23  Dick Porter  <dick@ximian.com>
21140
21141         * icall.c: 
21142         * threads-types.h: 
21143         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
21144         CreateEvent icall now returns "created" boolean parameter.
21145
21146 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
21147
21148         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
21149         #76967.
21150
21151         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
21152         when attr_klass is an interface. Fixes #77045.
21153
21154 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
21155
21156         * marshal.c (emit_struct_conv): Fix previous patch.
21157         
21158         * marshal.c (emit_struct_conv): Add a check for fields with the same
21159         offset.
21160
21161 2005-12-20  Raja R Harinath  <rharinath@novell.com>
21162
21163         Fix regression in Mono.C5.
21164         * class.c (mono_class_create_generic): If 'klass' is an interface
21165         set up the interface offsets.
21166         (mono_class_is_assignable_from): Don't throw away generic arguments.
21167
21168 2005-12-19  Raja R Harinath  <rharinath@novell.com>
21169
21170         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
21171         type parameters.
21172
21173 2005-12-15  Raja R Harinath  <rharinath@novell.com>
21174
21175         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
21176         dead store.
21177         (do_mono_metadata_parse_generic_class): Don't pass the current
21178         generic context when parsing the type being instantiated: it
21179         cannot use it, anyway.
21180
21181         * loader.c (method_from_memberref): Don't inflate a signature if
21182         it doesn't contain any type parameters.
21183
21184 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
21185
21186         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
21187
21188 2005-12-14  Martin Baulig  <martin@ximian.com>
21189
21190         * class.c
21191         (mono_type_get_name_recurse): Don't return null for type
21192         parameters and open generic classes.
21193         (mono_class_setup_methods): Don't exclude generic instances.
21194         (mono_get_unique_iid): Use different IDs for different
21195         instantiations of the same generic type.
21196         (mono_class_setup_vtable): Only use setup_generic_vtable() for
21197         open generic instances; create a normal vtable for closed generic
21198         instances.
21199         (mono_class_setup_vtable_general): We're now also called for
21200         closed generic instances.
21201
21202         * reflection.c
21203         (mono_reflection_bind_generic_parameters): Correctly use
21204         mono_metadata_lookup_generic_inst() everywhere.
21205
21206 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
21207
21208         * object.c (mono_class_create_runtime_vtable): Call 
21209         mono_class_setup_vtable ().
21210
21211         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
21212         function.
21213         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
21214         #76959.
21215
21216         * loader.c (mono_loader_set_error_type_load): Print the type load
21217         warnings to the console so they are more visible to the user.
21218         (mono_loader_set_error_method_load): Ditto.
21219
21220         * reflection.c (ensure_runtime_vtable): Revert the last change as it
21221         is still broken.
21222         
21223         * reflection.c (ensure_runtime_vtable): Fix build.
21224
21225         * reflection.c (ensure_runtime_vtable): Disable an optimization which
21226         doesn't work in all cases.
21227
21228 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
21229
21230         * object.c (mono_array_new_full): Treat a single dimensional array
21231         with 0 lower bounds as an szarray. Fixes #76973.
21232
21233         * reflection.c (custom_attr_visible): Really fix this.
21234
21235 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
21236
21237         * reflection.c (custom_attr_visible): Allow nested public attributes
21238         as well.
21239
21240         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
21241         interface check.
21242
21243 2005-12-12  Raja R Harinath  <harinath@gmail.com>
21244
21245         * class.c (set_generic_param_owner): Delete.
21246         (mono_class_create_from_typedef): Don't set ->owner field of
21247         generic parameters to "param containers" of enclosing classes.
21248         * reflection.c (mono_reflection_initialize_generic_parameter):
21249         Likewise.
21250
21251 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
21252
21253         * reflection.c (custom_attr_visible): Fix build.
21254
21255 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
21256
21257         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
21258         private attributes.
21259         
21260         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
21261         handling of null parameter defaults.
21262
21263 2005-12-09  Raja R Harinath  <rharinath@novell.com>
21264
21265         * class.c (mono_class_from_generic_parameter): Don't set
21266         klass->generic_container.
21267         (my_mono_class_from_generic_parameter): Likewise.
21268
21269 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
21270
21271         * reflection.c (load_public_key): Fix a warning.
21272         (method_encode_code): Fix unaligned accesses.
21273
21274 2005-12-07  Martin Baulig  <martin@ximian.com>
21275
21276         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
21277
21278         * reflection.c
21279         (write_generic_param_entry): Encode our custom attrs.
21280
21281         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
21282
21283 2005-12-07  Martin Baulig  <martin@ximian.com>
21284
21285         * reflection.c (encode_new_constraint): Removed; we don't use the
21286         `NewConstraintAttribute' anymore.
21287
21288 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
21289
21290         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
21291         not fire a TypeResolve event when Assembly.GetType () is called.
21292
21293 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
21294
21295         Beginning of support for nullable types in the runtime. Parts of
21296         this patch are from Martin.
21297
21298         * appdomain.c (MONO_CORLIB_VERSION): Bump
21299
21300         * domain.c (mono_init_internal): get the nullable type
21301
21302         * class.c (mono_class_is_nullable): New method
21303         (mono_class_get_nullable_param): New mehod
21304         (mono_class_create_generic): In types T? set cast_class to T
21305
21306         * class-internals.h (MonoDefaults): new nullable default class
21307         (mono_class_get_nullable_param, mono_class_get_nullable_param):
21308         new methods.
21309
21310 2005-12-05  Raja R Harinath  <rharinath@novell.com>
21311
21312         * metadata.c (select_container): New.  Refactor code to select the
21313         appropriate GenericContainer given the type of generic parameter
21314         we are looking for.
21315         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
21316         not a MonoGenericContext.  Use select_container.  Update parameters.
21317         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
21318         and MONO_TYPE_MVAR.
21319         (unwrap_arrays): Remove duplicate tests.
21320         (find_generic_param): Rename from 'has_same_context'.  Now walks a
21321         generic instantiated class to find any arguments that are generic
21322         parameters.
21323         (mono_type_create_from_typespec_full): Use find_generic_param to
21324         avoid evicting some generic instantiations from the typespec
21325         cache.
21326
21327 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
21328
21329         * reflection.c: fixed writing of doubles on ARM FPA.
21330
21331 2005-12-02  Robert Jordan  <robertj@gmx.net>
21332
21333         * icall.c: Fixed EventInfo.ReflectedType (#76829).
21334
21335 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21336
21337         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
21338         least on SUSE 10 they are not the same (on debian, they are just the
21339         same thing).
21340
21341 2005-12-01  Raja R Harinath  <rharinath@novell.com>
21342
21343         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
21344         DeclaringType for VARs and MVARs.
21345         * class.c (set_generic_param_owner): Fix initialization of owner
21346         fields.
21347
21348 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21349
21350         * icall.c: fixed Enum.ToObject() to correctly convert the values.
21351
21352 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21353
21354         * threadpool.c: workaround for a bug that shows up on the Mac:
21355         select()+connect() on a blocking socket is not like it should
21356         be, so we proceed to connect() in that case, wasting the I/O
21357         threadpool thread until connect succeedes. Fixes bug #75436.
21358
21359 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21360
21361         * threadpool.c: fix typo when setting file descriptor states.
21362
21363 2005-11-28  Raja R Harinath  <rharinath@novell.com>
21364
21365         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
21366         * metadata.c (mono_metadata_parse_method_signature_full): Don't
21367         create a temporary signature container.
21368         (mono_metadata_parse_generic_param): Update to changes.
21369         (mono_type_create_from_typespec_full): Update to changes.
21370         * loader.c (method_from_memberref): Don't use a
21371         MonoGenericContainer while parsing a memberref signature.
21372         (method_from_methodspec): Remove dead-store of the 'container'
21373         variable.  It's overwritten before use.
21374
21375         * metadata.c (mono_type_create_from_typespec_full): Make debugging
21376         checks tighter.
21377         (mono_metadata_parse_generic_param): Likewise.
21378         * loader.c (find_method_in_class): Does not need a
21379         MonoGenericContainer.  Use 'mono_method_signature' rather than
21380         'mono_method_signature_full'.
21381         (find_method, mono_get_method_constrained, method_from_memberref):
21382         Update to changes.
21383
21384         * metadata.c (mono_type_create_from_typespec_full): Ensure that
21385         owner-less generic-parameters are never evicted from the typespec
21386         cache.
21387
21388         * loader.c (method_from_memberref): Don't use the current context
21389         when parsing signatures.
21390         (method_from_methodspec, mono_get_method_from_token): Update to changes.
21391
21392         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
21393         side-effects in g_assert.
21394         * loader.c (mono_get_method_from_token): Resolve klass earlier so
21395         that we don't potentially lose information.
21396
21397 2005-11-26  Dick Porter  <dick@ximian.com>
21398
21399         * icall.c:
21400         * threads.c: icalls to implement basic (ie, not named)
21401         System.Threading.Semaphore.
21402
21403 2005-11-24  Dick Porter  <dick@ximian.com>
21404
21405         * process.c
21406         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
21407         Use GetProcessId() if it's available.
21408
21409 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
21410
21411         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
21412
21413 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21414             Ankit Jain  <jankit@novell.com>
21415
21416         * loader.c (mono_get_method_from_token): Initialize 'method' field
21417         of all generic parameters before parsing the signature.  Remove
21418         code that "fixed"-up MVAR references.
21419
21420 2005-11-23  Ankit Jain  <jankit@novell.com>
21421
21422         * metadata.c (mono_metadata_has_generic_params):
21423         (mono_metadata_load_generic_param_constraints):
21424         (mono_metadata_load_generic_params): Move duplicate code ...
21425         (mono_metadata_get_generic_param_row): ... here. Returns the
21426         first row-id in GenericParam table for a given owner (token).
21427         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
21428         prototype.
21429
21430 2005-11-23  Raja R Harinath  <rharinath@novell.com>
21431             Ankit Jain  <jankit@novell.com>
21432
21433         * metadata.c (mono_metadata_class_equal): Pass signature_only when
21434         comparing VARs too.
21435         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
21436         type->data.generic_param only if the type is an MVAR.
21437         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
21438         leak owner-less VARs and MVARs into managed space.
21439
21440 2005-11-21  Martin Baulig  <martin@ximian.com>
21441
21442         * class-internals.h
21443         (MonoMethod): Moved the `generic_container' here from
21444         `MonoMethodNormal' since we now also need it for
21445         `MonoMethodPInvoke';
21446         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
21447         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
21448         an union containing both `MonoMethodNormal' and
21449         `MonoMethodPInvoke'.
21450
21451         * loader.c
21452         (mono_get_method_from_token): Allow implementing generic methods
21453         as interncalls.
21454
21455         * threads.c
21456         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
21457         icall.
21458
21459 2005-11-17  Dick Porter  <dick@ximian.com>
21460
21461         * icall.c: 
21462         * process.h: 
21463         * process.c: Split the Process Start_internal icall into
21464         ShellExecuteEx_internal and CreateProcess_internal, which are
21465         called depending on whether UseShellExecute is true.  Fixes bug
21466         76670.
21467
21468         * appdomain.c (MONO_CORLIB_VERSION): Incremented
21469
21470 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
21471
21472         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
21473         'msize' parameters, use the information in 'mspec' instead.
21474         (emit_object_to_ptr_conv): Ditto.
21475
21476         * marshal.c (emit_struct_conv): Handle explicit layout structs with
21477         fields out of order. Fixes #76733.
21478
21479 2005-11-17  Ankit Jain  <jankit@novell.com>
21480
21481         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
21482
21483 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
21484
21485         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
21486           bug #76575.
21487
21488 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21489
21490         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
21491         for types with non-auto layout. Fixes #76717.
21492
21493 2005-11-16  Ankit Jain  <jankit@novell.com>
21494
21495         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
21496         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
21497         if generic_context is null.
21498           (mono_metadata_generic_param_equal): param->owner can be null.
21499           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
21500         null.
21501
21502 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
21503
21504         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
21505         the correct value.
21506
21507 2005-11-15  Martin Baulig  <martin@ximian.com>
21508
21509         * object.c (set_value): Use mono_class_from_mono_type() instead of
21510         the hack for generic instances; fixes #76136.
21511
21512 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
21513
21514         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
21515         fields.
21516
21517         * image.c (load_metadata_ptrs): Initialize the new fields.
21518
21519         * reflection.c (create_dynamic_mono_image): Ditto.
21520
21521         * reflection.c (build_compressed_metadata): Use the new fields.
21522
21523         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
21524         icall.
21525
21526         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
21527         icall.
21528         
21529 2005-11-15  Ankit Jain  <jankit@novell.com>
21530             Raja R Harinath  <harinath@gmail.com>
21531
21532         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
21533         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
21534         new per-generic_container cache if the cached MonoType's context matches
21535         the current context.
21536           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
21537         to the expected context.
21538           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
21539
21540 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21541
21542         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
21543         we changed the signature of an icall.
21544         * icall.c: Modify to mono_double_ParseImpl return true/false 
21545         depending on the success, instead of throwing the exception. This will
21546         help us in Double.TryParse methods.
21547         
21548 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
21549
21550         * marshal.c (emit_marshal_object): Throw an exception when
21551         marshalling 'object' instead of crashing. Fixes #76696.
21552
21553 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21554
21555         * class-internals.h: Add prototype for mono_type_get_full_name ().
21556
21557 2005-11-11  Dick Porter  <dick@ximian.com>
21558
21559         * threads.c (mono_thread_manage): Make sure the main thread has
21560         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
21561
21562 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
21563
21564         * loader.c (mono_loader_set_error_type_load): Log a warning to the
21565         console about the missing type.
21566         (mono_loader_set_error_method_load): Ditto.
21567
21568 2005-11-09  Miguel de Icaza  <miguel@novell.com>
21569
21570         * mono-config.c (mono_get_config_dir): Set the system defaults if
21571         none is specified.
21572
21573         * assembly.c (mono_set_dirs): New API entry point to set the
21574         assembly and the config directory in one call
21575
21576 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
21577
21578         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
21579         the ftnptr was created from a delegate in a domain other than the
21580         current domain. Fixes #75377.
21581
21582         * exception.h exception.c: Add mono_get_exception_not_supported ().
21583
21584 2005-11-08  Martin Baulig  <martin@ximian.com>
21585
21586         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
21587
21588 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
21589
21590         * security-manager.h: Added definitions to deal with strongname key 
21591         pairs bigger (and smaller) than 1024 bits.
21592         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
21593         adjust wrt the public key length being used.
21594
21595 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
21596
21597         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
21598           Windows build (r51396-51397).
21599
21600 2005-11-03  Martin Baulig  <martin@ximian.com>
21601
21602         * class.c (mono_class_setup_vtable_general): Also add generic
21603         methods to the vtable; fixes #76581.
21604
21605 2005-11-01  Miguel de Icaza  <miguel@novell.com>
21606
21607         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
21608         sure that we lookup GetString method from the System.Text.Encoding
21609         class, not the derived class or we get an empty method.
21610
21611         Fixed class #76612.
21612
21613 2005-10-25  Miguel de Icaza  <miguel@novell.com>
21614
21615         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
21616         if it has been previously set (embedders). 
21617
21618         Make mono_set_rootdir available also on Unix.
21619
21620 005-10-24  Robert Jordan  <robertj@gmx.net>
21621
21622         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
21623
21624 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
21625
21626         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
21627         only calls which are made to native code use this flag.
21628
21629         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
21630
21631 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
21632
21633         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
21634         Add support for FieldBuilders.
21635
21636 2005-10-29  Martin Baulig  <martin@ximian.com>
21637
21638         * mono-debug.c
21639         (mono_debug_using_mono_debugger): New public method; returns
21640         whether we're running inside the debugger.
21641
21642 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
21643
21644         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
21645         for Method/Constructor/FieldBuilders.
21646
21647 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
21648
21649         * reflection.c (module_add_cattrs): Save custom attributes for global methods
21650         and fields as well.
21651
21652 2005-10-26  Martin Baulig  <martin@ximian.com>
21653
21654         * mono-debug-debugger.c
21655         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
21656
21657 2005-10-24  Raja R Harinath  <harinath@gmail.com>
21658
21659         * icall.c (base64_to_byte_array): Don't pass an out-of-range
21660         integer to isspace.
21661
21662 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
21663
21664         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
21665         when passing valuetypes byref. Fixes #76502.
21666
21667 2005-10-19  Jackson Harper  <jackson@ximian.com>
21668
21669         * profiler.c: Don't put a . in front of types that are not in a
21670         namespace.
21671
21672 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
21673
21674         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
21675
21676 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
21677
21678         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
21679         #76436.
21680         (mono_marshal_get_ldflda_wrapper): Fix a warning.
21681
21682 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21683
21684         * assembly.c metadata-internals.h icall.c: Define an additional
21685         parameter for mono_assembly_name_parse_full, so we can avoid creating
21686         S.R.AssemblyName.Version when no version info wasn't passed.
21687         
21688 2005-10-09  Miguel de Icaza  <miguel@novell.com>
21689
21690         * class.c (mono_type_get_full_name): Reimplement method that was
21691         removed. 
21692
21693         * image.c: Some docs
21694
21695 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
21696
21697         * profiler.c (output_newobj_profile): Fix printing of Total memory
21698         on x86.
21699
21700 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21701
21702         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
21703
21704 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
21705
21706         * threads.c: remove debug output.
21707
21708 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
21709
21710         * threads.c (mono_thread_manage): Fix crashes if more than 64
21711         threads need to be aborted. Hopefully fixes #75899.
21712
21713         * assembly.c (mono_stringify_assembly_name): New helper function.
21714
21715         * class.c: Use mono_stringify_assembly_name instead of the similar
21716         static function.
21717
21718         * assembly.h assembly.c: Add support for calling a postload search 
21719         hook if an assembly cannot be loaded.
21720
21721         * appdomain.c: Register new search hooks which call the AssemblyResolve
21722         events in AppDomain. Fixes #75231
21723
21724 2005-10-07  Martin Baulig  <martin@ximian.com>
21725
21726         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
21727         methods without debug info.
21728
21729 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
21730
21731         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
21732         wrappers.
21733
21734 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21735
21736         * file-io.c: now that we return symlinks, use lstat and, when the file
21737         is a symbolic link, stat, to get the file attributes. Also avoid the
21738         conversion to/from utf16/external.
21739
21740 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
21741
21742         * class.c (mono_class_layout_fields): Compute klass->has_references
21743         correctly if an embedded valuetype is not yet initialized. Fixes
21744         #76331.
21745
21746 2005-10-04  Martin Baulig  <martin@ximian.com>
21747
21748         * metadata.c
21749         (mono_metadata_load_generic_param_constraints): New public
21750         function; splitted the constraints loading out from
21751         mono_metadata_load_generic_params().
21752
21753         * class.c (mono_class_create_from_typedef): Call
21754         mono_metadata_load_generic_param_constraints() after setting up
21755         the type and creating our parent; fixes #75329.
21756
21757 2005-10-04  Martin Baulig  <martin@ximian.com>
21758
21759         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
21760         non-dynamic parent classes.
21761
21762 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
21763
21764         * file-io.c : win32 build fix (ETXTBSY seems not found).
21765
21766 2005-10-04  Martin Baulig  <martin@ximian.com>
21767
21768         * reflection.c
21769         (mono_image_get_methodspec_token): Make the cache actually work;
21770         fixes #75974.
21771
21772 2005-10-04  Martin Baulig  <martin@ximian.com>
21773
21774         * class.c (mono_class_name_from_token): Removed the unneccessary
21775         `MonoGenericContext *' argument.
21776
21777 2005-10-04  Martin Baulig  <martin@ximian.com>
21778
21779         * loader.c
21780         (method_from_methodspec): Make the caching work again; fixes the
21781         performance regression from #76262.
21782
21783 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21784
21785         * file-io.c:
21786         * file-io.h:
21787         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
21788         GetFileSystemEntries that performs the same work but without going
21789         into io-layer, locking, etc.
21790
21791 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
21792
21793         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
21794         ThreadState_Stopped as well. Fixes #76047.
21795
21796 2005-09-29  Martin Baulig  <martin@ximian.com>
21797
21798         * class.c
21799         (inflate_generic_context): If the new context has a `gmethod', set
21800         its `container' that that gmethod's `container'.
21801
21802         * metadata.c
21803         (mono_metadata_parse_generic_param): Simplify things;
21804         `generic_container = generic_context->container;' is just fine.
21805
21806         * loader.c (method_from_methodspec): Code cleanups.
21807
21808 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
21809
21810         * decimal.c: fix warning (and let gcc generate correct
21811         code on ARM with optimizations).
21812
21813 2005-09-28  Martin Baulig  <martin@ximian.com>
21814
21815         * loader.c
21816         (method_from_memberref): Added `MonoGenericContext *class_context'
21817         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
21818         (method_from_methodspec): If we're a memberref, use the enclosing
21819         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
21820
21821 2005-09-28  Martin Baulig  <martin@ximian.com>
21822
21823         * object.c (mono_runtime_invoke_array): Added support for
21824         MONO_TYPE_GENERICINST; fixes #75917.
21825
21826 2005-09-27  Martin Baulig  <martin@ximian.com>
21827
21828         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
21829         `k->byval_arg.type' to determine the actual type.
21830
21831         * loader.c (method_from_methodspec): Removed some hacks.
21832
21833 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
21834
21835         * class-internals.h (mono_field_is_deleted): Do the test for
21836         rtspecialname before we check the actual name of the field. This
21837         prevents us from dereferencing a pointer into the string table,
21838         saving us from accessing a few pages
21839
21840         * *.c: Replace the use of {Enter,Leave}CriticalSection with
21841         macros. This will allow a deadlock debugger to easily be plugged
21842         in.
21843
21844 2005-09-27  Martin Baulig  <martin@ximian.com>
21845
21846         * loader.c (method_from_methodspec): Create a "signature"
21847         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
21848
21849 2005-09-27  Martin Baulig  <martin@ximian.com>
21850
21851         * class.c
21852         (inflate_generic_class): Correctly set the new context's
21853         container.
21854
21855         * loader.c
21856         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
21857         instead of a `MonoGenericContext *'.
21858         (mono_method_signature_full): Take a `MonoGenericContainer *'
21859         instead of a `MonoGenericContext *'.
21860
21861         * metadata.c
21862         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
21863         instead of a `MonoGenericContext *'.
21864         (mono_metadata_parse_method_signature_full): Likewise.
21865
21866 2005-09-26  Martin Baulig  <martin@ximian.com>
21867
21868         * class.c
21869         (mono_class_from_generic_parameter): Set `klass->generic_container'
21870         (mono_class_from_generic_parameter): Likewise.
21871         (mono_bounded_array_class_get): We inherit the generic container
21872         from the element class.
21873
21874         * loader.c
21875         (find_method, find_method_in_class): Take a `MonoGenericContext *'
21876         argument rather than computing it here.
21877         (method_from_memberref): Correctly set the generic context before
21878         parsing the signature.  Fixes #75681.
21879
21880 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
21881
21882         * object.c (mono_class_has_special_static_fields): Fix warnings.
21883
21884 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21885
21886         * assembly.c: Add parse_public_key function, to
21887         par the public keys. Also added mono_assembly_name_parse_full,
21888         to define it the parsed key should be freed or not.
21889         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
21890         to parse a long format assembly name.
21891         * metadata-internals.h: Keep mono_assembly_name_parse_full as
21892         private, since calling it to preserve the key requires
21893         freeing it manually.
21894         
21895 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
21896
21897         * locales.c : removed HAVE_ICU part.
21898
21899 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * object.c (mono_class_create_runtime_vtable): Avoid calling 
21902         field_is_special_static if the klass has no special static fields.
21903
21904         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
21905         (MonoCachedClassInfo): Likewise.
21906
21907         * object.c (mono_class_has_special_static_fields): New helper function.
21908
21909 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21910
21911         * class.c (mono_class_create_from_typedef): Don't call 
21912         interfaces_from_typedef_full for enums.
21913         (mono_class_create_from_typedef): Compute the base types of enums directly
21914         without calling mono_class_setup_fields ().
21915         (mono_class_find_enum_basetype): New helper function.
21916
21917         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
21918         one place inside the string heap.
21919         
21920 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
21921
21922         * class.c: locking fixes, code cleanups, some docs added.
21923         Allocate some data structures in the image mempool.
21924
21925 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21926
21927         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21928         the example code.
21929         
21930 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
21931
21932         * class-internals.h, class.c, reflection.c: reduce memory taken by
21933         MonoClass.
21934
21935 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
21936
21937         * metadata.c, metadata.h, loader.h: documentation updates, code and
21938         API cleanups.
21939
21940 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
21941
21942         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
21943         the example code.
21944
21945         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
21946         page faults caused by the runtime while reading metadata.
21947
21948 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21949
21950         * socket-io.c: the field names were changed 3 months ago and no one
21951         realized until bug #76077 got filed!
21952
21953 2005-09-20  Martin Baulig  <martin@ximian.com>
21954
21955         * icall.c (assembly_icalls): Removed some unused debugger icalls.
21956
21957 2005-09-20  Martin Baulig  <martin@ximian.com>
21958
21959         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
21960         write the rank into the class entry.
21961
21962 2005-09-20  Martin Baulig  <martin@ximian.com>
21963
21964         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
21965
21966 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
21967
21968         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21969
21970         * icall.c (custom_attrs_defined_internal): New icall.
21971
21972         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
21973         function.
21974         (mono_custom_attrs_construct_by_type): New helper function.
21975
21976 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
21977
21978         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
21979         terminate the resulting string. Fixes #76123.
21980
21981 2005-09-16  Martin Baulig  <martin@ximian.com>
21982
21983         * mono-debug.c
21984         (mono_debug_add_method): Ignore inflated methods for the moment.
21985
21986 2005-09-14  Martin Baulig  <martin@ximian.com>
21987
21988         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
21989
21990 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
21991
21992         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
21993         return a success/failure indication.
21994         (mono_metadata_interfaces_from_typedef_full): Ditto.
21995         (get_constraints): Ditto.
21996
21997 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
21998
21999         * marshal.c (emit_marshal_array): Fix handling of null arrays.
22000         
22001         * marshal.c (emit_marshal_array): Add support for returning string
22002         arrays from delegates. Fixes #76063.
22003
22004         * marshal.c: Use the emit_ldloc/stloc macros where possible.
22005
22006 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
22007
22008         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
22009         icall.
22010
22011 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
22012
22013         * reflection.c icall.c: Fix after mono_get_exception_type_load
22014         signature change.
22015
22016         * assembly.c (mono_assembly_get_assemblyref): New helper function.
22017         (mono_assembly_load_reference): Use the new helper.
22018
22019         * class-internals.h (MonoLoaderError): New structure containing 
22020         information about type loading errors.
22021
22022         * class-internals.h loader.c: Add APIs to store per-thread loader
22023         error information.
22024
22025         * loader.c class.c: Set the loader error if needed.
22026
22027         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
22028
22029 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
22030
22031         * decimal.c: fixed to handle the broken ARM fp format.
22032
22033 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
22034
22035         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
22036         broken.
22037
22038 2005-09-06  Martin Baulig  <martin@ximian.com>
22039
22040         * domain.c (supported_runtimes): Added v2.0.50727.
22041
22042 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
22043
22044         * culture-info.h: reduce the size of some structures.
22045
22046 2005-09-05  Martin Baulig  <martin@ximian.com>
22047
22048         Reflect latest API changes in the August CTP.
22049
22050         * icall.c
22051         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
22052         ("MonoType.HasGenericArguments"): Removed.
22053         ("MonoMethod.BindGenericParameters"): Renamed to
22054         "MakeGenericMethod".
22055         ("MethodBuilder.BindGenericParameters"): Renamed to
22056         "MakeGenericMethod".    
22057
22058 2005-09-05  Martin Baulig  <martin@ximian.com>
22059
22060         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
22061
22062 2005-09-05  Martin Baulig  <martin@ximian.com>
22063
22064         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22065
22066         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
22067         generic_container is non-NULL.
22068
22069 2005-09-05  Martin Baulig  <martin@ximian.com>
22070
22071         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22072
22073         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
22074
22075 2005-08-29  Michal Moskal  <malekith@nemerle.org>
22076
22077         * reflection.c (encode_locals,
22078         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
22079         for large generic types.
22080
22081 2005-09-05  Martin Baulig  <martin@ximian.com>
22082
22083         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22084
22085         * class.c (mono_dup_array_type): New public method.
22086         (mono_metadata_signature_deep_dup): New public method.
22087         (dup_type): Correctly duplicate array and function types.
22088
22089 2005-09-05  Martin Baulig  <martin@ximian.com>
22090
22091         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22092
22093         * reflection.c (get_default_param_value_blobs): Handle generic types
22094         and generic methods.
22095
22096 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
22097
22098         * class.c: Fixed error reporting (method/class were inversed) for 
22099         inheritance demands.
22100         * security-manager.c|h: Added the AppDomain when calling the managed
22101         System.Security.SecurityManager.InheritanceDemand method.
22102
22103 2005-09-01  Raja R Harinath  <rharinath@novell.com>
22104
22105         * reflection.c (encode_marshal_blob): 'marshaltype' and
22106         'marshaltyperef' are alternate sources for the custom marshaler
22107         name.
22108
22109 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
22110
22111         * class.c: fix creation of array classes with rank == 1
22112         (patch by Ankit Jain <jankit@novell.com>).
22113
22114 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
22115
22116         * object.c: fix check for creating the bound data for arrays vs
22117         szarrays.
22118
22119 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22120
22121         * object.c: configuration file name is now based on the executable name,
22122         not the image name. Fixes bug #75931.
22123
22124 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
22125
22126         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
22127         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
22128
22129 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
22130
22131         * rand.c: Use wincrypt.h instead of WinCrypt.h.
22132
22133 2005-08-24  Ankit Jain  <jankit@novell.com>
22134             Raja R Harinath  <rharinath@novell.com>
22135
22136         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
22137           called by it recursively.
22138           (mono_class_init): Remove special case in pending_init handling, since it's
22139           superseded by the fix to mono_class_from_typeref.
22140
22141 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
22142
22143         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
22144         BROKEN_THREAD_START stuff.
22145
22146 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
22147
22148         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
22149         trampoline.
22150
22151         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
22152         
22153         * object.c (mono_delegate_ctor): Replace the original function address with
22154         a delegate trampoline.
22155
22156 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
22157
22158         * icall.c: add boolean argument to base64_to_byte_array and 
22159         InternalFromBase64String to control whether a whitespace-only string
22160         is allowed (or should casue a FormatException to be thrown). We need
22161         this as the behavior has changed between MS.NET 1.x and 2.0, and we
22162         to match the MS behaviour in both profiles.
22163         * appdomain.c: Bump corlib version.
22164
22165 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22166
22167         This patch implements a big portion of publisher policy
22168         support, used to bind assembly versions and redirect
22169         one assembly from version A to version B.
22170
22171         * assembly.c:
22172         New GSList loaded_assembly_bindings, for storing the cached
22173         assembly bindings.
22174         (assembly_binding_maps_name): New static function for checking if a 
22175         assembly binding information maps an assembly name.
22176         (mono_assembly_binding_info_free): New function for freeing
22177         assembly binding information resources.
22178         (get_publisher_policy_info): New static function for retrieving 
22179         assembly binding information from a MonoImage.
22180         (compare_versions): New static function for comparing an assembly
22181         binding information data and the version of an assembly name.
22182         (check_policy_versions): New static function for checking if an
22183         assembly binding info mapping an assembly name is valid for it.
22184         (mono_assembly_load_publisher_policy): New static function for
22185         loading the 'policy.major.minor.MyAssembly' image for an assembly
22186         with an assembly name 'aname'.
22187         (mono_assembly_bind_version): New static function for updating
22188         assembly redirection.
22189         (mono_assembly_apply_binding): New static function for applying
22190         assembly binding.
22191         (search_binding_loaded): New static function for searching 
22192         loaded assembly binding infos in the cache domain.
22193         (mono_assembly_load_full): Don't apply assembly binding for
22194         reflection only assemblies.
22195
22196         * metadata-internals.h: Add MonoAssemblyBindingInfo,
22197         which contains information about assembly binding. Also
22198         declare signature for mono_config_parse_publisher_policy ()
22199         function, used to retrieve pub policy info.
22200         
22201         * mono-config.c:
22202         (publisher_policy_start): New static function used to parse publisher 
22203         policy config files.
22204         (publisher_policy_parser): New static MonoParseHandler containing 
22205         the functions used when parsing config files.
22206         (mono_config_parse_publisher_policy): New function for parsing
22207         publisher policy files.
22208         
22209 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
22210
22211         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
22212
22213         * marshal.c (mono_delegate_free_ftnptr): Ditto.
22214
22215         * object.c (mono_get_addr_from_ftnptr): New helper function.
22216
22217         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
22218
22219         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22220
22221 2005-08-19  Dick Porter  <dick@ximian.com>
22222
22223         * threads.c, threads.h, appdomain.c, appdomain.h,
22224         profiler-private.h, monitor.c, object.c, object-internals.h,
22225         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
22226         store the thread ID, so it can hold a 64 bit value if needed.
22227
22228 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
22229
22230         * reflection.c (mono_reflection_create_dynamic_method): Store the
22231         handle class into the method references as well so ldtoken works in
22232         dynamic methods.
22233
22234         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
22235         types.
22236
22237 2005-08-19  Ankit Jain <jankit@novell.com>
22238
22239         Fix #75847.
22240         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
22241           here rather than using the method signature of a arbitrary function
22242           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
22243           two arguments.
22244           Hack done with Harinath.
22245
22246 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22247
22248         * threadpool.c: disable printing stack traces when we get a exception
22249         in a threadpool thread. I need to do more testing to figure out which
22250         cases actually print this. Fixes bug #75828.
22251
22252 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22253
22254         * icall.c: there might be ignored whitespace after the last '='. This
22255         fixes length computation and bug #75840.
22256
22257 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * assembly.c (mono_assembly_load_full): Consider .exe extension as
22260         well. Fixes #75809.
22261
22262         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
22263         #75784.
22264         
22265         * reflection.c (create_custom_attr_data): Ditto.
22266
22267 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
22268
22269         * locales.c, culture-info.h : removed RegionLCIDMap.
22270         * culture-info-tables.h : regenerated.
22271
22272 2005-08-16  Martin Baulig  <martin@ximian.com>
22273
22274         * class.c (mono_type_get_name_recurse): Small fix.
22275
22276 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
22277
22278         * locales.c : indentation fixie.
22279
22280 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
22281
22282         * object-internals.h,
22283           locales.h,
22284           locales.c,
22285           culture-info.h,
22286           icall.c : added RegionInfo table support.
22287         * culture-info-table.h : regenerated for region support.
22288
22289 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
22290
22291         * reflection.c (resolve_object): handle all kinds of MonoMethod
22292         including generic ones
22293
22294 2005-08-12  Ankit Jain <jankit@novell.com>
22295
22296         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
22297           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
22298
22299 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
22300
22301         * process.c: Don't close a thread handle when it's NULL. This is a
22302         workaround for bug #75733.
22303
22304 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
22305
22306         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
22307
22308 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
22309
22310         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
22311
22312 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22313
22314         * threadpool.c: if a work item in the thread pool has a callback that
22315         catches a exception, don't propagate it after invoking the callback.
22316         Fixes bug #75336.
22317
22318 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
22319
22320         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
22321
22322         * class-internals.h (MonoCachedClassInfo): Add some new fields.
22323
22324         * class.c (mono_class_init): Load field info lazily in the AOT case.    
22325
22326         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
22327
22328 2005-08-03  Ankit Jain  <jankit@novell.com>
22329
22330         Fix #75683.
22331         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
22332           PInvoke calling convention is 0.
22333
22334 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
22335
22336         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
22337         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
22338
22339 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
22340
22341         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
22342         to handle threads not started by the GC (patch by Michael Meeks
22343         <michael.meeks@novell.com>).
22344
22345 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
22346
22347         * reflection.c: Make buffer used in emitting types larger for some
22348         big generic types (patch by Michal Moskal).
22349
22350 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
22351
22352         * mono-debug.c: Fix some (not all) alignment problems.
22353
22354 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22355
22356         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
22357         Invoke mono_image_load_from_data_full passing the refonly
22358         parameter.
22359
22360         * assembly.c
22361         (mono_assembly_open_from_bundle): Add the refonly argument, 
22362         in order to pass it to other methods it calls to.
22363         (do_mono_assembly_open): Add the refonly argument, in order 
22364         to pass it to other methods it calls to.
22365         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
22366         the refonly parameter to it.
22367
22368         * image.c: Add loaded_images_refonly_hash and
22369         loaded_images_refonly_guid_hash to cache the reflection
22370         only loaded images.
22371         (mono_images_init): Initialize the hash tables used for
22372         caching the reflection only images.
22373         (load_modules): Invoke mono_image_open_full passing the refonly
22374         parameter to load the modules the correct way.
22375         (build_guid_table): Add the refonly argument, to re-build the 
22376         correct hash table.
22377         (do_mono_image_open): Added the refonly argument, in order to
22378         define it for the loaded image.
22379         (mono_image_loaded_full): New function, which receives an
22380         additional parameter to look for the image in the refonly or
22381         non-refonly section.
22382         (mono_image_loaded): Updated, using mono_image_loaded_full.
22383         (mono_image_loaded_by_guid_full): The same case that happens
22384         with mono_image_loaded_full.
22385         (mono_image_loaded_by_guid): Likewise.
22386         (register_image): Use the ref_only variable inside MonoImage
22387         to decide in which hash table store the current image.
22388         (mono_image_open_from_data_full): Rename
22389         mono_image_open_from_data to mono_image_open_from_data_full,
22390         adding the refonly argument, to define the ref_only variable 
22391         inside MonoImage.
22392         (mono_image_open_from_data): Return 
22393         mono_image_open_from_data_full.
22394         (mono_image_open_full): Rename mono_image_open to
22395         mono_image_open_full, receiving the new refonly argument,
22396         to pass it to inner methods.
22397         (mono_pe_file_open): Update this function, to open
22398         a MonoImage as a non-refonly image.
22399         (mono_image_close): Use the refonly variable inside
22400         MonoImage to remove the image from the correct caches.
22401
22402         * image.h: Add the signatures of mono_image_open_full,
22403         mono_image_open_from_data_full, mono_image_loaded_full,
22404         mono_image_loaded_by_guid_full.
22405
22406         * metadata-internals.h: Add the ref_only field to 
22407         MonoImage.
22408         
22409 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22410
22411         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
22412         Fix the last behavior, which used to load the assemblies and
22413         extract MonoReflectionAssemblyName information, instead of
22414         extract it from the metadata tables. Needed for Reflection
22415         Only assemblies.
22416         
22417 2005-07-29  Martin Baulig  <martin@ximian.com>
22418
22419         * mono-debug-debugger.c
22420         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
22421         not initialized.
22422
22423         * mono-debug.c
22424         (mono_debug_address_from_il_offset): Check whether we have
22425         debugging support before attempting to take the lock.
22426         (mono_debug_source_location_from_address): Likewise.
22427         (mono_debug_source_location_from_il_offset): Likewise.
22428         (mono_debug_il_offset_from_address): Likewise.
22429         (mono_debug_address_from_il_offset): Likewise.
22430
22431 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
22432
22433         * class.c (mono_class_from_name_case): Add support for dynamic images.
22434         Fixes #75650.
22435
22436         * object.c (mono_class_compute_gc_descriptor): Add a workaround
22437         for #75479.
22438
22439 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22440         
22441         * reflection.c (mono_method_get_object): Fix warning.
22442
22443 2005-07-28  Martin Baulig  <martin@ximian.com>
22444
22445         * mono-debug.c
22446         (mono_debug_add_wrapper): Also write the wrapper type.
22447
22448 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
22449
22450         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
22451         
22452         * class.c (mono_class_init): Avoid reading nested classes if the AOT
22453         data indicates the class has none.
22454
22455 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
22456
22457         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
22458         loader lock with the debugger lock. Prevents deadlocks for beagle.
22459
22460         Beagle can now run on an smp box for a weekend without any
22461         issues. Woohoo!
22462
22463 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
22464
22465         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
22466         in a module. Fixes #75629.
22467
22468 2005-07-26  Martin Baulig  <martin@ximian.com>
22469
22470         * mono-debug.c (mono_debug_add_wrapper): New static method.
22471         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
22472         interncall or a wrapper.
22473
22474         * mono-debug.h (MonoDebugWrapperData): New public typedef.
22475         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
22476         (MONO_DEBUGGER_VERSION): Bump to 51.
22477
22478         * mono-debug-debugger.c
22479         (mono_debugger_add_type): Removed this empty function.
22480         (mono_debugger_add_method): Likewise.
22481
22482 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
22483
22484         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
22485         before accessing method->slot.
22486
22487 2005-07-21  Jb Evain  <jbevain@gmail.com>
22488
22489         * reflection.c (method_encode_clauses/class): Handle filters clauses.
22490         Fixes #75010.
22491
22492 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
22493
22494         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
22495         #75587.
22496
22497 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
22498
22499         * image.h image.c: Add mono_image_get_guid () API function.
22500
22501 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
22502
22503         There were issues when multiple threads tried to load
22504         assemblies. A deadlock was created between assemblies_mutex and
22505         mono_domain_assemblies_lock. This fixes the issue by making the
22506         assembly ref counting be lock free. See bug 75586.
22507         
22508         * image.c (mono_image_close): The add ref function here was using
22509         Interlocked operations while the unref was using a mutex and a
22510         --. I don't think this was ever a bug that would be exposed in a
22511         non-pendantic way (ie, by an embedder doing a ref on one thread
22512         and an unref on another), but for the sake of correctness, this is
22513         now Interlocked.
22514
22515         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
22516         (mono_assembly_load_reference): Call mono_assembly_addref rather
22517         than touching the refcount ourselves.
22518         (mono_assembly_close): Use InterlockedDecrement to unref the
22519         assembly. Don't acquire the lock unless it is actually needed.
22520
22521 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22522
22523         * class.c (mono_class_layout_fields): Fix calculation of has_references
22524         for generic types.
22525
22526 2005-07-12  Martin Baulig  <martin@ximian.com>
22527
22528         Applying a patch from Michal Moskal <malekith@nemerle.org>.
22529
22530         * metadata.c
22531         (mono_type_hash): Provide better hashing for generic instances.
22532         (mono_generic_inst_hash): Improve hashing.
22533         (mono_generic_class_hash): Likewise.
22534
22535         * reflection.c (mymono_metadata_type_hash): Improve hashing for
22536         generic instances.
22537
22538 2005-07-12  Martin Baulig  <martin@ximian.com>
22539
22540         * reflection.c (mono_reflection_create_runtime_class): Remove the
22541         hack for generic type definitions and non-`Run' assemblies.
22542         (mono_reflection_bind_generic_parameters): Also use
22543         `klass->wastypebuilder' to check for TypeBuilders.
22544
22545 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
22546
22547         * class.c (mono_class_layout_fields): Fix calculation of has_references
22548         for generic types.
22549
22550         * class.c (inflate_generic_class): Fix a leak.
22551         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
22552         for generic types.
22553
22554 2005-07-11  Martin Baulig  <martin@ximian.com>
22555
22556         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
22557         on error.
22558
22559 2005-07-11  Martin Baulig  <martin@ximian.com>
22560
22561         * loader.c (find_method): Also lookup in
22562         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
22563
22564 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22565
22566         * appdomain.c (mono_domain_unload): Don't free the error message
22567         before passing it to mono_get_exception_...
22568
22569         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
22570         
22571 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
22572
22573         * threads.c: try to better guess an available RT signal (bug #75387).
22574
22575 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22576
22577         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
22578         and CACHE_OBJECT.
22579
22580 2005-07-07  Martin Baulig  <martin@ximian.com>
22581
22582         * class.c (mono_type_get_name_full): Return NULL for
22583         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
22584         fixes #75408.
22585
22586 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
22587
22588         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
22589         exit the appdomain as well being aborted.
22590
22591         * threadpool.c: Create all threadpool threads inside the root appdomain, and
22592         change back to the root domain after calling managed code. This enables
22593         appdomains using threadpools to be unloaded.
22594
22595 2005-07-07  Martin Baulig  <martin@ximian.com>
22596
22597         * class-internals.h
22598         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
22599         into `MonoDynamicGenericClass' since we only need it for dynamic
22600         types.
22601
22602         * reflection.c (mono_class_bind_generic_parameters): We don't need
22603         to compute the `parent' here.
22604
22605 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
22606
22607         * culture-info-table.h : regenerated.
22608
22609 2005-07-06  Martin Baulig  <martin@ximian.com>
22610
22611         * icall.c
22612         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
22613
22614         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
22615
22616 2005-07-06  Martin Baulig  <martin@ximian.com>
22617
22618         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
22619         we're doing a signature-only comparision; fixes #74945.
22620
22621 2005-07-06  Martin Baulig  <martin@ximian.com>
22622
22623         * class-internals.h (MonoGenericClass): Moved some things out into
22624         a new `MonoInflatedGenericClass' type.  
22625         (MonoInflatedGenericClass): New type; the `klass' of a
22626         `MonoGenericClass' is now computed lazyly in
22627         mono_get_inflated_generic_class().      
22628
22629         * class.c (mono_get_inflated_generic_class): New public function.
22630         (mono_class_inflate_generic_method): Removed the unused
22631         `MonoClass *' argument.
22632         (setup_generic_vtable): Don't call mono_get_inflated_method() on
22633         all the methods.
22634         (mono_class_create_generic): Make this static and merge it with
22635         mono_class_create_generic_2(); we're now called automatically from
22636         mono_get_inflated_generic_class().
22637
22638         * loader.c (mono_method_signature): Call
22639         mono_get_inflated_method() here.
22640
22641 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
22642
22643         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
22644         type of fields with RVA.
22645
22646         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
22647         for this pseudo class.
22648         (my_mono_class_from_generic_parameter): Likewise.
22649         (mono_class_init): Allow interfaces to have cctors.
22650
22651 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22652
22653         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
22654         lazily for AOT methods.
22655
22656 2005-07-05  Martin Baulig  <martin@ximian.com>
22657
22658         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
22659         returns FALSE for a successful match, not TRUE.
22660
22661 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
22662
22663         * loader.c (mono_method_get_index): Optimize this a bit.
22664
22665 2005-07-04  Martin Baulig  <martin@ximian.com>
22666
22667         * class.c
22668         (class_compute_field_layout): Move the check for generic type
22669         definitions into mono_class_layout_fields().  Fixes #74684.
22670         (mono_class_from_generic_parameter): Correctly compute
22671         `klass->parent'; fixes #75457.
22672
22673         * reflection.c (register_assembly, register_module): Make sure
22674         `domain->rejobject_hash' is already created.
22675
22676 2005-07-02  Martin Baulig  <martin@ximian.com>
22677
22678         * class-internals.h
22679         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
22680         `MonoDynamicGenericClass'.      
22681
22682 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
22683
22684         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
22685         returned by a field getter is null, since null is a valid value.
22686
22687 2005-07-01  Martin Baulig  <martin@ximian.com>
22688
22689         * reflection.c (mono_reflection_generic_class_initialize): Update
22690         the `dgclass->fields [i].parent' to the correct class.
22691         (mono_image_get_fieldref_token): Use the declaring type, not the
22692         reflected type.
22693
22694 2005-07-01  Martin Baulig  <martin@ximian.com>
22695
22696         * loader.c (find_method): Also look in the interfaces; fixes #75429.
22697
22698 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
22699
22700         * threads.c (thread_cleanup): assert that thread != NULL
22701         (wait_for_tids_or_state_change): We were using the wrong variable
22702         when accessing wait->threads. `i' was always out of the bounds of
22703         the array.
22704
22705 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22706
22707         * loader.c: map user32 and kernel32 to libMonoSupportW
22708
22709 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
22710
22711         * appdomain.c (unload_thread_main): Mark this as WINAPI.
22712
22713 2005-06-28  Martin Baulig  <martin@ximian.com>
22714
22715         * loader.c (method_from_methodspec): Fix #75334.
22716
22717 2005-06-28  Martin Baulig  <martin@ximian.com>
22718
22719         Fix #74953 - Arrays now implement the generic IList<T> interface
22720         on the 2.0 platform.
22721
22722         * class-internals.h (MonoDefaults): Added `generic_array_class'.
22723
22724         * reflection.c (mono_class_bind_generic_parameters): New public
22725         function; similar to mono_reflection_bind_generic_parameters(),
22726         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
22727
22728         * domain.c (mono_init_internal): Try to initialize.
22729         `mono_defaults.generic_array_class' here; this'll only succeed if
22730         we're using the 2.0 corlib.
22731
22732         * icall.c
22733         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
22734         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
22735         (mono_lookup_internal_call): Added support for nested classes.
22736
22737         * loader.c
22738         (mono_get_method_from_token): Set `result->signature->pinvoke' if
22739         we're an interncall and have generic arguments.
22740
22741         * class.c
22742         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
22743         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
22744         instance of System.Array.InternalArray<T> for arrays, so they
22745         implement the generic IList<T> interface.
22746
22747 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
22750         (chastamar@yahoo.com). Fixes #75374.    
22751
22752 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
22753
22754         * culture-info-table.h: regenerated.
22755
22756 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22757
22758         * icall.c: handle spaces correctly for base64 strings.
22759
22760 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
22761
22762         * *.c: Kill some warnings.
22763
22764 2005-06-23  Duncan Mak  <duncan@novell.com>
22765
22766         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
22767         that this builds on Solaris 10 (x86).
22768
22769 2005-06-23  Martin Baulig  <martin@ximian.com>
22770
22771         * class.c
22772         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
22773         generic type definitions.
22774
22775 2005-06-23  Martin Baulig  <martin@ximian.com>
22776
22777         Fix #75331.
22778
22779         * metadata.c (mono_class_get_overrides): Renamed to
22780         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
22781         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
22782         pass it to mono_get_method_full().
22783
22784 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
22785
22786         * reflection.c (mono_reflection_create_runtime_class): take the
22787         mono_domain_lock in this method. Prevents deadlocks
22788
22789 2005-06-22  Martin Baulig  <martin@ximian.com>
22790
22791         * loader.c (method_from_methodspec): Fix #75330.
22792
22793 2005-06-22  Martin Baulig  <martin@ximian.com>
22794
22795         * reflection.c (type_get_qualified_name): Use
22796         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
22797         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
22798         argument; use it if we don't have an assembly name.
22799
22800 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
22801
22802         * object.c: In mono_message_init, set "copy out" flag for in
22803         parameters with the [Out] flag.
22804
22805 2005-06-21  Martin Baulig  <martin@ximian.com>
22806
22807         * class.c
22808         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
22809         and MONO_TYPE_PTR.
22810
22811 2005-06-21  Martin Baulig  <martin@ximian.com>
22812
22813         * class.c (mono_class_init): Don't initialize `class->fields' for
22814         generic instances since they're initialized again in
22815         compute_field_layout(). 
22816         (compute_field_layout): Set the field's `generic_info' here; fix
22817         #75320. 
22818
22819 2005-06-21  Martin Baulig  <martin@ximian.com>
22820
22821         * class-internals.h
22822         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
22823
22824         * metadata.c (mono_metadata_generic_method_equal): Also
22825         distinguish the `generic_class'; fixes #75334.
22826
22827 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22828
22829         * domain.c:
22830         * appdomain.c:
22831         * domain-internals.h:
22832         * reflection.c: 'domain_assemblies' field is now protected by its own
22833         lock. Don't call into managed code to run the AssemblyLoad event if we
22834         now there are no registered delegates for it.
22835
22836 2005-06-20  Martin Baulig  <martin@ximian.com>
22837
22838         * class.c (mono_class_is_assignable_from): Use a custom version of
22839         mono_class_has_parent() to make things work for generic instances;
22840         fix #75300.
22841
22842 2005-06-20  Martin Baulig  <martin@ximian.com>
22843
22844         * loader.c (method_from_methodspec): Apply a patch from
22845         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
22846
22847 2005-06-20  Martin Baulig  <martin@ximian.com>
22848
22849         * class.c (mono_class_init): Reverted Zoltan's last change; it
22850         breaks generics.
22851
22852 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * threads.c (wait_for_tids_or_state_change): Add missing locking.
22855
22856 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22857
22858         * socket-io.c: fix the index in the socket array for writable/error
22859         sockets. Fixes bug #75306.
22860
22861 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
22862
22863         * class.c (mono_class_init): Allow interfaces to have static ctors.
22864
22865 2005-06-17  Martin Baulig  <martin@ximian.com>
22866
22867         * loader.c (method_from_methodspec): Use `context->container' when
22868         parsing the `gmethod->inst'.
22869
22870 2005-06-17  Martin Baulig  <martin@ximian.com>
22871
22872         * class.c (mono_type_get_name_recurse): Don't add the assembly
22873         name for type arguments.
22874
22875 2005-06-15  Martin Baulig  <martin@ximian.com>
22876
22877         * reflection.c (mono_image_get_inflated_method_token): Encode
22878         correct klass; fixes #75260.
22879
22880 2005-06-13 Michal Moskal <malekith@nemerle.org>
22881
22882         * icall.c: Make GetCorrespondingMethod/Constructor take
22883         MonoReflectionMethod method not MonoMethod. Removed
22884         MonoType.GetCorrespondingField, and make
22885         MonoGenericType.GetCorrespondingField take name not
22886         MonoClassField.
22887
22888 2005-06-13  Michal Moskal <malekith@nemerle.org>
22889
22890         * reflection.c (field_encode_signature, encode_locals):
22891          Make sizes of buffers for types larger (for big generic types).
22892          (create_generic_typespec,
22893          mono_reflection_sighelper_get_signature_local,
22894          mono_reflection_sighelper_get_signature_field):
22895          Add asserts for too small buffers.
22896
22897 2005-06-15  Martin Baulig  <martin@ximian.com>
22898
22899         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
22900         if our parent is not a dynamic type.
22901
22902 2005-06-15  Martin Baulig  <martin@ximian.com>
22903
22904         * class-internals.h (MonoTypeNameFormat): New enum.
22905
22906         * class.c
22907         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
22908         (mono_type_get_full_name): Removed.
22909         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
22910         argument instead of the boolean's.
22911
22912         * icall.c (ves_icall_System_MonoType_getFullName):
22913         Added `gboolean assembly_qualified'.    
22914
22915         * reflection.h
22916         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
22917
22918         * reflection.c (mono_reflection_parse_type): Parse the new type
22919         name format.
22920
22921 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22922
22923         * icall.c: no need to convert from utf16 to utf8 and then back again
22924         after the call to GetLogicalDrives.
22925
22926 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22927
22928         * icall.c: frombase64. Fix problems exposed by new tests.
22929
22930 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22931
22932         * icall.c: added internal calls for converting char [] and strings in
22933         base64 into byte [].
22934
22935 2005-06-10  Martin Baulig  <martin@ximian.com>
22936
22937         * class.c (mono_class_create_generic_2): Read the nested classes
22938         from the metadata rather than from `gklass->nested_classes' since
22939         `gklass' might not be initialized yet.
22940
22941 2005-06-09  Duncan Mak  <duncan@novell.com>
22942
22943         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
22944         all public headers. Fixes #74919.
22945
22946 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
22947
22948         * domain.c: The key for proxy_vtable_hash is now a pointer
22949         array. Added new GHashFunc and GCompareFunc functions for this.
22950
22951         * class.h: The list of interfaces in MonoRemoteClass is known in
22952         advance and can't grow (we create a new MonoRemoteClass if needed),
22953         so now the interface array can be allocated together with
22954         MonoRemoteClass.
22955         
22956         * object.c: Added a new method create_remote_class_key.
22957         Fixed mono_remote_class so it does not depend on
22958         mono_upgrade_remote_class.
22959         Removed extend_interface_array.
22960         Added new method clone_remote_class(), which makes a copy of a remote
22961         class and adds a new interface or class to it.
22962         mono_upgrade_remote_class() now creates a new remote class (or gets
22963         it from the cache) if an vtable upgrade is needed. In this way
22964         we make sure that other objects sharing the same remote class
22965         don't get the new vtable with unwanted interfaces.
22966         
22967         * object-internals.h:
22968         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
22969         
22970         * marshal.c: Track changes in mono_upgrade_remote_class().
22971
22972 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
22973         * icall.c: Add runtime methods for obtaining members of inflated
22974         class, which were created from supplied non-inflated members. It
22975         is used in internal Get{Method,Constructor,Field} methods in
22976         System.Type
22977
22978 2005-06-09  Martin Baulig  <martin@ximian.com>
22979
22980         * reflection.c
22981         (mono_reflection_bind_generic_method_parameters): Fix #75169.
22982
22983 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
22984         * reflection.c (mono_image_basic_init): Define
22985         Version in MonoDynamicAssembly. 
22986         
22987 2005-06-08  Martin Baulig  <martin@ximian.com>
22988
22989         Fix #75136.
22990
22991         * loader.c
22992         (mono_method_signature_full): New public method; takes a
22993         `MonoGenericContext *'.
22994         (find_method): Use mono_method_signature_full() and pass the
22995         klass'es context to it.
22996
22997         * class.c (mono_class_is_inflated_method): Use
22998         mono_method_signature_full() and pass the context to it.
22999
23000 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
23001
23002         * object.c: add proper locking in mono_remote_class_vtable(),
23003         fixes possible memory corruption.
23004
23005 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
23006
23007         * marshal.c (mono_remoting_marshal_init): set
23008         initialized after initialization.
23009
23010 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
23011
23012         * locales.c : hush.
23013
23014 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
23015
23016         * object.c (extend_interface_array): fix really silly
23017         memory corrupting / comparison bug.
23018
23019 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23020
23021         * reflection.c: Functions added to support the creation
23022         of CustomAttributeData, which includes Attribute data
23023         used by ReflectionOnly methods.
23024
23025         * reflection.h:  mono_reflection_get_custom_attrs_data and
23026          mono_custom_attrs_data_construct added (functions exposed).
23027
23028          * icall.c: Added mono_reflection_get_custom_attrs_data
23029          as icall.
23030         
23031 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
23032
23033         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
23034         lupus's request.
23035
23036 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
23037
23038         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
23039
23040         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
23041         dynamic DllImportAttribute.
23042
23043         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
23044         dynamic DllImportAttribute.
23045
23046         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
23047         Fixes #75162.
23048
23049 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23050
23051         * threads.c: avoid segfault when an unstarted thread is aborted.
23052
23053 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
23054
23055         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
23056         Returns the name and version of the runtime for reporting.
23057
23058 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23059
23060         * appdomain.c: bump corlib version.
23061         * object-internals.h: new field in MonoReflectionAssembly.
23062
23063 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23064
23065         * object-internals.h: Carlos forgot to add this field.
23066
23067 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
23068
23069         * icall.c: Added create_version to create instances
23070         of Version of MonoReflectionAssemblyName. This change helps
23071         the AssemblyName tests to keep running fine.
23072         
23073 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
23074   
23075         * object.c (mono_method_return_message_restore): A somehow less
23076         intrusive fix for #75138.
23077
23078 2005-06-03  Raja R Harinath  <rharinath@novell.com>
23079
23080         * object.c (mono_method_return_message_restore): Fix computation
23081         of expected number of out args.
23082
23083 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23084
23085         * reflection.c (mono_image_get_method_info): Fix the case when the
23086         charset is empty.
23087
23088 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
23089
23090         * object.c: Added missing null check in
23091           mono_method_return_message_restore.
23092
23093 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
23094
23095         * reflection.c (mono_image_get_method_info): Handle the case when
23096         dllentry is empty.
23097
23098 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
23099
23100         * object.c: When creating the vtable for a proxy, take into account
23101         all inherited interfaces, not only the ones registered in
23102         iclass->interfaces. This fixs bug #74996.
23103         Also, in mono_method_return_message_restore, verify that the array
23104         of out args has the expected lengh.
23105
23106 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23107
23108         * socket-io.c: update the timeout in Poll when the call is interrupte.
23109
23110 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23111
23112         * socket-io.c: support abort/suspend in Select_internal after last
23113         change.
23114
23115 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23116
23117         * threadpool.c: remove warning.
23118
23119 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23120
23121         * icall.c:
23122         * socket-io.[ch]: Select_internal uses poll() now when available, thus
23123         removing the 1024 limit from select(). Runtime part of the fix for
23124         bug #71203.
23125
23126 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23127
23128         * socket-io.c: when resolving the addresses for the same
23129         host returned by gethostname(), get the local IPs from the interface
23130         list. Loopback addresses are discarded if the are interfaces up with
23131         non-loopback ones. Fixes bug #63265.
23132
23133 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
23134
23135         * appdomain.c, verify.c, object-internals.h, reflection.c:
23136         bumped corlib number to 36, and added new extra_flags field
23137         to ReflectionMethodBuilder and friends.  Fixes #75060.
23138
23139 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
23140
23141         * gc.c: register a new weak link only if the object is non-null
23142         (fixes bug#75047).
23143
23144 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23145
23146         * culture-info.h : short time pattern too.
23147
23148 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
23149
23150         * culture-info.h : expand long time pattern string length.
23151
23152 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23153
23154         * culture-info-table.h : update (more French date format; #72788).
23155
23156 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
23157
23158         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
23159         the method is static. Fixes #75029.
23160
23161 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
23162
23163         * reflection.c: Update the table_idx field of method builders after
23164         saving the module, since it can change. This is a workaround for
23165         bug #74914. 
23166
23167 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
23168
23169         * culture-info-table.h : update (additional French date format).
23170
23171 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
23172
23173         * icall.c (ves_icall_type_Equals): Revert last change.
23174         
23175         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
23176
23177         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
23178
23179 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
23180
23181         * class-internals.h: Added executioncontext_class field to 
23182         MonoDefaults structure.
23183         * domain.c: Cache System.Threading.ExecutionContext class in 
23184         mono_defaults.
23185         * object.c: Capture the ExecutionContext for asynchroneous calls in
23186          mono_async_result_new.
23187         * object-internals.h: Added execution_context and original_context 
23188         fields to MonoAsyncResult. Added execution_context to MonoThread.
23189         * security-manager.c|.h: Added mono_get_context_capture_method to 
23190         return the capture method (if required by the security manager or by
23191         the framework version used).
23192         * threadpool.c: Apply capture (if present) ExecutionContext in 
23193         mono_async_invoke and revert to original context after it completes.
23194
23195 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
23196
23197         * culture-info-table.h : updated (real hacky solution for zh-CHT).
23198
23199 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
23200
23201         * culture-info-table.h : zh-CHT related workaround.
23202
23203 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23204
23205         * marshal.c (emit_marshal_custom): Add some error checking and call the
23206         methods in the ICustomMarshaler interface. Fixes #74875.
23207         
23208         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
23209         native->managed wrappers.
23210
23211 2005-05-12  Martin Baulig  <martin@ximian.com>
23212
23213         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
23214         here and use the loader lock.
23215
23216         * mono-debug.c: Properly lock when the debugger is not attached.
23217         (mono_debug_init): Release the initial lock if we're not running
23218         in the debugger.
23219
23220 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
23221
23222         * marshal.c (emit_marshal_custom): Pass through NULL values without
23223         calling the custom marshalling routines.
23224
23225         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
23226         conversion in structures. Fixes #74882.
23227
23228 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
23229
23230         * culture-info-table.h : zh-* cultures were missing.
23231
23232 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
23233
23234         * threads.c: Added a new event background_change_event which is signaled
23235         when a thread changes its background mode.
23236         Moved here several checks previously done in managed code. The checks
23237         require the thread lock, and using the thread lock in managed code
23238         can result in deadlocks.
23239         Merged Start_internal and Thread_internal into a single method. Now 
23240         Thread_internal does all work of creating and starting a thread.
23241         Added icalls for setting and getting the state of the object. Moved from
23242         managed code to avoid locking there.
23243         Added wait_for_tids_or_state_change() which is called instad of
23244         wait_for_tids when waiting for non-backround threads to end. This method
23245         will return if one of the threads ends or the background_change_event
23246         is signaled.
23247         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
23248         the background mode. This method signals the background_change_event
23249         event.
23250         * icall.c:
23251         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
23252         removed Start_internal.
23253         
23254 2005-05-11  Martin Baulig  <martin@ximian.com>
23255
23256         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
23257         to order of some fields to get proper alignment on 64-bit machines.
23258
23259 2005-05-11  Martin Baulig  <martin@ximian.com>
23260
23261         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
23262         changes as they're broken and completely fuck up the debugger.
23263
23264         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
23265
23266 2005-05-10  Martin Baulig  <martin@ximian.com>
23267
23268         * reflection.c (mono_reflection_generic_class_initialize): Don't
23269         call mono_class_setup_parent() here.
23270
23271 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23272
23273         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
23274         send/receive timeout use an integer in milliseconds. We were using a
23275         struct timeval.
23276
23277 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23278
23279         * locales.c:
23280         (internal_get_cultures): reserve the first slot of the array for the
23281         InvariantCulture, which will be filled in managed code.
23282
23283 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
23284
23285         * reflection.c (mono_image_fill_module_table): Initialize the
23286         GENERATION field as well.
23287
23288 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23289
23290         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
23291         Monitor.Enter on the object.
23292
23293 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
23294
23295         * threads.c: Enable the wait for running threads when exiting.
23296         * icall.c: Suspend all threads before exiting.
23297
23298 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
23299
23300         * assembly.c (mono_assembly_load_reference): Fix warning.
23301
23302 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23303
23304         * threadpool.c: changed the default number of threads per cpu. From now
23305         on, the default will be 20 + (5 * number of cpus) instead of 50.
23306
23307 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
23308
23309         * loader.c (mono_method_get_signature_full): Add locking here.
23310
23311 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
23312
23313         * appdomain.c: Moved methods for parsing and freeing assembly
23314         names to assembly.c.
23315         * assembly.c, domain-internals.h: Created public methods for parsing
23316         assembly names. Fixed mono_assembly_load_with_partial_name:
23317         it now finds the best match, taking into account the version,
23318         token and culture specified in the partial name. Also return
23319         the latest version if no version information is specified.
23320
23321 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
23322
23323         * threadpool.c: replace check for SocketAsyncCall class.
23324
23325 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23326
23327         * threadpool-internals.h:
23328         * Makefile.am: added threadpool-internals.h
23329
23330         * threadpool.c: call mono_unhandled_exception on exceptions not handled
23331         that happen in threadpool threads (tested on MS).
23332         (mono_thread_pool_remove_socket): new function that dispatch any pending
23333         AIO call on a socket that is closing. By now only epoll really needs it,
23334         as select/poll wake up when the socket closes.
23335
23336
23337         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
23338
23339 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
23340
23341         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
23342
23343 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
23344
23345         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
23346
23347 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
23348
23349         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
23350         has an abort request, convert it into a suspend request.
23351
23352 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
23353
23354         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
23355         warning for the usage of `UnmanagedFunctionPointerAttribute' which
23356         is not supported yet.
23357
23358 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23359
23360         * image.c: register assemblies loaded from data (bundles) in the loaded
23361         assemblies hash. Fixes bug #74772.
23362
23363 2005-04-29  Martin Baulig  <martin@ximian.com>
23364
23365         * class.c (mono_type_get_name_recurse): Update to the new naming
23366         schema from the latest .NET 2.x beta2.
23367         (mono_class_setup_vtable_general): If we're a generic instance,
23368         copy the vtable from our generic type definition and inflate all
23369         the methods in it.
23370
23371         * loader.c (find_method): Update to the new naming schema from the
23372         latest .NET 2.x beta2.
23373
23374 2005-04-29  Raja R Harinath  <harinath@gmail.com>
23375
23376         * class.c (mono_class_init): Add a mono_loader_unlock to the
23377         #74734 fix.
23378
23379 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
23380
23381         * icall.c (ves_icall_System_Environment_Exit): Remove the 
23382         suspend_all_other_threads () call for the time being, since it can hang.
23383
23384         * threads.c (mono_thread_manage): Similarly, disable the waiting for
23385         the background threads to exit, since it can also hang.
23386
23387         * class.c (mono_class_init): Applied patch from Ankit Jain 
23388         (radical@gmail.com). Avoid pending init errors when a field refers
23389         to a nested class using a typeref. Fixes #74734.
23390
23391         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
23392         this for dynamic modules.
23393
23394 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23395
23396         * threads.c: don't wait for threads that are in the process of aborting
23397         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
23398         and waiting for background threads to finish. This makes xsp and
23399         mod-mono-server exit without random length delays and/or hangs.
23400
23401 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23402
23403         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
23404
23405 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
23406
23407         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
23408         dynamic types to prevent infinite loops. Fixes #74727.
23409
23410         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
23411         ..._is_assignable_to.
23412
23413 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
23414
23415         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
23416
23417 2005-04-25  Martin Baulig  <martin@ximian.com>
23418
23419         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
23420
23421         * domain.c
23422         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
23423
23424         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
23425
23426         * reflection.c (build_compressed_metadata): Set metadata header
23427         version to 2.0.
23428
23429 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
23430
23431         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
23432         number into an integral and a decimal part. Fixes #70473.
23433
23434         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
23435
23436 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
23437
23438         * culture-info-table.h : reflected the latest locale-builder output.
23439
23440 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23441
23442         * threadpool.c: check for SuspendRequested too when deciding if
23443         mono_thread_interruption_checkpoint should be called.
23444
23445 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23446
23447         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
23448         * threads.c: remove interruption_mutex and use Interlocked instead. When
23449         suspending all the threads, wait for all the suspended events at once.
23450         If we're shutting down and get an APC that is going to be queued,
23451         call mono_thread_execute_interruption immediately, as the thread might
23452         be sleeping on a pthread condition or mutex.
23453
23454         * icall.c: call mono_runtime_set_shutting_down before suspending the
23455         threads.
23456
23457         Fixes bug #74693. And now xsp is happier when exiting.
23458
23459 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
23460
23461         * loader.c (mono_stack_walk): Fix #74690.
23462
23463 2005-04-22  Martin Baulig  <martin@ximian.com>
23464
23465         * mono-debug.h (MonoDebugMethodJitInfo): Added
23466         `MonoDebugMethodJitInfo *jit'.
23467
23468         * mono-debug.c (mono_debug_read_method): Cache the
23469         MonoDebugMethodJitInfo in `address->jit'.
23470         (mono_debug_free_method_jit_info): New public method.
23471
23472 2005-04-22  Martin Baulig  <martin@ximian.com>
23473
23474         * class.c (mono_class_is_assignable_from): Disallow
23475         type parameter -> interface.
23476
23477 2005-04-21  Dick Porter  <dick@ximian.com>
23478
23479         * threads.c (mono_thread_create): Turn an assertion into an error.
23480
23481 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
23484         
23485         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
23486         Fix some gcc 4.0 warnings.
23487
23488 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
23489
23490         * file-io.c: fix alt dir separator char on unix systems
23491         and cleanup (fixes bug #71214).
23492
23493 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
23494
23495         * marshal.c: Use CALLVIRT instead of CALL when dispatching
23496         a call to a remote domain, since the method may be an
23497         interface method in the client domain. This fixes bug #74192.
23498
23499 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23500
23501         * threadpool.c: recv/send are now performed before going back to managed
23502         code to save one transition.
23503
23504 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23505
23506         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
23507
23508         * metadata/threadpool.c: removed hack to workaround the bug above.
23509
23510         Fixes bug #74618.
23511
23512 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
23513
23514         * reflection.c reflection.h: Fix handling of parameter defaults in
23515         dynamic methods. Also fixes handling of parameter attributes.
23516         Fixes #74609.
23517
23518         * mono-debug.c (mono_debug_close_image): Fix warning.
23519
23520 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23521
23522         * socket-io.h: replaced old unused field with new 'blocking'.
23523         * threadpool.c: restore socket blocking state on windows(tm).
23524
23525 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
23526
23527         * icall.c: don't return the codebase in the AssemblyName[] returned by
23528         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
23529         * object-internals.h: Removed FIXME (fields were presents) and fixed
23530         versioncompat declaration.
23531
23532 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23533
23534         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
23535         not closed, so don't cleanup when it happens.
23536
23537 2005-04-13  Chris Toshok  <toshok@ximian.com>
23538
23539         * mono-debug-debugger.h: change prototype for
23540         mono_debugger_lookup_type.
23541
23542         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
23543         this function, although it should probably be named
23544         mono_debugger_init_type.
23545
23546 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23547
23548         * threadpool.c: fix non-AIO case.
23549
23550 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
23551
23552         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
23553         the built-in profiler to measure just JIT compilation times.
23554
23555 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23556
23557         * threadpool.c: the epollfd might be closed by another thread at
23558         any time, so ignore EBADF at treat it as a "we're closing" sign.
23559
23560 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23561
23562         * threadpool.c: release the semaphores with a count equals to the number
23563         of working threads in both IO and regular pools. Fixed typo that messed
23564         up the count of IO pool threads. Don't initialize the pipe handles if
23565         we're using epoll.
23566
23567 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23568
23569         * threadpool.c: some systems don't like a NULL when deleting the socket
23570         from epoll.
23571
23572 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23573
23574         * threadpool.c: fix semaphore allocation.
23575
23576 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23577
23578         * threadpool.c: added epoll() based implementation for asynchronous IO
23579         that is used instead of the default poll() when available.
23580         It can be disabled by setting MONO_DISABLE_AIO.
23581
23582 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23583
23584         * threadpool.c: windows needs 'closesocket' and instead of returning
23585         0 when the stream is closed while in select, it returns -1. Fixes bug
23586         #74573.
23587
23588 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
23589
23590         * class.c (class_compute_field_layout): Fix the regression caused by
23591         the previous try.
23592
23593 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23594
23595         * threadpool.c: separate pool for socket async. IO.
23596         * threadpool.h: mono_max_worker_threads is not a global any more.
23597
23598 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
23599
23600         * class.c (class_compute_field_layout): Fix #74549.
23601
23602 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23603
23604         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
23605         use 2 connected sockets instead.
23606
23607 2005-04-08  Miguel de Icaza  <miguel@novell.com>
23608
23609         * mono-config.c: Add new entry point for mkbundle
23610         mono_config_parse_memory. 
23611
23612 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23613
23614         * threadpool.c: removed another unused function.
23615
23616 2005-04-08  Ankit Jain  <radical@corewars.org>
23617
23618         * reflection.c (get_default_param_value_blobs): Add 'types'
23619         parameter to get the types encoded in the constant table.
23620         (mono_param_get_objects): Use the type from the constant table,
23621         not the type of the parameter, when creating default values.
23622         Handle null default values correctly.
23623
23624 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23625
23626         * file-io.c:
23627         * file-io.h:
23628         * threadpool.c:
23629         * threadpool.h:
23630         * icall.c:
23631         * socket-io.c: removed dead code for async IO.
23632
23633 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23634
23635         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
23636
23637         * threadpool.c: intercept socket async. calls and pass them to a thread
23638         that is polling and dispatching the job items to the threadpool as
23639         socket become ready. Fixes bugs #71217, #71933.
23640
23641         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
23642         between char and short/ushort arrays.
23643
23644         * socket-io.c: remove dead code.
23645
23646 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23647
23648         * locales.c,
23649           icall.c : removed InternalToUpper_Comp() and
23650           InternalToLower_Comp().
23651
23652 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
23653
23654         * char-conversions.h : The tables were incorrectly generated. Should
23655           be generated against invariant culture.
23656
23657 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
23658
23659         * object.c (mono_runtime_invoke_array): Fix return value when 
23660         passing pre-created valuetype objects to ctors.
23661
23662         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
23663         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
23664         Fixes #74338.
23665
23666 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
23667
23668         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
23669         only used with --security and hides the wrong corlib version error.
23670
23671 2005-03-30  Joshua Tauberer  <tauberer@for.net>
23672
23673         * class.c: Changed mono_class_name_from_token so that types
23674         outside of a namespace don't have an initial period.  Improved
23675         the g_warning message used in _mono_class_get when loading
23676         fails.
23677         * assembly.c: In mono_assembly_load_reference, when an assembly
23678         can't be found, "No such file or directory" is misleading and
23679         unhelpful because a few paths were checked for the presence of
23680         the assembly.  When that happens (ENOENT), display a nicer
23681         message indicating the directories that were searched.  In all
23682         cases, the warning is made easier to read for non-hackers.
23683
23684 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
23685
23686         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
23687         project/solution.
23688         * appdomain.h|domain.c: Removed inline from functions.
23689         * appdomain.c: Reduced warnings when compiling on windows.
23690         * icall.c: Fixed output_debug declaration to gunichar2*.
23691         * mono-config.c: Reduced warnings when compiling on windows.
23692         * rand.c: Added missing "windows.h". Added missing return value.
23693         * rawbuffer.c: Added missing winsock2.h for windows.
23694         * sysmath.h: Added mono-compiler.h header to allow/ease 
23695         compilation with non-GCC compilers.
23696         * threads.c: Fixed declarations to compile with VS.NET C compiler.
23697         Removed cast warnings.
23698
23699         Adapted from the work of J Lothian (for VC6).
23700
23701 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
23702
23703         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
23704         from default_path.
23705
23706 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
23707
23708         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
23709         the 2.0 profile.
23710
23711 2005-03-27  Raja R Harinath  <harinath@gmail.com>
23712
23713         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
23714         has to be in $(exec_prefix).  $(prefix) is for arch-independent
23715         stuff, and it would probably use $(prefix)/share rather than
23716         $(prefix)/lib.
23717
23718 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23719
23720         * console-io.c: added 2 includes that might be missing.
23721
23722 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
23723
23724         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
23725         profile.
23726
23727         * reflection.c (create_custom_attr): Allocate the params array using
23728         alloca so it gets GC tracking.
23729
23730 2005-03-23  Chris Toshok  <toshok@ximian.com>
23731
23732         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
23733         out some spew.
23734
23735 2005-03-24  Raja R Harinath  <rharinath@novell.com>
23736
23737         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
23738         changes to pick up any changes in prefix, etc.
23739
23740 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23741
23742         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
23743         
23744         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
23745         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
23746
23747 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
23748
23749         * class-internals.h object-internals.h class.c reflection.c: Extend the
23750         mono_lookup_dynamic_token () function to return the class of the
23751         token as well. 
23752
23753         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
23754         well. Fixes #73848.
23755
23756 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
23757
23758         * security-manager.c: Skip inheritance checks for intra-corlib
23759         class inheritance and method overrides. This skips a lot of checks
23760         and (anyway) permissions cannot work until corlib is loaded.
23761
23762 2005-03-23  Martin Baulig  <martin@ximian.com>
23763
23764         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
23765         MONO_TYPE_GENERICINST.  
23766
23767 2005-03-23  Martin Baulig  <martin@ximian.com>
23768
23769         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
23770
23771 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
23772
23773         * class.c: added locking comments to some functions.
23774         Cache the interface offsets arrays (saves about 20 KB
23775         of runtime memory in a typical app).
23776         Reduce the time overhead in mono_class_setup_supertypes ().
23777
23778 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
23779
23780         * icall.c: speedup and fix leaks in GetMethodsByName and
23781         GetPropertiesByName.
23782
23783 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
23784
23785         * reflection.c: some locking fixes.
23786
23787 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
23788
23789         * metadata.c: added missing break in case statement.
23790
23791 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
23792
23793         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
23794         typedbyref return values. Fixes #73941.
23795
23796 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
23797
23798         * security-manager.c|h: Added demandunmanaged method and 
23799         suppressunmanagedcodesecurity class to MonoSecurityManager.
23800         Renamed aptc class to allowpartiallytrustedcallers.
23801
23802 2005-03-17  Martin Baulig  <martin@ximian.com>
23803
23804         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
23805
23806 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23807
23808         * file-io.c: disabled file async. IO using aio_*. It uses the
23809         threadpool now. Workaround for bug #73718.
23810
23811 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
23812
23813         * assembly.h, mono-config.c: added code to deal with bundled configs
23814         for bundled assemblies.
23815
23816 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
23817
23818         * *.c, private.h: cleanup, removing old private.h header file.
23819
23820 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
23821
23822         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
23823         and throw_on_unmappable_char attributes.
23824
23825 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
23826
23827         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
23828         _ProcessName_internal.
23829
23830 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
23833         #73631.
23834
23835         * icall.c threads.c threads-types.h: Remove slothash icalls as they
23836         are no longer used.
23837
23838 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
23839
23840         * object.c (compute_class_bitmap): Add support for generics. Fixes
23841         #73527.
23842
23843 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23844
23845         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
23846
23847 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23848
23849         * filewatcher.c: commented out the code for windows watcher, as we don't
23850         use it (we use the managed implementation instead).
23851
23852 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
23853
23854         * object-internals.h (MonoThread): Remove 'unused1' field.
23855
23856         * appdomain.c: Bump corlib version.
23857
23858         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
23859
23860         * reflection.c (mono_reflection_create_runtime_class): Remove the
23861         AssemblyBuilder.Save optimization since it causes too many problems.
23862
23863 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
23864
23865         * exception.c|h: Added mono_get_exception_reflection_type_load to
23866         create a ReflectionTypeLoadException object.
23867         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
23868         to return NULL is a InheritanceDemand fails during reflection. Updated
23869         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
23870         ReflectionTypeLoadException if an InheritanceDemand fails during 
23871         reflection. Added icall mapping for GetLinkDemandSecurity.
23872         * security-manager.c|h: Added ves_icall_System_Security_
23873         SecurityManager_GetLinkDemandSecurity internal call to return the
23874         class and methods permissions set for a LinkDemand. Removed unused
23875         fields in MonoSecurityManager.
23876
23877 2005-03-10  Martin Baulig  <martin@ximian.com>
23878
23879         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
23880         it's a generic instance.
23881
23882 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
23883
23884         * reflection.c (mono_get_object_from_blob): Applied patch from
23885         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
23886
23887         * class.c (mono_class_is_assignable_from): Another try at fixing 
23888         #73469 without breaking anything.
23889
23890 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
23891
23892         * class.c: (mono_class_is_assignable_from): Revert the last changes
23893         since they don't work with generics.
23894         
23895         * class.c (mono_class_is_assignable_from): Fix build bustage.
23896
23897         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
23898         the managed IsAssignableFrom method. Fixes #73469.
23899
23900         * reflection.c (mono_reflection_call_is_assignable_from): New helper
23901         function.
23902
23903 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * object.c (mono_load_remote_field_new): Fix returning uninitialized
23906         memory when the remoting callback does not sets the out arguments.
23907         Fixes #73007.
23908
23909         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
23910         by mistake.
23911
23912         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
23913
23914         * object-internals.h (MonoStackFrame): Sync with managed object layout.
23915
23916         * appdomain.c: Bump corlib version.
23917
23918 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
23919
23920         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
23921         function.
23922
23923         * threads.c (mono_thread_attach): Detect threads which are not started
23924         by the GC pthread wrappers.
23925
23926 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
23927
23928         * icall.c: Added new icall for RNG.
23929         * rand.c|h: Added new icall to open the RNG. This allows to share a 
23930         single handle on Linux to access /dev/urandom and fix #73183.
23931
23932 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
23933
23934         * object.c: setting the new vtable in a transparent proxy object must
23935         not change the GC descriptor.
23936
23937 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
23938
23939         * object.c: fixed compilation without GCJ support.
23940         * reflection.c: for runtime-created types ensure klass->has_references
23941         is correct (bug #73215).
23942
23943 2005-03-02  Martin Baulig  <martin@ximian.com>
23944
23945         * class.c (mono_class_is_assignable_from): Make this work if
23946         `oklass' is a generic instance; fixes #72831.
23947
23948 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23949
23950         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
23951         with hasthis set.
23952         
23953         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
23954
23955         * marshal.c: Reorganize native->managed marshalling code to also use
23956         the emit_marshal_... functions.
23957
23958 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23959
23960         * object.c: typed allocs have issues with bitmap sizes > 30,
23961         so check for max_set >= 30.
23962
23963 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
23964
23965         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
23966         managed code. Fixes #73012.
23967
23968         * metadata.h (MonoMarshalSpec): Add elem_mult field.
23969
23970         * metadata.c reflection.c: Load/Emit elem_mult as well.
23971         
23972         * metadata.h (MonoMarshalSpec): Add comment.
23973
23974         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
23975
23976         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
23977         num_elem to -1 if not given.
23978
23979         * object-internals.h (MonoReflectionMarshal): Add has_size field.
23980
23981         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
23982         given values.
23983
23984 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
23985
23986         * null-gc.c (mono_gc_free_fixed): Was not compilable.
23987
23988 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
23989
23990         * reflection.c (encode_marshal_blob): Encode param_num field as well.
23991
23992         * object-internals.h (MonoReflectionMarshal): Add param_num field.
23993
23994 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
23995
23996         * object.c: generalized the reference bitmap creation
23997         and added hooks for the new GC.
23998         * class-internals.c: removed the gc_bitmap field from MonoClass.
23999
24000 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24001
24002         * domain.c: help the compiler to produce better code
24003         in mono_jit_info_table_find ().
24004
24005 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24006
24007         * object.c: make all allocations look typed.
24008
24009 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24010
24011         * socket-io.c: load Mono.Posix if it's not loaded already
24012         (fixes bug#73033).
24013
24014 2005-02-24  Martin Baulig  <martin@ximian.com>
24015
24016         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
24017         * reflection.c (dup_type): Likewise.
24018
24019 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
24020
24021         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
24022         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
24023
24024 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24025
24026         * domain.c, threads.c, object-internals.h: make the critical thread
24027         local vars use the fast access mode (even when we're compiled in
24028         a lib). Provide accessors to be used by the jit during codegen.
24029
24030 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
24031
24032         * appdomain.c: Changed hook functios behavior to include
24033         support for the reflection only assemblies. Some icalls were changed
24034         to support the mentioned assemblies too. Signatures of static methods
24035         try_assembly_resolve and real_load now have an additional parameter:
24036         refonly.
24037
24038         * assembly.c: General changes to mono_assembly_ methods to support
24039         reflection only api. Functions mono_assembly_open, mono_assembly_load,
24040         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
24041         suffix, to support an additional gbool parameter to specify whether
24042         the assembli is reflection only or not. Created some new hook functions 
24043         to add support for reflection only assemblies. Signatures of static 
24044         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
24045         have now an additional parameter: refonly.
24046
24047         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
24048         indicating whether the assembly is reflection only or not.
24049
24050         * exception.c: Add mono_get_exception_invalid_operation.
24051
24052         * icall.c: Throw an InvalidOperationException when trying to invoke
24053         a property/method/event, or trying to set/get the value of a field.
24054         Also add an icall to retrieve the ref_only flag to the
24055         MonoReflectionAssembly.
24056
24057 2005-02-23  Chris Toshok  <toshok@ximian.com>
24058
24059         Part of fix for #72827.
24060         * mono-debug.c (mono_debug_add_method): add lexical block data to
24061         the info we write.  Kind of a hack at the moment - we copy the
24062         lexical block info from the MonoDebugMethodInfo to the
24063         MonoDebugMethodJitInfo here, before writing it.
24064         (mono_debug_read_method): read the lexical block info.
24065
24066         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
24067
24068         * debug-mono-symfile.h: add lexical block support.
24069
24070         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
24071         support.
24072
24073 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24074
24075         * loader.c (mono_lookup_pinvoke_call): Fix warning.
24076
24077         * object.c (mono_runtime_free_method): Call mono_free_method () and
24078         put the TODOs there.
24079
24080         * loader.c (mono_free_method): Free up most memory allocated for 
24081         dynamic methods.
24082
24083 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
24084
24085         * reflection.c: properly flag a Type argument to a
24086         named custom attr value (bug #72248).
24087
24088 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24089
24090         * reflection.c: reduce code duplication in named custom
24091         attribute encoding.
24092
24093 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
24094
24095         * reflection.c: properly encode custom attrs of type object
24096         (bug #72649).
24097
24098 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
24099
24100         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
24101
24102 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
24103
24104         * socket-io.c: load System.dll if it's not loaded already
24105         (bug #72850 and #70477).
24106
24107 2005-02-21  Martin Baulig  <martin@ximian.com>
24108
24109         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
24110         generic instances.
24111
24112 2005-02-21  Martin Baulig  <martin@ximian.com>
24113
24114         * reflection.c (mono_image_build_metadata): We also need to
24115         "fixup" the MethodImpl table after we computed the final method
24116         indices.  Call fixup_methodimpl() to do that.
24117         (fixup_methodimpl): New private method.
24118
24119 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
24120
24121         * assembly.c: special case mscorlib.dll (bug#72536),
24122         patch from Carlos Alberto Cortez.
24123
24124 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
24125
24126         * threads-types.h threads.c: Fix build bustage.
24127
24128         * threads.c: Use a union for long<->double conversions.
24129
24130         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
24131         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
24132
24133         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
24134         containing the checkpoint call with NOT_TAKEN.
24135         
24136         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
24137         checkpoint before pushing the arguments, so they won't have to be
24138         spilled to stack.
24139
24140 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24141
24142         * domain.c, assembly.c, domain-internals.h: make some data
24143         const and relocation-free.
24144
24145 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
24146
24147         * object.c, appdomain.c, class-internals.h: introduce the
24148         MonoClassRuntimeInfo structure to hold the info needed to
24149         use a class at runtime. Made mono_class_vtable() lock-free
24150         for all the appdomains.
24151
24152 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
24153
24154         * metadata-internals.h, image.c: introduce a per-image mempool to
24155         be used for memory that has the same lifetime as the image.
24156
24157 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
24158
24159         * domain.c: In mono_init_internal(), instead of selecting the first
24160         runtime version supported by an executable, get a list of all
24161         supported versions and select the one for which an mscorlib exists
24162         (since even if the runtime supports a given version, it doesn't mean
24163         that the framework for that version is installed).
24164         Modified get_runtimes_from_exe to support this behavior.
24165         In supported_runtimes, added information about additional system
24166         assembly versions.
24167         
24168         * assembly.c: Added support for more than one system assembly version
24169         per runtime version. Updated the assembly list.
24170         In mono_assembly_remap_version, removed the initial version check,
24171         since we don't know to which version we need to compare until we
24172         get the version set on which the assembly is based.
24173         Moved the code for loading corlib into the new method
24174         mono_assembly_load_corlib(), so it can be used by the initialization
24175         code.
24176         
24177         * domain-internals.h: Updated data structures and added declaration
24178         for mono_assembly_load_corlib.
24179
24180 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24181
24182         * reflection.c (resolve_object): Fix the creation of the signature in 
24183         the SignatureHelper case.
24184
24185         * assembly.c (mono_assembly_remap_version): Fix binary search.
24186         
24187 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
24188  
24189         * class.c: Added inheritance check when a method is overloaded (from a
24190         virtual method or when implementing an interface) and when a class is
24191         inherited. Added functions to set a failure for a class and to 
24192         retreive the exception from a failure.
24193         * class-internals.h: Added fields to MonoClass to keep the exception
24194         information status for inheritance (or other exceptions) to be thrown
24195         later (i.e. not at load time).
24196         * object.c: Throw the inheritance SecurityException when a type is to 
24197         be created with either class or method inheritance violations.
24198         * reflection.c|h: Fix when getting declsec from a class. Removed 
24199         unrequired code for class. Improved sanity in parameter naming.
24200         * security-manager.c|h: Added functions to check for class and method
24201         inheritance.
24202
24203 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
24204
24205         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
24206         and has_finalize in dynamic types as well.
24207
24208 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
24209
24210         * culture-info-table.h : fixed currency format for en-GB (and so on).
24211
24212 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
24213
24214         * gc.c: ensure the GC handles never have 0 as a value.
24215
24216 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
24219         a pointer to a struct to unmanaged code. Fixes #72625.
24220
24221 2005-02-16  Martin Baulig  <martin@ximian.com>
24222
24223         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
24224
24225 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
24226
24227         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
24228
24229 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24230
24231         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
24232
24233         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
24234         UnmanagedFunctionPointerAttribute, use it for determining calling convention
24235         etc. Fixes #71471.
24236
24237         * reflection.c (mono_custom_attrs_get_attr): New helper function.
24238
24239         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
24240
24241 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
24242
24243         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
24244         changes to make the current context a field in MonoThread.
24245
24246 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
24247
24248         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
24249         the last change.
24250         
24251         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
24252         extracted from mono_marshal_get_native_wrapper.
24253
24254         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
24255         to create wrappers around native functions.
24256
24257         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
24258         delegates for arbitrary function pointers. Fixes #71472.
24259
24260 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24261
24262         * threads.c: cleaned up the code a little.
24263
24264 2005-02-15  Martin Baulig  <martin@ximian.com>
24265
24266         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
24267         the data table.
24268
24269         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
24270         allocate larger chunks if needed.
24271
24272 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24273
24274         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
24275         in by mistake.
24276
24277 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
24278
24279         * domain.c: keep the domains in an array and ensure the domain ids
24280         are kept small, so they can be used as indexes to domain-specific data
24281         with a small memory overhead.
24282
24283 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
24284
24285         * icall.c: Handle byref types in Type icalls. Fixes #72544.
24286
24287 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
24288
24289         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
24290
24291 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
24292
24293         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
24294
24295         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
24296         values.
24297
24298         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
24299         
24300 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
24301
24302         * domain-internals.h: add the hashtable here.
24303
24304         * class-internals.h: Remove `info' from MonoMethod
24305
24306         * domain.c: Add a new hashtable, jit_trampoline_hash
24307
24308 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24309
24310         * object.c: don't set the value of static fields
24311         (fixes bug#72494).
24312
24313 2005-02-11  Martin Baulig  <martin@ximian.com>
24314
24315         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
24316         (mono_debug_add_method): Silently ignore the method if it's too big.
24317         (mono_debug_add_type): Likewise.
24318
24319 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
24320
24321         * threads.c, appdomain.c: remove #ifdefs from the code.
24322
24323 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
24324
24325         * metadata-internals.h: Added flags to MonoAssembly to cache the most
24326         common security informations. This allows us to stay in unmanaged code
24327         when doing LinkDemand and it's special cases (except for the first 
24328         time for initialization). The flags a very much used with --security.
24329         * reflection.c|h: Added code to get declarative security attributes 
24330         for LinkDemand and InheritanceDemand. This required to refactor the
24331         existing code for Demand.
24332         * security-manager.c|h: Added new method fields for the special cases
24333         of LinkDemand.
24334
24335 2005-02-10  Martin Baulig  <martin@ximian.com>
24336
24337         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
24338         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
24339
24340 2005-02-10  Martin Baulig  <martin@ximian.com>
24341
24342         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
24343         debugging code; this is almost a complete rewrite.
24344
24345         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
24346
24347 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24348
24349         * domain.c, object.h: expose mono_string_equal () and 
24350         mono_string_hash ().
24351         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
24352         it's implemented in managed code.
24353
24354 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24355
24356         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
24357         lo leak objects between appdomains.
24358
24359 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24360
24361         * assembly.c: old compilers compilation fix from 
24362         robertj@gmx.net (Robert Jordan).
24363
24364 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
24365
24366         * class-internals.h: Little reminder for the future.
24367
24368         * debug-helpers.c: Fix up wrapper_type_names
24369
24370 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24371
24372         * image.c, metadata-internals.h: when loading an image from a file,
24373         mmap all of it and use the same codepaths as when using a
24374         in-memory image: the code is simpler and we use less memory
24375         (both writable and readonly).
24376
24377 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24378
24379         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
24380         API to alloc runtime data structures that need to be tracked by the
24381         GC and contain pointers.
24382         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
24383         make the code more readable and eventually use a different GC.
24384
24385 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
24386
24387         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
24388         for out arguments.
24389         
24390 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
24391
24392         * object.c: In release_type_locks(), don't release the cctor lock
24393         if it has already been released. This fixes a crash in the
24394         thread5 test.
24395
24396 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
24397
24398         * gc.c, marshal.c, icall.c: register a delegate for finalization
24399         only when the native function pointer has been allocated for it.
24400
24401 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24402
24403         * object.c: cleaned up some code, allocate objects that are
24404         pointer free with the atomic malloc variant. Allocate memory
24405         for static data from the mempool if it's pointer-free.
24406         Allocate the bounds array at the end of the array data, when needed.
24407         * object-internals.h, object.h: move a private function in a private
24408         header.
24409         * class.c: handle missing case in tracking references in fields.
24410
24411 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
24412
24413         * class.c, class-internals.h: keep track if a type has
24414         reference fields in either the instance or static fields.
24415
24416 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
24417
24418         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
24419         and renamed to MonoRuntimeInfo. Added fields to store the expected
24420         framework assembly version. Changed mono_get_framework_version and
24421         mono_get_runtime_version for a single mono_get_runtime_info method.
24422         
24423         * assembly.c: Added method to remap system assembly versions to the
24424         current executing runtime version. Removed old mapping code.
24425         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
24426         
24427         * icall.c, reflection.c: Track api changes.
24428
24429 2005-02-06  Miguel de Icaza  <miguel@novell.com>
24430
24431         * loader.c (method_from_memberref): Improve error reporting,
24432         produce the class name instead of the typeref/typedef index. 
24433
24434 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
24435
24436         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
24437
24438 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24439
24440         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
24441         stdcall and charset name mangling.  Reorganize the code and add
24442         some tracing stuff.
24443
24444 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24445
24446         * monodiet.c: More iters!
24447
24448         * marshal.c: Iter usage.
24449
24450         * icall.c: Iter usage.
24451
24452         * object.c: Use iters.
24453
24454         * debug-helpers.c: More iters
24455
24456 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24457
24458         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
24459         under win32.
24460
24461 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
24462
24463         * mono-debug-debugger.c: use iters
24464
24465         * class.c, class-internals.h: mono_class_setup_events is static
24466         now
24467
24468         * All callers: use iters
24469
24470 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
24471
24472         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
24473         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
24474
24475 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24476
24477         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
24478
24479         * marshal.h: Add prototypes for ldfld/stfld_remote.
24480
24481         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
24482         this is called during startup.
24483         
24484 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
24485
24486         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
24487         MonoThreadsSync struct private in monitor.c. Changed the way
24488         MonoThreadsSync is allocated so it's faster and there is no
24489         need to keep track of it with a finalizer and it uses less memory.
24490         This also finally allows us to allocate mono objects as ptrfree when
24491         there are no reference fields.
24492
24493 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
24494
24495         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
24496         disappearing link to the GC interface and use them to simplify
24497         the gchandles code.
24498
24499 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
24500
24501         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
24502         stfld_remote which call mono_load/store_field_new. This allows methods
24503         calling ldfld/stfld wrappers to be AOTed.
24504
24505         * console-io.c: Include sys/filio.h under solaris.
24506         
24507         * console-io.c: Include curses.h if needed correctly.
24508
24509 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24510         
24511         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
24512         method->klass as well.
24513
24514         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
24515
24516         * class.c (mono_class_init): Switch on lazy initialization of 
24517         methods.
24518
24519         * class.c (mono_class_get_finalizer): Handle the case when the 
24520         finalizer is inherited.
24521
24522 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24523
24524         * console-io.c: <curses.h> is needed by term.h on solaris.
24525
24526 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
24527
24528         * icall.c, class-internals.h, monodiet.c, class.c: Remove
24529         mono_class_setup_properties where possible. Remove this ftn from
24530         the header file, and make it static.
24531
24532 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
24533
24534         * loader.c: Add missing setup_... call.
24535
24536         * class.c: Add missing setup_... calls.
24537
24538         * class.c (mono_class_init): Switch on lazy initialization of 
24539         the generic vtable.
24540         
24541         * class.c (mono_class_init): Fix generics broken by the recent changes.
24542
24543         * monodiet.c (handle_type): Add missing setup_... calls.
24544
24545         * class.c: Back out garbage in previous patch.
24546         
24547         * class.c: Add missing setup_... calls.
24548
24549         * class.c (mono_class_get_method_from_name_flags): Avoid calling
24550         mono_class_setup_methods () if possible.
24551
24552         * class-internals.h (MonoClass): Add 'has_cctor' flag.
24553
24554         * class-internals.h (MonoCachedClassInfo): New structure.
24555
24556         * class.c: Initialize properties and events fields of MonoClass lazily.
24557
24558         * class.c: Add infrastructure for lazily initializing the methods and
24559         vtable fields of MonoClass. Not yet used.
24560
24561         * class.c (mono_class_get_finalizer): New helper function.
24562
24563         * class.c: Add infrastructure for loading some class related data from
24564         an AOT file.
24565
24566         * object.c: Add infrastructure for initializing the vtable from data
24567         in the AOT file.
24568
24569         * gc.c (run_finalize): Use mono_class_get_finalizer ().
24570
24571         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
24572         appropriate initialization function before accessing parts of the
24573         MonoClass structure.
24574
24575         * marshal.c: Fix warnings.
24576         
24577         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
24578
24579         * mono-debug-debugger.c (get_exception_message): Use 
24580         mono_class_get_method_from_name_flags ().
24581
24582 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
24583
24584         * reflection.c, appdomain.c: Replace a few manual searches that
24585         Zoltan missed. (Paolo approved this part of my initial patch).
24586
24587 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
24588
24589         * profiler.c: disable recording statistical events at report time.
24590
24591 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24592
24593         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
24594         to byteswap arrays of enum values, too (bug #72080).
24595
24596 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
24597
24598         * appdomain.c (set_domain_search_path): Allow this to be called if
24599         domain->setup is not yet set.
24600
24601         * loader.c (mono_method_get_index): New helper function.
24602
24603         * loader.c reflection.c: Use mono_method_get_index ().
24604
24605         * class.c (mono_class_get_method_from_name_flags): New helper method.
24606
24607         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
24608         this.
24609
24610         * class.c (mono_class_get_cctor): New helper method.
24611
24612         * string-icalls.c object.c class.c marshal.c reflection.c: Use
24613         mono_class_get_method () to look up methods.
24614
24615 2005-02-01  Miguel de Icaza  <miguel@novell.com>
24616
24617         * console-io.c: Fix the build, this should work on Windows.
24618
24619 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
24620
24621         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
24622         be set to null to keep things valid
24623
24624 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24625
24626         * icall.c: added Console 2.0 icalls.
24627         * Makefile.am: added console-io.[ch]
24628         * console-io.[ch]: internal calls for Console 2.0 API.
24629
24630 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24631
24632         * class.c: make sure we consider all the interfaces
24633         when calculating max_interface_id (bug found by
24634         Jeroen Frijters running ikvm).
24635
24636 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
24637
24638         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
24639         valuetype fields to null.
24640
24641         * object.c (set_value): Ditto. Fixes #71669.    
24642
24643 2005-01-31  Martin Baulig  <martin@ximian.com>
24644
24645         * metadata.c (mono_metadata_has_generic_params): New public
24646         function; checks whether something is a generic method.
24647
24648 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
24649
24650         * appdomain.c: fix infinite recursion when adding assemblies.
24651
24652 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
24653
24654         * object.c: Fix small typo to return all items for Environment.
24655         GetCommandLineArgs.
24656
24657 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
24658
24659         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
24660         reflection.c: more domain and assembly-unload related fixes
24661         and memory leaks plugs.
24662
24663 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
24664
24665         * 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.
24666
24667 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
24668
24669         * loader.c (mono_method_signature): Make this method lazy
24670         (mono_get_method_from_token): Don't computate the signature here.
24671
24672         Doing this saves quite a bit of memory. I got 90 kb on starting up
24673         monodoc. It should also save some disk reads on startup.
24674
24675         * *: MonoMethod->signature might be NULL now. You *MUST* use
24676         mono_method_signature.
24677
24678 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
24679
24680         * object.c (mono_runtime_get_main_args): Return an array from the
24681         current domain here. Fixes #71938.
24682
24683 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
24684
24685         * monitor.c: formatting changes to comply with the
24686         mono coding style and remove #ifdefs from the code.
24687
24688 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24689
24690         * metadata.c, private.h: remove some unneeded data
24691         and use a more compact representation for table schemas.
24692
24693 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
24694
24695         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
24696         to get a better distribution in hash tables.
24697         * *.c: use mono_aligned_addr_hash() where appropriate.
24698         * assembly.c: make var static.
24699
24700 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
24701
24702         * domain-internals.h: Put MonoJitInfo on a diet.
24703
24704         * domain.c: Fix a warning.
24705
24706 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24707
24708         * gc.c: rework the gc handles code to reuse handles
24709         when freed.
24710
24711 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
24712
24713         * domain.c: fixed long standing bug in mono_string_equal() which
24714         was brought to light with the ldstr changes.
24715
24716 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
24717
24718         * reflection.c: Remove warning by adding missing include for marshal.h
24719
24720 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
24721
24722         * domain.c, object.c: change the ldstr_table to hold
24723         MonoString* as keys: makes the runtime isinterned lookup
24724         faster and simplifies memory management.
24725
24726 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
24727  
24728         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
24729         possible to add imperative security checks before calling the icall.
24730         * reflection.c: Return security attributes on the original MonoMethod
24731         (and not the wrapped one). This fix permissions on icalls.
24732
24733 2005-01-25  Dick Porter  <dick@ximian.com>
24734
24735         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
24736         the check for mktime() support actually test the mktime() return
24737         value.  "Fixes" bug 71682, though the output is still different to
24738         MS.
24739
24740 2005-01-25  Martin Baulig  <martin@ximian.com>
24741
24742         * class.c (mono_class_is_assignable_from): Make this work for
24743         generic instances.
24744
24745 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
24746
24747         * marshal.c (mono_string_utf8_to_builder)
24748         (mono_string_builder_to_utf16): We might not have ownership of the
24749         string. In thise case, we need to create a new buffer.
24750
24751         * object-internals.h (mono_stringbuilder_capacity): sb->str might
24752         be null, in which case, use the default capacity.
24753
24754 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
24755
24756         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
24757         GC events to the profiler.
24758
24759 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
24760
24761         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
24762         if you don't want the GC to run.
24763
24764 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
24765
24766         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
24767         start providing a GC API and keeping different implementations in
24768         their own file.
24769         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
24770
24771 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
24772
24773         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
24774         mmap rather than allocating a huge buffer.
24775         (mono_debug_close_mono_symbol_file): Free the buffer allocated
24776         above.
24777
24778 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
24779
24780         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
24781         and CheckExecutionRights.
24782         * reflection.c|h: Keep the index of the declarative security to be 
24783         used, instead of the pointer, when AOT compiler is used. Also add 
24784         class initialization when requesting demands.
24785         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
24786         CheckExecutionRights. Both properties are now FALSE by default, and
24787         unmodifiable, unless the --security option is used.
24788
24789 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
24790
24791         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
24792         reflection.c: properly refcount images and assemblies, many leaks fixed.
24793
24794 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24795
24796         * threadpool.c: increase the timeout for threads in the thread pool to
24797         10s.  Fixes bug #67159.
24798
24799 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24800
24801         * class-internals.h: Sun's compiler insists on explicit
24802         signed on bit fields to handle then correctly.
24803
24804 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
24805
24806         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
24807         Make the size of the array fit only the number of invalid path
24808         chars that we have.
24809
24810         * class.c (_mono_class_get): Improve the error reporting when a
24811         class referenced is not found, to assist debugging. 
24812
24813 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
24814
24815         * threads.c: fix off-by-one error.
24816         * domain.c: free data allocated in the domain.
24817
24818 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24819
24820         * reflection.c (mono_method_body_get_object): Fill out exception info
24821         as well.
24822
24823         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
24824         structure.
24825         
24826 2005-01-19  Martin Baulig  <martin@ximian.com>
24827
24828         * loader.c (mono_get_method_constrained): Make this work again.
24829
24830 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
24831
24832         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
24833         guint16 to match the managed side.
24834
24835         * reflection.c (mono_reflection_body_get_object): Fill out local
24836         variables array.
24837
24838         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
24839         as well.
24840
24841         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
24842         'local_var_sig_token'.
24843
24844 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
24845
24846         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
24847         System.Drawing.
24848
24849         * reflection.c (mono_method_body_get_object): Handle abstract and
24850         runtime methods.
24851
24852 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
24853
24854         * marshal.c, loader.c, class-internals.h, reflection.c:
24855         store the emthod data for a wrapper in an array instead of a list.
24856
24857 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
24858
24859         * marshal.c: change the code to allocate memory more
24860         conservatively for method wrappers.
24861
24862 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
24863
24864         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
24865         fields from MonoClass to the marshal info structure where they belong.
24866
24867 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
24868
24869         * class.c, object.c, class-internals.h, marshal.c: rearrange
24870         some fields and tweak some types to lower memory usage.
24871
24872 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
24873
24874         * threads.c (signal_thread_state_change): Handle the case when the
24875         target thread is the current thread.
24876
24877         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
24878
24879         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
24880         emit_ptr_to_object_conv. 
24881
24882         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
24883         marshalling. Fixes #71352.
24884
24885 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
24886
24887         * metadata.h, blob.h: move table enum to blob.h so it can be included
24888         in any header.
24889         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
24890         cut the size of MonoImage/MonoDynamicImage.
24891
24892 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
24893
24894         * profiler.c (mono_profiler_install_simple): Fix default arguments.
24895
24896 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
24897
24898         * reflection.c, reflection.h, icall.c: add a function to check
24899         if an attribute type is defined for a metadata object.
24900
24901 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
24902
24903         * object-internals.h: Added some needed fields from StringBuilder class.
24904         * marshal.c: Set the maxCapacity when creating a StringBuilder.
24905
24906 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
24907
24908         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
24909         threads before shutting down the runtime.
24910
24911         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
24912
24913 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
24914
24915         * object-internal.h, threads.c: implement stacksize and 
24916         parameterized thread start functionality (requires
24917         matching corlib). Marked broken code for later removal.
24918
24919 2005-01-12  Martin Baulig  <martin@ximian.com>
24920
24921         * class-internals.h (MonoGenericClass): Moved the `initialized'
24922         flag to MonoDynamicGenericClass, removed `init_pending'.
24923         (MonoGenericInst): Added `is_reference' flag.
24924
24925 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
24926
24927         * reflection.c (mono_image_create_pefile): Only set the pe_offset
24928         inside the MSDOS header. Fixes #71201.
24929
24930         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
24931         gc thread.
24932         (mono_domain_finalize): Ditto.
24933
24934 2005-01-12  Martin Baulig  <martin@ximian.com>
24935
24936         * class.c (mono_get_shared_generic_class): Use the cache for
24937         non-dynamic generic classes.
24938
24939         * class-internals.h (mono_class_create_generic_2): Removed
24940         function prototype, this function is now static inside class.c.
24941
24942         * class.c (mono_class_create_generic_2): Made this static, only
24943         call it from mono_class_init() and mono_class_setup_parent().
24944         (collect_implemented_interfaces_aux): Call mono_class_init() on
24945         the interfaces we collect.
24946         (mono_class_setup_vtable): Call mono_class_init (class->parent).
24947
24948 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24949
24950         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
24951         it a real thread handle.
24952
24953         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
24954         MonoJitExceptionInfo, since each catch clause needs its own variable.
24955         
24956 2005-01-11  Dick Porter  <dick@ximian.com>
24957
24958         * image.c (mono_pe_file_open): New variant on mono_image_open()
24959         that does not set up the CLI metadata; used for FileVersionInfo so
24960         it can get the data for windows binaries too.
24961         
24962         * process.c (process_read_string_block): Don't read off the end of
24963         the StringTable block.
24964
24965         These both fix bug 70766.
24966
24967 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
24968
24969         * gc.c: set some fields to NULL at GC cleanup time.
24970         * threads.c: if we quit the main thread, call exit ().
24971
24972 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
24973
24974         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
24975
24976 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
24977
24978         * threads.h, threads.c, object.c: added accessor and settor for
24979         main_thread. Handle it specially when exiting from it: wait
24980         for other foreground threads to exit.
24981
24982 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
24983
24984         * process.c, verify.c: remove some bloat.
24985
24986 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
24987
24988         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
24989         the calling convention to cdecl under win32.
24990
24991 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
24992
24993         * object.c (mono_object_get_size): New function to get the size of
24994         an object instance.
24995
24996         * profiler.c (simple_allocation): Use above.
24997
24998 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
24999
25000         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
25001         ves_icall_System_AppDomain_getRootDomain (as it's not required to
25002         get an appdomain by it's id and we can't assume the root's id is 0).
25003         * domain-internals.h: Change the function prototype to match.
25004         * icall.c: Change the icall table for AppDomain.
25005
25006 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
25007
25008         * locales.c (string_invariant_compare_char): Only compute
25009         GUnicodeTypes in the case where we need them.  Test for ordinality
25010         first and return if so.
25011
25012         From the commit:
25013
25014                 /*
25015                  * FIXME: here we must use the information from c1type and c2type
25016                  * to find out the proper collation, even on the InvariantCulture, the
25017                  * sorting is not done by computing the unicode values, but their
25018                  * actual sort order.
25019                  */
25020
25021 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
25022
25023         * loader.c: for P/Invoke methods, allow the "Internal" shared
25024         library name to refer to the calling process symbol namespace.
25025
25026 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
25027
25028         * Makefile.am: Add the security manager to the build.
25029         * security-manager.c|h: New. Initialization of the security manager.
25030
25031 2005-01-07  Dick Porter  <dick@ximian.com>
25032
25033         * threads.c: 
25034         * monitor.c: Update thread state during Monitor and WaitHandle
25035         waits.  Fixes bug 71031.
25036
25037 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
25038
25039         * reflection.c (property_encode_signature): Correctly handle when the
25040         property has no methods.
25041
25042 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
25043
25044         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
25045         
25046         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
25047         fields from mb, not rmb. Fixes #71017.
25048
25049         * marshal.c (emit_ptr_to_str_conv): Add support for 
25050         ByValTStr -> string conversion. Fixes #71015.
25051
25052         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
25053
25054         * mempool.c (mono_mempool_contains_addr): New helper function.
25055
25056 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25057
25058         * metadata.c (mono_metadata_compute_size): Fix size calculation of
25059         HasSematics encoded fields.
25060         
25061         * metadata.c (mono_type_to_unmanaged): Improve error message for 
25062         invalid string marshalling.
25063
25064         * metadata.c: Fix warnings.
25065         
25066 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
25067
25068         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
25069         profiler support.
25070
25071 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
25072
25073         * domain.c object.c domain-internals.h: Revert part of r38077 since the
25074         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
25075         tests.
25076
25077 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
25078
25079         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
25080         so methods containing these can be AOTed.
25081
25082 2005-01-03  Martin Baulig  <martin@ximian.com>
25083
25084         * loader.c (find_method): Removed the hack for generic instances.
25085         (method_from_memberref): If our parent is a generic instance, pass
25086         its generic type definition to find_method() and then inflate the
25087         method.
25088         (mono_get_method_constrained): Pass the generic type definition to
25089         find_method() and inflate the method later.
25090
25091         * class-internals.h (MonoStats): Added `generic_class_count'.
25092
25093         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
25094         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
25095
25096         * reflection.c (mono_custom_attrs_from_params): Don't ignore
25097         generic type definitions.
25098
25099 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
25100
25101         * loader.c icall.c: Fix warnings.
25102
25103 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
25104
25105         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
25106         blittable types. Fixes #70864.
25107
25108 2004-12-29  Martin Baulig  <martin@ximian.com>
25109
25110         * icall.c
25111         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
25112
25113         * reflection.c (mono_method_get_object): Create a
25114         "System.Reflection.MonoGenericMethod" for inflated methods; don't
25115         call mono_get_inflated_method().
25116
25117         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
25118
25119 2004-12-27  Martin Baulig  <martin@ximian.com>
25120
25121         * class-internals.h (MonoMethod): Added `is_inflated' flag.
25122         (MonoMethodInflated): Added `inflated' field.
25123
25124         * class.c (mono_class_inflate_generic_method): Don't really
25125         inflate the method here; just set the `is_inflated' flag in the
25126         MonoMethod.
25127         (mono_class_get_inflated_method): Actually inflate the method here
25128         if it's not already inflated; we use the MonoMethodInflated's new
25129         `inflated' field as a cache.
25130
25131 2004-12-26  Martin Baulig  <martin@ximian.com>
25132
25133         * class.c
25134         (inflate_generic_class): Moved some code out of inflate_generic_type().
25135         (mono_class_inflate_generic_method): If we're already inflated,
25136         inflate the context and use the declaring method; ie. make sure
25137         the declaring method of an inflated method is always the generic
25138         method definition.
25139         (mono_class_create_from_typedef): Create
25140         `class->generic_container->context->gclass'.
25141
25142 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
25143
25144         * metadata-internals.h, marshal.c, reflection.c: More
25145         MonoGHashTable->GHashTable.
25146
25147         * domain-internals.h, class.c: Change MonoGHashTable's into
25148         GHashTables for some cases where no gc stuff is used
25149
25150         All users: update apis
25151
25152 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
25153
25154         * metadata.c (builtin_types): Make this `const'. Makes this get
25155         put into the shareable section.
25156         (mono_metadata_init): Casts to make gcc happy.
25157
25158 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
25159
25160         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
25161
25162 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
25163
25164         * icall.c: Added an internal call to retrieve the position and length
25165         of assembly-level declarative security attributes (RequestMinimum, 
25166         RequestOptional and RequestRefuse). This is used by the Assembly class
25167         to re-create the corresponding permission sets.
25168
25169 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
25170
25171         * marshal.c: fix the stelemref wrapper to be type correct
25172         (and faster).
25173
25174 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
25175
25176         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
25177         to do key & 0x7fffffff. Hashtable already does this. It just
25178         results in longer code.
25179
25180 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
25181
25182         * appdomain.c: Bump corlib version.
25183         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
25184         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
25185         * reflection.c|h: Add functions to get declarative security infos
25186         (blob position and length) for assemblies, classes and methods.
25187
25188 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
25189
25190         * reflection.c: sort the constant table (bug #70693).
25191
25192 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
25193
25194         * object-internals.h, threads.c, domain.c: add accessors for
25195         the MonoThread and MonoDomain tls keys.
25196
25197 2004-12-18  Martin Baulig  <martin@ximian.com>
25198
25199         * class.c (inflate_generic_type): If we're inflating a generic
25200         instance, set `ngclass->context->container = context->container';
25201         ie. the container we inflated into.
25202
25203         * metadata.c (mono_metadata_parse_generic_param): Reflect above
25204         inflate_generic_type() changes.
25205
25206 2004-12-17  Martin Baulig  <martin@ximian.com>
25207
25208         * class-internals.h
25209         (MonoGenericClass): Replaced `MonoType *generic_type' with
25210         `MonoClass *generic_class'.  Removed `dynamic_info'; if
25211         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
25212         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
25213
25214 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
25215
25216         * exception.c (mono_exception_from_token): New helper function.
25217
25218 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
25219
25220         * assembly.c (mono_assembly_load_with_partial_name): Call 
25221         mono_assembly_loaded before invoking the preload hooks. Fixes
25222         #70564.
25223
25224         * object-internals.h (MonoThread): Change culture_info and 
25225         ui_culture_info into an array.
25226
25227         * threads.c: Cache culture info objects from more than one appdomain.
25228
25229         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
25230         current UI culture.
25231
25232 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
25233
25234         * threads.h threads.c appdomain.c: Clear the culture_info field of
25235         all threads during unloading if they point to an object in the dying
25236         appdomain.
25237
25238 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
25239
25240         * culture-info.h (TextInfoEntry): New struct
25241         * object-internals.h: sync with managed
25242         * locales.c: fill the `text_info_data' field
25243         * culture-info-tables.h: update
25244
25245 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25246
25247         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
25248         collector.
25249
25250 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
25251
25252         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
25253         (ves_icall_ModuleBuilder_getMethodToken): Ditto
25254
25255 2004-12-12  Martin Baulig  <martin@ximian.com>
25256
25257         * mono-debug-debugger.c (write_type): If we're an enum and the
25258         builtin types have already been initialized, call mono_class_init().
25259
25260 2004-12-11  Martin Baulig  <martin@ximian.com>
25261
25262         * metadata.c (mono_metadata_load_generic_params): Added
25263         `MonoGenericContainer *parent_container' argument; automatically
25264         compute `container->is_method'; pass the correct owner to
25265         get_constraints().      
25266
25267         * reflection.c (compare_genericparam): Sort the GenericParam table
25268         according to increasing owners. 
25269
25270 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
25271
25272         * profiler.c: allow disabling the default profiler.
25273
25274 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
25275
25276         * decimal.c, icall.c: allow disabling System.Decimal support.
25277
25278 2004-12-09  Marek Safar <marek.safar@seznam.cz>
25279
25280         * reflection.c: Add support for null attribute arguments.
25281
25282 2004-12-09  Martin Baulig  <martin@ximian.com>
25283
25284         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
25285         names to get rid of compiler warnings.
25286
25287 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25288
25289         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
25290         mono_marshal_load_type_info (). Fixes #69625.
25291         (mono_marshal_get_ptr_to_struct): Likewise.
25292
25293 2004-12-08  Martin Baulig  <martin@ximian.com>
25294
25295         * mono-debug.h: Bumped version number to 47.
25296
25297         * mono-debug-debugger.c
25298         (mono_debugger_event_handler, mono_debugger_event): Take two
25299         guint64 arguments insteed of a gpointer and a guint32.  
25300
25301 2004-12-08  Martin Baulig  <martin@ximian.com>
25302
25303         * debug-mono-symfile.h
25304         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
25305         `address' to `native_offset'.
25306
25307 2004-12-08  Martin Baulig  <martin@ximian.com>
25308
25309         * class.c (mono_class_create_from_typespec): Only inflate if we
25310         either have `context->gclass' or `context->gmethod'.
25311
25312 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
25313
25314         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
25315
25316         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
25317
25318         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
25319
25320         * reflection.c (mono_assembly_get_object): Remove the workaround put
25321         in for the release.
25322         
25323         * appdomain.c: Use the corlib_internal field from MonoAssembly.
25324
25325         * appdomain.c: Bump corlib version.
25326
25327         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
25328         be visible in other appdomains.
25329
25330 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
25331
25332         * threads.c: Interlocked inc and dec for longs were messed up,
25333         use a KISS based impl for this. Fixes 70234
25334
25335 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
25336
25337         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
25338
25339 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25340
25341         * icall.c: fix to follow policy not to allow struct
25342         arguments in icalls.
25343
25344 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25345
25346         * process.c: make the patch that handles spaces in file paths work
25347         on mono/windows too.
25348
25349 2004-12-06  Martin Baulig  <martin@ximian.com>
25350
25351         * class.c (mono_class_create_generic): Call
25352         mono_class_setup_supertypes() if we're dynamic.
25353         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
25354
25355 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
25356
25357         * object-internals.h: Add new fields to MonoThread.
25358
25359         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25360
25361         * icall.c threads-types.h threads.c: Add new icalls.
25362
25363         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
25364
25365         * object-internals.h (MonoReflectionAssembly): Sync object layout with
25366         managed side.
25367
25368         * appdomain.c: Bump corlib version.
25369
25370         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
25371         internal assemblies. Fixes #69181.
25372
25373 2004-12-05  Martin Baulig  <martin@ximian.com>
25374
25375         * class.c (mono_class_inflate_generic_signature): Make this a
25376         no-op if `context' is NULL or we don't have any type parameters;
25377         also copy `sentinelpos'.        
25378
25379 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
25380
25381         * image.c: Add unbox_wrapper_cache.
25382
25383         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
25384
25385         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
25386         function generator.
25387         
25388         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
25389         Fixes #70173.
25390
25391         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
25392         
25393 2004-12-04  Martin Baulig  <martin@ximian.com>
25394
25395         * loader.c (mono_method_get_signature_full): New public function;
25396         like mono_method_get_signature(), but with an additional
25397         `MonoGenericContext *' argument.
25398
25399         * class.c (mono_class_inflate_generic_signature): Formerly known
25400         as inflate_generic_signature(); make this public.
25401
25402 2004-12-04  Martin Baulig  <martin@ximian.com>
25403
25404         * metadata.c
25405         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
25406         instead of a `MonoGenericContainer *'.  
25407         (mono_metadata_parse_array_full): Likewise.
25408         (mono_metadata_parse_signature_full): Likewise.
25409         (mono_metadata_parse_method_signature_full): Likewise.
25410         (mono_metadata_parse_generic_inst): Likewise.
25411         (mono_metadata_parse_generic_param): Likewise.
25412         (mono_metadata_parse_mh_full): Likewise.
25413         (mono_type_create_from_typespec_full): Likewise.
25414
25415 2004-12-03  Martin Baulig  <martin@ximian.com>
25416
25417         * class-internals.h (MonoGenericContainer): Replaced the
25418         `MonoGenericContext * pointer with a `MonoGenericContext'
25419         structure and made it the first element.
25420
25421 2004-12-03  Martin Baulig  <martin@ximian.com>
25422
25423         * class.c
25424         (inflate_generic_type): Set the `context->container' when creating
25425         a new MonoGenericContext.
25426         (mono_class_inflate_generic_method): Likewise.
25427         (mono_class_create_from_typespec): Just use `context->container'
25428         to get the container.
25429
25430         * loader.c (method_from_methodspec): Set `context->parent' from
25431         `context->container' - and if that's a method container, use its
25432         parent.  Also set the `context->container' when creating a new
25433         MonoGenericContext.
25434         (mono_get_method_from_token): Use just `context->container' to get
25435         the container.
25436
25437         * metadata.c (do_mono_metadata_parse_generic_class): Also set
25438         `gclass->context->container'.
25439
25440         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
25441         the `context->container' when creating a new MonoGenericContext.
25442
25443 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
25444
25445         * reflection.c (compare_genericparam): Sort params with identical
25446         owner by their number. Fixes gen-111 on sparc.
25447
25448 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25449
25450         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
25451         around the domain changes.
25452
25453         * appdomain.c (mono_domain_unload): Handle the case when the thread
25454         calling Unload is itself being aborted during unloading. Fixes #70022.
25455
25456         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
25457
25458         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
25459         checkpoint_func as an icall so it gets a wrapper.
25460         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
25461         in the cross-appdomain wrappers too.
25462
25463         * threads.c (mono_thread_has_appdomain_ref): Make this public.
25464
25465         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
25466
25467         * reflection.c: Fix some memory leaks.
25468         
25469 2004-12-02  Martin Baulig  <martin@ximian.com>
25470
25471         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
25472
25473         * metadata.c (generic_class_cache): New static hashtable.
25474         (mono_metadata_lookup_generic_class): New public method.
25475
25476 2004-12-02  Martin Baulig  <martin@ximian.com>
25477
25478         * class.c (mono_class_create_from_typedef): Call
25479         mono_class_setup_parent() and mono_class_create_mono_type() before
25480         parsing the interfaces.
25481
25482 2004-12-02  Martin Baulig  <martin@ximian.com>
25483
25484         * metadata.c (generic_inst_cache): New static hashtable.
25485         (mono_metadata_lookup_generic_inst): New public function.
25486         (mono_metadata_inflate_generic_inst): New public function.
25487         (mono_metadata_parse_generic_inst): New public function.
25488         (do_mono_metadata_parse_generic_class): Use the new
25489         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
25490         since this'll also use the cache.
25491
25492         * reflection.c (mono_reflection_bind_generic_method_parameters):
25493         Use mono_metadata_lookup_generic_inst() to use the new cache.
25494
25495         * class.c (inflate_mono_type): Use
25496         mono_metadata_inflate_generic_inst() to inflate a generic
25497         instance; this'll also use the new cache.
25498
25499         * loader.c (method_from_methodspec): Use
25500         mono_metadata_parse_generic_inst() and
25501         mono_metadata_inflate_generic_inst() rather than parsing it
25502         manually, so we can use the new cache.
25503
25504 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
25505
25506         * threads.c (wait_for_tids): Do not incorrectly free threads when 
25507         the wait times out.
25508
25509 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
25510
25511         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
25512         iter->args based on whether parameters are passed in registers (i.e.
25513         MONO_ARCH_REGPARMS is defined)
25514
25515 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
25516
25517         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
25518         the exception message. Fixes #70070.
25519         (method_from_methodspec): Fix warnings.
25520
25521 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25522
25523         * process.c: (complete_path) return the path quoted
25524
25525 2004-12-01  Martin Baulig  <martin@ximian.com>
25526
25527         * class-internals.h (MonoGenericInst): New structure.
25528         (MonoGenericClass): Replaced `type_argc', `type_argv' and
25529         `is_open' with `MonoGenericInst *inst'.
25530         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
25531         `is_open' with `MonoGenericInst *inst'.
25532
25533 2004-11-30  Martin Baulig  <martin@ximian.com>
25534
25535         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
25536
25537         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
25538         to `generic_class_cache'.
25539
25540         * metadata.c
25541         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
25542         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
25543         (mono_generic_inst_is_valuetype): Renamed to
25544         mono_generic_class_is_valuetype().
25545
25546         * class-internals.h
25547         (MonoGenericInst): Renamed to MonoGenericClass.
25548         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
25549         (MonoClass): Renamed `generic_inst' to `generic_class'.
25550         (MonoGenericContext): Renamed `ginst' to `gclass'.
25551
25552         * object-internals.h
25553         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
25554
25555         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
25556         mono_reflection_generic_class_initialize().
25557
25558         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
25559         now known as "System.Reflection.MonoGenericClass".
25560         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
25561
25562 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
25563
25564         * class-internals.h: Added a flag field to MonoClass to cache the
25565         declarative security attributes actions associated with the class.
25566         * domain-internals.h: Added booleans to MonoJitInfo to cache the
25567         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
25568         applicable to the JITted method.
25569         * reflection.c|h: Added functions to extract (as flags) which security
25570         actions are available (declaratively) for a method, class or assembly.
25571         * metadata.c|h: Added functions to search the declarative security
25572         table in the metadata.
25573         
25574 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
25575
25576         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
25577         EXPORTEDTYPES are already in the class name cache, so there is no
25578         need to add extra code here to look at them. Just removes a bit of
25579         cruft.
25580
25581         (ves_icall_System_Environment_get_TickCount): No need for #if
25582         WINDOWS. We already have the code in io-layer.
25583
25584 2004-11-28  Martin Baulig  <martin@ximian.com>
25585
25586         * loader.c
25587         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
25588         Fixes gen-112.cs.
25589
25590 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
25591
25592         * assembly.c (do_mono_assembly_open): Instead of having a
25593         conditional WITH_BUNDLE, incorporate support for bundles here, by
25594         having a global `bundles' variable holding a pointer to the actual
25595         bundles. 
25596
25597         (mono_register_bundled_assemblies): New API call used by the
25598         bundle code. 
25599
25600         See mkbundle.1 for details.
25601         
25602 2004-11-27  Martin Baulig  <martin@ximian.com>
25603
25604         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
25605         the vtable for generic methods.
25606
25607 2004-11-26  Martin Baulig  <martin@ximian.com>
25608
25609         * metadata.c
25610         (mono_metadata_generic_method_hash): New public function.
25611         (mono_metadata_generic_method_equal): Likewise.
25612
25613         * class-internals.h
25614         (MonoGenericContainer): Added `GHashTable *method_hash'.
25615
25616         * reflection.c (ReflectionMethodBuilder): Added
25617         `MonoGenericContainer *generic_container'.
25618         (reflection_methodbuilder_to_mono_method): Don't create a new
25619         MonoGenericContainer each time we're called.
25620         (mono_reflection_bind_generic_method_parameters): Use
25621         `container->method_hash' to cache the results so we don't create a
25622         different method if we're called several times with the same
25623         arguments.
25624
25625         * loader.c (method_from_methodspec): Use the new
25626         `container->method_hash' here, too.
25627
25628 2004-11-26  Martin Baulig  <martin@ximian.com>
25629
25630         * class.c (inflate_generic_signature): Correctly compute
25631         `res->has_type_parameters'.
25632         (mono_class_vtable): Use the `has_type_parameters' flag to
25633         determine whether we're a generic method.
25634
25635         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
25636
25637 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
25638
25639         * object.c (mono_runtime_run_main): Fix a small memory leak.
25640
25641 2004-11-25  Martin Baulig  <martin@ximian.com>
25642
25643         * class.c (set_generic_param_owner): Fixed the loop.
25644
25645 2004-11-25  Martin Baulig  <martin@ximian.com>
25646
25647         * object.c (mono_class_vtable): Don't create any JIT wrappers for
25648         generic methods.
25649
25650 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
25651
25652         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
25653         names. Fixes #69787.
25654
25655 2004-11-24  Martin Baulig  <martin@ximian.com>
25656
25657         * class.c (mono_class_create_generic_2): If we don't have a
25658         `ginst->parent', inflate `gklass->parent' to get our parent.
25659
25660 2004-11-24  Martin Baulig  <martin@ximian.com>
25661
25662         * reflection.c (compare_genericparam): Correctly sort the
25663         GenericParam table; fixes #69779.
25664
25665 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
25666
25667         * reflection.c: When writing a PE file, don't create a huge
25668         buffer in memory. Just write the arrays we have to the file.
25669         This reduces memory usage.
25670
25671         * metadata-internals.h: MonoDynamicStream pefile is no longer used
25672         globally.
25673
25674 2004-11-17  Martin Baulig  <martin@ximian.com>
25675
25676         * class.c (mono_class_init): Don't setup `class->parent' for
25677         dynamic instances; moved this to mono_class_generic_2().
25678         (mono_class_create_generic): Also set `klass->inited' for dynamic
25679         generic instances.
25680         (mono_class_create_generic_2): Don't do anything for dynamic
25681         generic instances.  Set `klass->parent' here and also call
25682         mono_class_setup_parent() here. 
25683
25684         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
25685         `MonoType *parent' argument; set `ginst->parent' before calling
25686         mono_class_create_generic_2(), so we set the correct parent.
25687
25688 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
25689
25690         * reflection.c: allow getting attributes from ModuleBuilder
25691         (used by ikvm).
25692
25693 2004-11-17  Martin Baulig  <martin@ximian.com>
25694
25695         * class.c (mono_class_create_from_typedef): If a type parameter is
25696         inherited from an outer class, set its owner to that class.
25697
25698 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
25699
25700         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
25701           for (int*) written size. This fixes bug #69592.
25702
25703 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
25704
25705         * icall.c: Added IsAuthenticodePresnet internal call.
25706         * image.c|h: New function that check a MonoImage for an Authenticode
25707         signature in the certificate PE data directory.
25708         * security.c|h: New internal call to ask the runtime if an 
25709         Authenticode signature seems referenced in the PE header.
25710
25711 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
25712
25713         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
25714
25715         * reflection.c (mono_image_create_pefile): Free the assembly streams
25716         after writing out the assembly file.
25717
25718         * object.c (mono_runtime_run_main): Fix small memory leak.
25719
25720         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
25721         property access modifiers. Fixes #69389.
25722
25723 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
25724
25725         * domain.c, object.c, object-internals.h, domain-internals.h,
25726         object.h, marshal.c: keep dynamic code info per domain.
25727
25728 2004-11-15  Martin Baulig  <martin@ximian.com>
25729
25730         * class.c (mono_type_get_name_recurse): Put type arguments in
25731         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
25732         see bug #68387.
25733
25734 2004-11-15  Martin Baulig  <martin@ximian.com>
25735
25736         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
25737         (mono_class_setup_vtable): When computing `the_cname' for a
25738         generic instance, don't include the namespace since we'd otherwise
25739         add it twice.
25740
25741 2004-11-15  Martin Baulig  <martin@ximian.com>
25742
25743         * class.c (mono_class_create_generic): Changed return type to void.
25744         (mono_class_create_generic_2): New public function; setup
25745         `class->method', `class->field' and `class->interfaces' here
25746         instead of in mono_class_init().
25747
25748         * class.h (mono_class_create_generic): Moved to class-internals.h.
25749
25750 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
25751
25752         * reflection.c (mono_image_create_pefile): take a file HANDLE.
25753         rather than writing to memory, write to this file. Right now,
25754         we are just writting into a buffer, and copying that. However
25755         we can avoid the buffer later.
25756
25757         (mono_dynamic_stream_reset): new function
25758
25759         * icall.c, object-internals.h: update for the above.
25760
25761 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
25762
25763         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
25764         have been using gc'd memory. First it is slower, unlikely
25765         the comment in the source code said, secondly, it increases
25766         our footprint to do it in the gc.
25767
25768         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
25769         the method so that it does not have to copy to managed code.
25770
25771 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
25772
25773         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
25774
25775 2004-11-12  Martin Baulig  <martin@localhost>
25776
25777         * reflection.c (mono_image_create_token): Allow generic method
25778         definitions here, since they may appear in an `.override'; see
25779         gen-98/gen-99 for an example.
25780
25781 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
25782
25783         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
25784         #69365.
25785
25786         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
25787         descriptive.
25788
25789 2004-11-11  Martin Baulig  <martin@ximian.com>
25790
25791         * class.c (mono_class_setup_vtable): In an explicit interface
25792         implementation, the method name now includes the arity.
25793
25794 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
25795
25796         * object.c (mono_array_full_copy): Fix warning.
25797
25798 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
25799
25800         * appdomain.c: Removed look_for_method_by_name(). Use the new method
25801         mono_class_get_method_from_name() instead.
25802         
25803         * class-internals.h: Added two new types of wrappers. 
25804         Added MonoRemotingTarget enum. Added new trampoline function type, which
25805         takes an additional MonoRemotingTarget value as parameter, so it is
25806         possible to request a trampoline for a specific target.
25807         
25808         * class.c: Added new mono_class_get_method_from_name() method.
25809         
25810         * class.h: In MonoRemoteClass, we can have now to vtables, one for
25811         general remoting sinks and one specific for cross domain calls.
25812         
25813         * debug-helpers.c: Added new wrapper names.
25814         
25815         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
25816         of a remote class.
25817         
25818         * image.c: Porperly delete value objects form the remoting invoke hashtable.
25819         
25820         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
25821         with several other methods (mono_marshal_get_xappdomain_dispatch,
25822         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
25823         and others) can generate a fast remoting wrapper for cross domain calls.
25824         More information can be found in docs/remoting.
25825         Other changes: Removed mono_find_method_by_name, and used
25826         mono_class_get_method_from_name instead.
25827         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
25828         is stored in the remoting invoke hashtable.
25829         
25830         * marshal.h: published the new method for getting the xdomain wrapper,
25831         and also added a method for getting the adequate wrapper for a given
25832         method and target.
25833         
25834         * object-internals.h, object.c: Added a couple of methods for capying and
25835         cloning arrays.
25836         Modified mono_install_remoting_trampoline, which takes the new remoting
25837         trampoline that has a remoting target as parameter.
25838         mono_class_proxy_vtable now also takes a remoting target as parameter, and
25839         will return the most suitable vtable for the target.
25840         Added mono_remote_class_vtable, which returns the vtable of a remote class
25841         (which can be the normal remoting vtable or the xdomain vtable).
25842         
25843         * threads.c: the xdomain invoke and dispatch wrappers must also be
25844         protected against interruptions.
25845
25846 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25847
25848         * icall.c: use memmove in BlockCopyInternal when the source and
25849         destination arrays are the same.
25850
25851 2004-11-09  Martin Baulig  <martin@ximian.com>
25852
25853         * class-internals.h (MonoGenericContainer): Removed `method' and
25854         `signature', replaced them with `is_method' and `is_signature'
25855         flags.  Added `context'.
25856
25857         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
25858         instead of a `MonoGenericContainer *'.
25859
25860         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
25861         for dynamic type parameters.
25862         (mono_metadata_load_generic_params): Setup `container->context'.
25863
25864         * reflection.c (mono_reflection_setup_generic_class): Setup
25865         `tb->generic_container->context'.
25866         (do_mono_reflection_bind_generic_parameters): Use
25867         mono_class_inflate_generic_type() to correctly inflate types,
25868         rather than using our own hack just for MONO_TYPE_VAR.
25869
25870 2004-11-09  Martin Baulig  <martin@ximian.com>
25871
25872         * class.c (mono_class_inflate_generic_method): Small fix; don't
25873         crash here.
25874
25875         * icall.c
25876         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
25877         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
25878         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
25879         (ves_icall_Type_BindGenericParameters): Likewise.
25880         (ves_icall_Type_get_IsGenericInstance): Likewise.
25881         (ves_icall_Type_GetGenericParameterPosition): Likewise.
25882         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
25883         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
25884         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
25885
25886 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
25887
25888         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
25889         assembly versions and public key tokens. Fixes #69113.
25890
25891 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
25892
25893         * metadata.c: fix bug introduced with the type cache changes
25894         on 2004-11-06.
25895
25896 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
25897
25898         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
25899         the MonoClass pointer instead of the token in exception clauses.
25900         * reflection.c: updates for the above and make the code not depend
25901         on the structure of MonoExceptionClause.
25902
25903 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
25904
25905         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
25906         Add support for dynamic assemblies. Fixes #69114.
25907
25908         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
25909
25910 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
25911
25912         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
25913         since most only those methods use it. the code member of
25914         MonoMethodPInvoke was dead, so that can be removed too. Also,
25915         remove inline_count (again, not used), and move slot so that it
25916         can share bits with some other flags. This saves 8 bytes in the
25917         structure and gives us about 50 kb back for mcs helloworld.cs
25918
25919         * *.[ch]: Do naming changes for the above.
25920
25921         * loader.c (mono_method_get_header): Lazily init the header
25922         on first access.
25923         (mono_get_method_from_token): don't init the header here
25924         (mono_free_method): the header may never be allocated
25925
25926         Overall, this saves 150 kb of unmanaged allocations
25927         for mcs helloworld.cs. That accounts for 10% of the unmanaged
25928         memory at runtime.
25929         
25930         * loader.c, loader.h (mono_method_get_header): new accessor.
25931
25932         * *.[ch]: use the above method. Prepares us to lazily load
25933         the header.
25934
25935         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
25936         three warnings, which are actual bugs (see 69206).
25937
25938         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
25939         unused. Saves a cool 4 bytes / method.
25940
25941 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
25942
25943         * metadata.c (builtin_types): Add types for System.Object here.
25944         (mono_metadata_parse_type_full): Cache MonoType*'s that are
25945         for a class or valuetype from klass->this_arg or klass->byval_arg.
25946
25947         On mcs for a hello world, this gets us down from 21836 MonoType's
25948         to 14560.
25949
25950         (mono_metadata_free_type): Account for the above change.
25951
25952 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
25953
25954         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
25955         exception instead of asserting if name is null.
25956         (ves_icall_System_AppDomain_GetData): Ditto.
25957
25958 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
25959
25960         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
25961         EnumBuilder.
25962
25963         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
25964         Return NULL when the domain does not have entry_assembly set.
25965
25966         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
25967         Add a 'resource_modules' argument.
25968         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
25969
25970         * reflection.c (mono_reflection_create_runtime_class): Move setting
25971         of wastypebuilder here, so mono_get_type_object () returns a MonoType
25972         for enums too.
25973
25974         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
25975         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
25976         Throw an ArgumentNullException if 'ptr' is null.
25977
25978         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
25979         assemblies here. Fixes #69020.
25980
25981 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
25982
25983         * reflection.c (build_compressed_metadata): Fix the previous patch for
25984         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
25985         the stack.
25986
25987 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
25988
25989         * assembly.c (mono_assembly_names_equal): Allow a match if one of
25990         the cultures is false. Fixes #69090.
25991
25992         * reflection.c (build_compressed_metadata): Fix invalid memory read 
25993         detected by valgrind.
25994         
25995         * reflection.c (mono_reflection_get_type): Avoid triggering a 
25996         TypeResolve multiple times for the same type. Fixes #65577.
25997
25998 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
25999
26000         * marshal.c: Avoid using ldftn to call managed functions. It is
26001         much slower than just a call.
26002
26003         * reflection.c (mono_module_get_object): free the basename we
26004         allocate here from glib.
26005         
26006         * reflection.c (ensure_runtime_vtable): make sure to free
26007         overrides.  Also, we were allocating an array of MonoMethod not an
26008         array of MonoMethod*.
26009
26010         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
26011
26012         * image.c (mono_image_close): free image->guid here.
26013
26014 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
26015
26016         * reflection.c: Fix some spec conformance issues with the PE file
26017         structures so mcs compiled apps run on the Net 2.0 beta.
26018
26019 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
26020
26021         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
26022         Implement this. Fixes #67264.
26023
26024         * debug-helpers.h debug-helpers.c marshal.c: Move 
26025         mono_find_method_by_name to debug-helpers.c.
26026
26027 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
26028
26029         * object.c (mono_release_type_locks): type_initialization_hash is
26030         a GHashTable.
26031
26032         * reflection.c object.c object-internals.h: Fix warnings.
26033
26034         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
26035         without accessors. Fixes #61561.
26036
26037         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
26038         application base from the root domain if not set. Fixes #65641.
26039         (mono_runtime_init): Fix warning.
26040
26041 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26042
26043         * appdomain.c: call mono_thread_pool_init.
26044         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
26045         of worker threads based on the number of CPUs and the environment
26046         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
26047         for non-windows (windows) systems.
26048
26049 2004-10-27  Chris Toshok  <toshok@ximian.com>
26050
26051         * mono-debug-debugger.c (write_class): don't call mono_class_init
26052         here, as even with the check for (!klass->init_pending), we get
26053         into a situation where we're hitting cycles in class
26054         initialization.  Fixes #68816.
26055
26056 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
26057
26058         * image.c: Avoid overwriting values in the loaded_images_hash when an
26059         assembly is loaded multiple times. Fixes #61152.
26060
26061         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
26062         so multiple satellite assemblies for the same name can be loaded.
26063         Fixes #68259.
26064
26065         * mono_domain_assembly_preload: Actually return the loaded assembly, 
26066         not NULL.
26067
26068         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
26069         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
26070
26071         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
26072         pending finalizers are not invoked after the appdomain has been 
26073         unloaded. Fixes #67862.
26074
26075 2004-10-22  Martin Baulig  <martin@ximian.com>
26076
26077         * mono-debug-debugger.c
26078         (mono_debugger_runtime_invoke): Don't box valuetypes.
26079
26080 2004-10-22  Chris Toshok  <toshok@ximian.com>
26081
26082         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
26083         don't hide private methods.
26084
26085 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
26086
26087         * icall.c: Allows the runtime to "share" (when known) the public key
26088         token of an assembly. This avoid the need to recalculate the token 
26089         (from the public key) in managed code.
26090
26091 2004-10-21  Chris Toshok  <toshok@ximian.com>
26092
26093         * debug-helpers.c (append_class_name): argh, revert last patch.
26094         
26095 2004-10-21  Chris Toshok  <toshok@ximian.com>
26096
26097         * debug-helpers.c (append_class_name): use '+' as the delimiter,
26098         not '/', so that it matches what the debugger uses to look up
26099         methods.
26100
26101 2004-10-21  Martin Baulig  <martin@ximian.com>
26102
26103         * mono-debug-debugger.c (mono_debugger_throw_exception): New
26104         public method; this is called each time an exception is thrown and
26105         allows the debugger to use exception catch points.
26106
26107 2004-10-21  Martin Baulig  <martin@ximian.com>
26108
26109         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
26110         the stack pointer and the exception object in some struct and pass
26111         that to the debugger.
26112
26113 2004-10-21  Chris Toshok  <toshok@ximian.com>
26114
26115         * mono-debug-debugger.c (do_write_class): add instance/static
26116         event support.  We don't expose "raise" or "other" yet.
26117         (event_is_static): new method.
26118
26119 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
26120
26121         * mono-debug-debugger.c
26122         (mono_debugger_handle_exception): Remove
26123         bogus return value for fussy compilers.
26124
26125 2004-10-20  Martin Baulig  <martin@ximian.com>
26126
26127         * mono-debug-debugger.c
26128         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
26129         (mono_debugger_handled_exception): Likewise.
26130
26131 2004-10-20  Martin Baulig  <martin@ximian.com>
26132
26133         * mono-debug-debugger.h (MonoDebuggerEvent): Added
26134         MONO_DEBUGGER_EVENT_EXCEPTION.
26135
26136         * mono-debug-debugger.c (mono_debugger_handle_exception): New
26137         public function to send the debugger a notification for an
26138         exception and inform it about a catch/finally clause.
26139
26140 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
26141
26142         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
26143         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
26144         fix 2.95 build. 
26145
26146         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
26147
26148 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
26149
26150         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
26151         marshalled as [In,Out]. Fixes #58325.
26152
26153 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
26154
26155         * reflection.c (mono_method_body_get_object): Implement some fields.
26156
26157 2004-10-12  Martin Baulig  <martin@ximian.com>
26158
26159         * reflection.c (mono_reflection_bind_generic_parameters): Small
26160         fix, correctly retrieve our parent from a generic instance.
26161
26162 2004-10-12  Martin Baulig  <martin@ximian.com>
26163
26164         * metadata.c (mono_metadata_generic_param_equal): We always have
26165         an owner.
26166
26167         * class.c
26168         (mono_class_from_generic_parameter): We need to have an owner.
26169         (my_mono_class_from_generic_parameter): Likewise.
26170
26171         * reflection.c (mono_reflection_setup_generic_class): Renamed to
26172         mono_reflection_create_generic_class() and added a new
26173         mono_reflection_setup_generic_class().  
26174         (mono_reflection_initialize_generic_param): If we're a nested
26175         generic type and inherited from the containing class, set our
26176         owner to the outer class.
26177
26178 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
26179
26180         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
26181
26182         * reflection.c (mono_method_body_get_object): New function to create
26183         a MethodBody object.
26184
26185         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
26186
26187 2004-10-11  Martin Baulig  <martin@ximian.com>
26188
26189         * metadata.c (_mono_metadata_type_equal): Renamed to
26190         do_mono_metadata_type_equal() and made static.
26191
26192 2004-10-11  Martin Baulig  <martin@ximian.com>
26193
26194         * appdomain.c: Bump corlib version number to 28.
26195
26196 2004-10-10  Martin Baulig  <martin@ximian.com>
26197
26198         * class-internals.h
26199         (MonoGenericInst): Added `MonoGenericContainer *container'.
26200         (MonoGenericMethod): Likewise.
26201         (MonoGenericContext): Likewise.
26202         (MonoGenericParam): Added `MonoGenericContainer *owner'.
26203
26204         * metadata.c
26205         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
26206         (do_mono_metadata_parse_generic_inst): Likewise.
26207         (mono_metadata_parse_type_full): New public method.  This is the actual
26208         mono_metadata_parse_type() implementation - with an additional
26209         `MonoGenericContainer *' argument.
26210         (mono_metadata_parse_array_full): Likewise.
26211         (mono_metadata_parse_signature_full): Likewise.
26212         (mono_metadata_parse_method_signature_full): Likewise.
26213         (mono_metadata_parse_mh_full): Likewise.
26214         (mono_type_create_from_typespec): Likewise.
26215         (mono_metadata_interfaces_from_typedef_full): New public method;
26216         this is similar to the other _full() methods, but we take a
26217         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
26218         (mono_metadata_parse_generic_param): Take an additional
26219         `MonoGenericContainer *' argument and lookup the MonoGenericParam
26220         from that container.
26221         (mono_metadata_generic_param_equal): New static method to compare
26222         two type parameters.
26223         (_mono_metadata_type_equal): New static method; takes an
26224         additional `gboolean signature_only' argument - if true, we don't
26225         compare the owners of generic parameters.
26226         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
26227         with a TRUE argument - do a signature-only comparision.
26228
26229         * loader.c: Use the new _full() methods and pass the
26230         MonoGenericContainer to them.
26231
26232         * object-internals.h (MonoReflectionTypeBuilder): Added
26233         `MonoGenericContainer *generic_container' field.
26234         (MonoReflectionMethodBuilder): Likewise.
26235
26236 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
26237
26238         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
26239         case initial images of dynamic assemblies.
26240
26241         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
26242
26243         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
26244
26245         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
26246         length of event->other array.
26247         (typebuilder_setup_events): Ditto.
26248
26249         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
26250         'assembly_by_name' and add an 'assemblies' list.
26251
26252         * assembly.h assembly.c: Add a new search hook for determining whenever
26253         an assembly is already loaded. Use this instead of searching in the
26254         loaded_assemblies list.
26255
26256         * domain.c appdomain.c: Implement the new search hook so loaded 
26257         assemblies are now scoped by appdomain. Fixes #67727.
26258
26259 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
26260
26261         * threads.c (mono_thread_attach): Initialize synch_lock field so
26262         mono_thread_detach works again.
26263
26264         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
26265         'lib' too. Fixes #63130.
26266
26267 2004-10-06  Jackson Harper  <jackson@ximian.com>
26268
26269         * culture-info-tables.h: regenerated.
26270
26271 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
26272
26273         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
26274         implemented by other interfaces in the result. Fixes #65764.
26275         
26276         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26277         Handle unloadable modules without crashing.
26278
26279         * image.c (load_modules): Revert the previous patch since modules must
26280         have a fixed index inside the array.
26281         
26282         * image.c (load_modules): Don't include native modules in the modules
26283         array.
26284
26285 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
26286
26287         * reflection.h: Add param_defaults field.
26288
26289         * reflection.c: Add support for parameter defaults in dynamic methods.
26290         Fixes #64595.
26291
26292         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
26293         an empty string when a type has no namespace. Fixes #64230.
26294
26295 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
26296
26297         * tabledefs.h: Added "internal" security actions to support non-CAS
26298         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
26299         Note: they do not seems to be used anymore in 2.0 (new metadata format)
26300
26301 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
26302
26303         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
26304         constructor of abstract class. Fixes #61689.
26305
26306 2004-10-04  Martin Baulig  <martin@ximian.com>
26307
26308         * class-internals.h (MonoGenericContainer): New type.
26309         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
26310         `MonoGenericContainer *generic_container'.
26311         (MonoClass): Replaced `gen_params' and `num_gen_params' with
26312         `MonoGenericContainer *generic_container'.
26313
26314         * metadata.c (mono_metadata_load_generic_params): Return a
26315         `MonoGenericContainer *' instead of a `MonoGenericParam *';
26316         removed the `num' argument.
26317
26318 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
26319
26320         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
26321         for dynamic images.
26322
26323         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
26324         machine fields.
26325
26326         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
26327
26328         * reflection.c: Save pe_kind and machine values into the generated
26329         image file.
26330
26331         * appdomain.c: Bump corlib version number.
26332
26333         * object-internals.h: Reorganize layout of LocalBuilder.
26334
26335         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
26336         New helper function.
26337
26338         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
26339         created MonoType for dynamic types. Fixes #66180.
26340
26341 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
26342
26343         * threadpool.c: the ares hashtable needs a critical section around it.
26344         this prevents some nasty segfaults
26345
26346 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
26347
26348         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
26349         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
26350         bug 67324).
26351         
26352 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26353
26354         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
26355         
26356 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
26357
26358         * image.c: Always canonicalize image file names, to avoid loading
26359         the same assembly twice when referenced using a relative path.
26360
26361 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
26362
26363         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
26364
26365         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
26366
26367         * marshal.c: Fix warnings.
26368
26369 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
26370
26371         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
26372         attempting to marshal the delegate_trampoline as the method_addr.
26373         This patch has a static hashtable of marshalled delegates so that 
26374         we can map delegate_trampoline addresses back to delegates.  This
26375         allows a delegate passed to managed code to be passed back into native
26376         code.  Fixes #67039
26377
26378 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26379
26380         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
26381
26382         * reflection.c (method_encode_code): Align method headers properly.
26383         Fixes #66025.
26384
26385 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26386
26387         * marshal.c: In the runtime invoke wrapper, reset the abort
26388         exception if it is cached. This avoids the automatic rethrowal of 
26389         the exception after the catch of the wrapper. Also check for pending
26390         interruptions before calling the managed method. This is done using
26391         the new method emit_thread_force_interrupt_checkpoint, since the
26392         normal checkpoint method is ignored when running the invoke wrapper.
26393         * object.c: If the abort exception is rethrown, set the abort_exc
26394         field of the thread, so it will be rethrown aftere every catch.
26395         * threadpool.c: Only run an interruption checkpoint if what has been
26396         requested is a stop of the thread (aborts will be ignored).
26397         * threads.c: By default, a thread will now never be interrumped while
26398         running the runtime invoke wrapper (this ensures that runtime_invoke
26399         will always return to the caller if an exception pointer is provided).
26400         There is a new special method mono_thread_force_interruption_checkpoint()
26401         to force an interruption checkpoint even if running a protected
26402         wrapper, which is used by the same runtime invoke wrapper to do a check
26403         at a safe point.
26404
26405 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
26406
26407         * object.c, object-internals.h: Implemented mono_release_type_locks,
26408         which releases the cctor locks held by a thread.
26409         * threads.c, threads.h: In thread_cleanup, release cctor locks held
26410         by a thread. Added mono_thread_exit() method to be used to safely stop
26411         a thread.
26412
26413 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26414
26415         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
26416         Move null check before dereference.  Avoid indexing beyond the end
26417         of the 'modules' array.
26418
26419 2004-09-28  Raja R Harinath  <rharinath@novell.com>
26420
26421         * metadata-internals.h (MonoImage): Add module_count field.
26422         * image.c (load_modules): Set image->module_count.
26423         (mono_image_load_file_for_image): Use image->module_count.
26424         * reflection.c (mono_image_load_module): Append to image->modules array 
26425         of dynamic assembly.
26426         (mono_module_get_object): Fix loop to actually increment index.
26427         Use image->module_count.
26428         * assembly.c (mono_assembly_load_references): Use image->module_count.
26429         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
26430         Likewise.
26431
26432 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
26433
26434         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
26435         Avoid assert on generic types.
26436
26437 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
26438
26439         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
26440
26441         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
26442
26443         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
26444         function to convert a MarshalSpec structure to its managed counterpart.
26445
26446         * reflection.c: Fix warnings.
26447         
26448         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
26449         field.
26450
26451         * icall.c (mono_create_icall_signature): Fix build.
26452
26453 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
26454
26455         * icall.c: Add MakePointType icall.
26456
26457         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
26458         warnings.
26459
26460 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26461
26462         * threadpool.c: reuse allocated slots in the queue.
26463
26464 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
26465
26466         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
26467
26468         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
26469
26470         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
26471         previous change.
26472
26473         * tabledefs.h: Add constants for pinvoke attributes BestFit and
26474         ThrowOnUnmappableChar.
26475
26476         * icall.c (ves_icall_Type_GetPacking): New icall.
26477
26478 2004-09-24  Martin Baulig  <martin@ximian.com>
26479
26480         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
26481
26482 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26483
26484         * appdomain.c:
26485         (mono_domain_set): allow setting a domain that is being unloaded.
26486         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
26487         being unloaded.
26488
26489 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26490
26491         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
26492         the GetCustomAttributes icall.
26493
26494 2004-09-23  Martin Baulig  <martin@ximian.com>
26495
26496         * object-internals.h (MonoReflectionGenericParam): Replaced
26497         'has_ctor_constraint', `has_reference_type' and `has_value_type'
26498         with `guint32 attrs'.
26499
26500 2004-09-23  Martin Baulig  <martin@ximian.com>
26501
26502         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
26503
26504 2004-09-23  Martin Baulig  <martin@ximian.com>
26505
26506         * object-internals.h (GenericParameterAttributes): New enum.
26507
26508 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
26509
26510         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
26511         
26512         * class.c (init_events): Fill out event->other field.
26513
26514         * class.c: Fix warnings.
26515
26516         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
26517
26518 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
26519
26520         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
26521         walk which doesn't supply the IL offset.
26522
26523 2004-09-22  Martin Baulig  <martin@ximian.com>
26524
26525         * reflection.c (mono_reflection_setup_internal_class): If we're
26526         System.ValueType, System.Object or System.Enum, set
26527         `klass->instance_size' and create the vtable.
26528         (mono_reflection_create_internal_class): If we're an enum type,
26529         get the base class from our current corlib.
26530
26531 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
26532
26533         * reflection.h (MonoResolveTokenError): New type.
26534
26535         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
26536         icall.
26537
26538         * icall.c: Add an 'error' argument to the ResolveToken icalls.
26539
26540 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
26541
26542         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
26543         Support also calling constructors, but only for already allocated objects.
26544
26545 2004-09-17  Geoff Norton <gnorton@customerdna.com>
26546
26547         * reflection.c (type_get_qualified_name): If the klass is null
26548         return the typename to avoid a NullRefEx.
26549         (encode_cattr_value): Get the qualified name of the boxed type,
26550         not the underlying enumtype.  Fixes #62984.
26551
26552 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
26553
26554         * marshal.c: Fix problems with previous checkin.
26555
26556 2004-09-21    <vargaz@freemail.hu>
26557
26558         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
26559         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
26560
26561         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
26562
26563 2004-09-21  Geoff Norton <gnorton@customerdna.com>
26564
26565         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
26566         should only return a type for pointers, arrays, and passbyref types.
26567         Fixes bug #63841.
26568
26569 2004-09-21  Martin Baulig  <martin@ximian.com>
26570
26571         * domain.c (mono_debugger_check_runtime_version): New public
26572         function.
26573
26574         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
26575
26576 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
26577
26578         * reflection.c: Added missing sort to the declarative security 
26579         attributes table. MS implementation stops seeing the attributes if the
26580         token number regress in the table (as shown by ildasm and permview).
26581
26582 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
26583
26584         * object-internals.h (MonoReflectionModule): Add 'token' field.
26585         
26586         * reflection.c (mono_reflection_get_token): Add support for Module
26587         and Assembly.
26588         (mono_module_get_object): Set 'token' field.
26589         (mono_module_file_get_object): Set 'token' field.
26590
26591         * icall.c: Add new Assembly and Module icalls.
26592
26593         * appdomain.c: Bump corlib version.
26594
26595 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
26596
26597         * loader.h loader.c class.h class.c: Add helper functions for obtaining
26598         tokens of metadata objects.
26599
26600         * reflection.h reflection.c (mono_reflection_get_token): New function
26601         to obtain the token of a metadata object.
26602
26603         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
26604
26605 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
26606
26607         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
26608         
26609         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
26610
26611 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
26612
26613         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
26614         * object-internals.h: Added 3 MonoArray* members to MonoReflection
26615         AssemblyBuilder to access the permissions set in the class lib.
26616         * reflection.c: Added security attributes encoding step in 
26617         mono_image_build_metadata.
26618         * tabledefs.h: Added new security actions defined in 2.0:
26619         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
26620
26621 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26622
26623         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
26624         macro parameter.
26625
26626 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
26627  
26628         * locales.c: nullify the ICU_collator member of CompareInfo when it is
26629           finalized. There where random SIGSEVs at program termination, when
26630           an object being finalized was trying to do a string comparison and
26631           the current culture was already finalized.
26632  
26633 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26634
26635         * threads.c: call thread_cleanup before finishing the thread if we get
26636         there.
26637
26638 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
26639
26640         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
26641         assemblies from the parent. Fixes #65665.
26642
26643 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
26644
26645         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
26646         modifiers.
26647
26648 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
26649
26650         * reflection.h: add prototype for mono_get_dbnull_object
26651         * reflection.c: add prototypes for get_default_param_value_blobs 
26652         and mono_get_object_from_blob for fussier compilers
26653
26654 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
26655  
26656         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
26657         false deadlock checks in class initialization.
26658  
26659 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
26660
26661         * image.c (mono_image_addref): Fix comment.
26662
26663         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
26664         possible.
26665
26666 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
26667
26668         * reflection.c (mono_param_get_objects): Modified to return
26669         ParameterInfo.DefaultValue object.
26670
26671         (get_default_param_value_blobs):
26672         (mono_get_object_from_blob):
26673         (mono_get_dbnull_object): New helper routines. 
26674
26675         * object.c (mono_get_constant_value_from_blob): New helper routine
26676         carved out from get_default_field_value ()
26677
26678         * object-internals.h (mono_get_constant_value_from_blob): Added
26679         function declaration.
26680
26681 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
26682
26683         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
26684         referenced assemblies. Fixes #62135.
26685
26686         * exception.h exception.c (mono_get_exception_file_not_found2): New
26687         helper function.
26688
26689 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
26690
26691         * class.h class.c: Add mono_type_get_underlying_type ().
26692
26693 2004-09-09  Geoff Norton <gnorton@customerndna.com>
26694
26695         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
26696         Fix GetTypes() to support dynamically created assemblies.
26697
26698 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
26699
26700         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
26701         
26702         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
26703         previous patch.
26704
26705         * reflection.h reflection.c loader.c: Allow dynamic construction of
26706         pinvoke methods. Fixes #65571.
26707         
26708         * reflection.c (mono_reflection_get_type): Revert previous change since
26709         it causes regressions.
26710
26711 2004-09-08  Martin Baulig  <martin@ximian.com>
26712
26713         * class.c (class_compute_field_layout): Don't call
26714         mono_class_layout_fields() for open generic instances.
26715
26716 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
26717         * threads.c appdomain.c: fix typo in GC macro
26718
26719 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26720
26721         * threads.c: don't call mono_thread_detach() in start_wrapper(),
26722         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
26723
26724 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
26725
26726         * image.c (mono_image_close): Applied patch from 
26727         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
26728         assembly is loaded multiple times from data.
26729         
26730         * image.c (mono_image_open): Fix warning.
26731
26732 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26733
26734         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
26735         once. Fixes #58334.
26736         
26737         * reflection.c (mono_reflection_create_runtime_class): Initialize
26738         klass->nested_classes. Fixes #61224.
26739
26740 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
26741
26742         * threads.c: sched_yield() on exit, to allow threads to quit.
26743
26744 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26745
26746         * object.c (mono_unhandled_exception): Remove leftover debug code.
26747
26748 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
26749
26750         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
26751
26752 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
26753
26754         * marshal.c (emit_marshal_array): Really null terminate string arrays.
26755         
26756         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
26757
26758 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26759
26760         * marshal.c (emit_marshal_array): Null terminate string arrays.
26761         
26762         * marshal.c (raise_auto_layout_exception): Fix warning.
26763
26764         * reflection.c (mono_param_get_objects): Initialize the default value
26765         with DBNull.Value, not null. Fixes #62123.
26766
26767 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
26768
26769         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
26770         throw an exception with a cute explanation.
26771
26772 2004-09-06  Dick Porter  <dick@ximian.com>
26773
26774         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
26775         Close the new process's thread handle, as we don't use it.  The
26776         handle stays around forever otherwise.
26777
26778 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26779
26780         * object.c (arith_overflow): Fix warning.
26781
26782         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
26783         calling conventions in method refs. Fixes #65352.
26784
26785         * reflection.c: Fix warnings.
26786
26787 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26788
26789         * icall.c: Add a new icall for Array.Clear
26790
26791 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
26792
26793         * object.c: When allocating an array, we have to throw
26794         an overflow exception if any of the lengths are < 0.
26795
26796 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
26797
26798         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
26799         properly. Also move implementation of string array marshalling to 
26800         managed code. Fixes #42316.
26801
26802 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26803
26804         * assembly.c: provide more information when loading an assembly fails.
26805
26806 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
26807
26808         * filewatcher.c: don't expect the development fam package to be
26809         installed.
26810
26811 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
26812
26813         * marshal.c: Make a copy of the signature cookie since it will be
26814         freed by the caller.
26815         
26816         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
26817
26818         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
26819
26820         * metadata.c (mono_metadata_free_marshal_spec): New function to free
26821         marshal specs.
26822
26823         * marshal.c: More refactoring.
26824         
26825         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
26826         smaller functions.
26827
26828 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
26829
26830         * object.c: In mono_message_invoke, fill the output parameter array after
26831           calling the managed method (it was done before the call). This fixes
26832           bug #59299.
26833
26834 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26835
26836         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
26837         as well.
26838
26839 2004-09-02  Martin Baulig  <martin@ximian.com>
26840
26841         * class.c (mono_class_instance_size): Don't allow generic type
26842         definitions or open generic instances.
26843         (mono_class_array_element_size): If we're a value type, call
26844         mono_class_instance_size() on the original class.
26845
26846         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
26847         handle generic instances.
26848
26849         * mono-debug-debugger.c (write_type): Handle generic instances
26850         like classes.
26851
26852 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
26853
26854         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
26855         the allocation request fails. Fixes #65089.
26856
26857         * object.c (mono_runtime_free_method): Do not call mono_free_method.
26858         
26859         * object.c (mono_runtime_free_method): New function to free a dynamic
26860         method.
26861
26862         * marshal.c (mono_delegate_free_ftnptr): New function to free the
26863         delegate trampoline.
26864
26865         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
26866         with hasthis as dynamic,
26867
26868         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
26869
26870         * domain.c (mono_jit_info_table_remove): New function to remove an
26871         entry from the jit info table.
26872
26873         * class-internals.h (MonoMethod): Add 'dynamic' field.
26874
26875         * loader.c: Fix warnings.
26876
26877 2004-09-01  Martin Baulig  <martin@ximian.com>
26878
26879         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
26880         instead of mono_debugger_lock() because the latter one is a no-op
26881         unless running in the debugger.
26882
26883 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26884
26885         * class.c (class_compute_field_layout): Classes with auto-layout or
26886         reference fields are not blittable.
26887         
26888 2004-09-01  Dick Porter  <dick@ximian.com>
26889
26890         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
26891         mono_image_get_filename() to get the assembly location.
26892
26893         * icall.c:
26894         * metadata.h: Fix compile warnings
26895
26896 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
26897
26898         * class.c (class_compute_field_layout): System.Object is blittable.
26899
26900         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
26901         as in/out. Fixes #59909.
26902
26903 2004-09-01  Martin Baulig  <martin@ximian.com>
26904
26905         * metadata.h (MONO_TYPE_ISREFERENCE): Call
26906         mono_metadata_generic_inst_is_valuetype() if we're a generic
26907         instance to check whether our underlying type is a reference type.
26908
26909 2004-09-01  Martin Baulig  <martin@ximian.com>
26910
26911         * metadata.c (mono_type_size): If we're a generic instance, call
26912         mono_class_value_size() for value types.
26913
26914 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
26915
26916         * marshal.c: Implement more custom marshalling functionality. Fixes
26917         #64915.
26918
26919 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
26920
26921         * mono-debug.c, debug-mono-symfile.c: add some locking love.
26922
26923 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
26924
26925         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
26926
26927         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
26928
26929         * icall.c: Fix some warnings.
26930
26931         * threads.c (abort_appdomain_thread): Fix unref errors.
26932         (mono_thread_current): Fix THREAD_DEBUG define.
26933
26934 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
26935
26936         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
26937
26938         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
26939
26940 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
26941
26942         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
26943         string arrays.
26944
26945 2004-08-28  Martin Baulig  <martin@ximian.com>
26946
26947         * metadata.c
26948         (mono_metadata_generic_inst_is_valuetype): New public function.
26949
26950         * metadata.h (MONO_TYPE_ISSTRUCT): Call
26951         mono_metadata_generic_inst_is_valuetype() if we're a generic
26952         instance to check whether our underlying type is a valuetype.
26953
26954 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
26955
26956         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
26957         #63768.
26958
26959 2004-08-25  Martin Baulig  <martin@ximian.com>
26960
26961         * loader.c (mono_get_method_from_token): Abstract methods can also
26962         be generic and thus have type parameters.
26963
26964         * metadata-internals.h
26965         (MonoDynamicImage): Added `GPtrArray *gen_params'.
26966
26967         * reflection.c (mono_image_get_generic_param_info): Don't create a
26968         metadata row, just add an entry to the `gen_params' array.
26969         (build_compressed_metadata): Sort the `gen_params' array and then
26970         actually create the metadata.
26971
26972 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26973
26974         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
26975
26976 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
26977
26978         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
26979
26980 2004-08-24  Martin Baulig  <martin@ximian.com>
26981
26982         * class.cs (mono_class_is_subclass_of): Like an interface, a
26983         generic instance also derives from System.Object.
26984
26985 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
26986
26987         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
26988         custom modifiers to be in any order. Fixes #61990.
26989
26990 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
26991
26992         * object.c: Register mono_object_new_fast icall.
26993         
26994         * object.c (mono_class_get_allocation_ftn): Return to calling
26995         mono_object_new_fast, since it seems faster to compute the object 
26996         size in unmanaged code than passing it as a parameter.
26997
26998         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
26999
27000         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
27001         this function with Boehm as the oom handler, so we don't have to check
27002         the result of GC_malloc.
27003
27004         * object.c: Remove checks for oom.
27005
27006         * object.h object.c (mono_class_get_allocation_ftn): New function to
27007         return the icall which can be used to allocate an instance of a given
27008         class. 
27009
27010         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
27011
27012         * class-internals.h: Add 'enabled' field.
27013
27014 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
27015
27016         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
27017
27018 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
27019         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
27020         value 0x0010.
27021
27022 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
27023
27024         * appdomain.c: use the Tls function for appdomain too,
27025         at Zoltan's request. Actually return in mono_context_get
27026
27027         * appdomain.c, profiler.c, threads.c: use __thread
27028
27029 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
27030
27031         * appdomain.c threads.c: Call GC_CreateThread on windows.
27032
27033         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
27034         multiple libraries since this don't work on windows.
27035
27036 2004-08-18  Martin Baulig  <martin@ximian.com>
27037
27038         * class-internals.h
27039         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
27040         MonoMethodHeader.
27041
27042         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
27043         MonoMethodNormal since we also need it for abstract and interface
27044         methods.
27045
27046         * reflection.c
27047         (build_compressed_metadata): Sort the GenericParam table.
27048         (mono_image_create_token): Added `gboolean create_methodspec'
27049         argument; this is false when generating a MethodImpl token.
27050         (reflection_methodbuilder_to_mono_method): Abstract and interface
27051         methods may also have generic parameters.
27052
27053 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
27054
27055         * appdomain.c: thread local alloc
27056
27057 2004-08-17  Martin Baulig  <martin@ximian.com>
27058
27059         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
27060
27061         * icall.c
27062         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
27063         argument.
27064
27065         * class.c (mono_type_get_full_name): New public function.
27066         (mono_type_get_name): Don't include the type arguments.
27067
27068 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
27069
27070         * Makefile.am: Build static versions of libmetadata and libmonoruntime
27071         for inclusion into the mono executable.
27072
27073 2004-08-16  Martin Baulig  <martin@ximian.com>
27074
27075         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
27076         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
27077
27078 2004-08-14  Martin Baulig  <martin@ximian.com>
27079
27080         * class.c (dup_type): Also copy the `byref' field.
27081
27082 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
27083
27084         * reflection.c (create_dynamic_mono_image): Revert the last change 
27085         since it breaks bootstrap.
27086
27087 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
27088
27089         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
27090
27091         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
27092         not free them with g_free.
27093
27094 2004-08-11  Martin Baulig  <martin@ximian.com>
27095
27096         * reflection.c (mono_reflection_setup_internal_class): Also call
27097         mono_class_setup_mono_type() if we already have a `tb->type.type'.
27098
27099 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
27100
27101         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
27102         called during default (first) AppDomain creation. Keep track of
27103         Evidence when loading assemblies.
27104
27105 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27106
27107         * opcodes.c, opcodes.h: reduce runtime relocations.
27108
27109 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
27110
27111         * culture-info.h, locales.c: fixes and chages to sue the new
27112         optimized format of the locale data.
27113         * culture-info-tables.h: regenerated.
27114
27115 2004-08-06  Geoff Norton <gnorton@customerdna.com>
27116         
27117         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
27118
27119 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
27120
27121         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
27122         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
27123         * domain-internals.h: icall declaration.
27124         * icall.c: icall registration.
27125         * object-internals.h: New fields in MonoAssembly for CAS.
27126
27127 2004-08-05  Duncan Mak  <duncan@ximian.com>
27128
27129         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
27130         CEE_LDELEM_ANY.
27131
27132 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27133
27134         * reflection.c: fix to deal with object[] arrays in custom ctors
27135         (bug #62550).
27136
27137 2004-08-05  Martin Baulig  <martin@ximian.com>
27138
27139         * class.c (mono_class_array_element_size): Added support for
27140         generic instances and correctly handle "recursive" types.
27141
27142 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
27143
27144         * assembly.c: Fix warnings.
27145
27146 2004-08-04  Martin Baulig  <martin@ximian.com>
27147
27148         * class.c
27149         (mono_type_get_name_recurse): Added `gboolean include_arity'
27150         argument specifying whether or not we should include the generic
27151         arity in the type name.
27152         (_mono_type_get_name): New static function.
27153         (mono_class_setup_vtable): If we're a generic instance, don't
27154         include the generic arity in the names of explicit method
27155         implementations.        
27156
27157 2004-08-03  Martin Baulig  <martin@ximian.com>
27158
27159         * class.c (mono_type_get_name_recurse): Enclose the generic type
27160         arguments in `<', '>'.
27161
27162 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27163
27164         * gc.c: make GC warning messages use the trace API, they are just
27165         noise to most of the users.
27166
27167 2004-08-03  Martin Baulig  <martin@ximian.com>
27168
27169         * debug-mono-symfile.c (read_string): Correctly read the string.
27170
27171 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
27172
27173         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
27174         
27175         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
27176         icalls.
27177         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
27178
27179 2004-07-30  Martin Baulig  <martin@ximian.com>
27180
27181         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
27182         Reflect latest symbol writer changes.   
27183
27184 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27185
27186         * object.c: always create an object if null is passed
27187         to Invoke() where a valuetype is expected.
27188
27189 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
27190
27191         * marshal.c (mono_marshal_init): make managed
27192         signatures match native ones better for 64bits.
27193
27194 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27195
27196         * appdomain.c: hack to build correctly the private bin path on windows.
27197         Fixes bug #61991.
27198
27199 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
27200
27201         * assembly.c: Load mscorlib from the correct framework directory
27202           (mono/<version>/mscorlib.dll).
27203         * appdomain.h: Added prototypes for new functions.
27204         * internals.h: Added some prototypes.
27205         * domain.c: When initializing the runtime, get from the executable and
27206           the configuration files the runtime version that the app supports.
27207           Added support methods for reading app.exe.config. Added list of versions
27208           supported by the JIT. Added two new methods: mono_init_from_assembly,
27209           which initializes the runtime and determines the required version from
27210           the provided exe file, and mono_init_version, which initializes
27211           the runtime using the provided version.
27212         * icall.c: Get machine.config from version-specific directory.
27213         * reflection.c: When generating an image, embed the version number
27214           of the current runtime.
27215
27216 2004-07-28  Dick Porter  <dick@ximian.com>
27217
27218         * socket-io.c
27219         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
27220         returned sockaddr size before creating the remote address object.
27221         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
27222         61608.
27223
27224 2004-07-28  Dick Porter  <dick@ximian.com>
27225
27226         * locales.c (string_invariant_compare_char): Fix invariant char
27227         compares between upper and lower cases.  Fixes bug 61458.
27228
27229 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
27230         
27231         * marshal.c: actually cache stelem.ref wrappers.
27232         
27233 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
27234
27235         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
27236         sections and remove the mono_cli_rva_map () function.
27237
27238 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27239
27240         * debug-mono-symfile.c: fix one more endianess issue, from a patch
27241         by Geoff Norton (<gnorton@customerdna.com>).
27242
27243 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
27244
27245         * class.c: fix class loads for pointer types (typeof(int) !=
27246         typeof(int*)).
27247
27248 2004-07-27  Martin Baulig  <martin@ximian.com>
27249
27250         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
27251         reading the debugging information from an external ".mdb" file.
27252
27253 2004-07-24  Martin Baulig  <martin@ximian.com>
27254
27255         * reflection.c (mono_image_get_type_info): Only write a class
27256         layout entry if we actually have a size or a packing size.
27257
27258 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27259
27260         * reflection.c (type_get_fully_qualified_name): 
27261         insert cast to get type checking of ?: with non-gcc compilers
27262
27263 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
27264
27265         * rand.c: use g_getenv for both lookups of
27266         MONO_EGD_SOCKET
27267
27268 2004-07-17  Martin Baulig  <martin@ximian.com>
27269
27270         * reflection.c (mono_reflection_bind_generic_method_parameters):
27271         Set `gmethod->reflection_info'.
27272
27273 2004-07-17  Martin Baulig  <martin@ximian.com>
27274
27275         * class.c (mono_class_create_from_typedef): Insert the newly
27276         created class into the hash table before computing the interfaces
27277         since we could be called recursively.
27278
27279 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
27280
27281         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
27282         function to implement stelem.ref in managed code
27283         * class-internals.h, debug-helpers.c: a new wrapper type
27284         for the above.
27285
27286 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
27287
27288         * gc.c: allow GC handles to work even when no GC is compiled in.
27289         Fix part of bug #61134 (GetAddrOfPinnedObject).
27290
27291 2004-07-13  Peter Williams  <peter@newton.cx>
27292  
27293         * process.c (complete_path): Make sure we don't attempt to execute
27294         directories.
27295  
27296 2004-07-12  Geoff Norton <gnorton@customerdna.com>
27297
27298         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
27299           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
27300           and will add/subtract the hour if needed
27301
27302 2004-07-12  Martin Baulig  <martin@ximian.com>
27303
27304         * reflection.c (mono_field_get_object): If we have
27305         `field->generic_info', take the attributes from
27306         `field->generic_info->generic_type'.    
27307
27308 2004-07-12  Martin Baulig  <martin@ximian.com>
27309
27310         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
27311         This function must be called before initializing the runtime.
27312         (mono_debug_init_1): New function; call this after initializing
27313         the runtime, but before loading the assembly.  It tells the
27314         debugger to load corlib and the builtin types.
27315
27316         * mono-debug-debugger.c: Did some larger changes in the debugging
27317         code; support recursive class declarations, make sure we actually
27318         add all classes.
27319
27320 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27321
27322         * debug-helpers.c: undo my previous patch and fixed the real issue in
27323         ../mini/exceptions-x86.c
27324
27325 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27326
27327         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
27328         when no HOME env. variable was set and a NullRef was thrown in a .cctor
27329         called from other .cctors.
27330
27331 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
27332
27333         * loader.c: Removed the mono_loader_wine_init hack now that we are
27334         doing a managed version of Windows.Forms.
27335
27336 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
27337
27338         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
27339         threadpool.c, threads.c: remove static data from rootset.
27340
27341 2004-07-09  Dick Porter  <dick@ximian.com>
27342
27343         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
27344         Don't do any more processing if the matched length was 0.  It was
27345         increasing the size of the string before.  Fixes bug 61167.
27346
27347 2004-07-09  Dick Porter  <dick@ximian.com>
27348
27349         * socket-io.h:
27350         * socket-io.c
27351         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
27352         Add support for SO_PEERCRED if its available.
27353
27354 2004-07-09  Peter Bartok <pbartok@novell.com>
27355         * loader.c: winelib.exe.so error message is now only displayed if
27356         MONO_DEBUG is set. To help us avoid questions when people are trying
27357         out the new Managed.Windows.Forms.
27358
27359 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
27360
27361         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
27362         for isinst and castclass wrappers.
27363
27364         * class-internals.h icall.c: Move registration and lookup of JIT icalls
27365         to libmetadata from the JIT, so they could be used by the marshalling
27366         code and the interpreter.
27367
27368         * marshal.c: Register marshalling related JIT icalls here instead of
27369         in mini.c. Use CEE_MONO_ICALL instead of the family of 
27370         CEE_MONO_PROC<x> opcodes to call marshalling functions.
27371
27372         * metadata.h: Remove unneeded marshalling conversions.
27373
27374         * opcodes.c: Update for new opcodes.
27375         
27376 2004-07-08  Martin Baulig  <martin@ximian.com>
27377
27378         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
27379         (mono_debug_get_domain_data): Make this function static.
27380
27381 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27382
27383         * gc.c, object.h: add nice GC handle API for embedders.
27384
27385 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
27386
27387         * reflection.c: more changes for the new api
27388
27389         * object.c: When we reflect on a field w/ a constant value, it
27390         will not have a memory location, so we must access metadata. Also,
27391         allow easier reading of strings so that we can read them from
27392         the constant data.
27393
27394         * class.c (mono_class_layout_fields): no need for literal fields here.
27395
27396         * class-internals.h: api changes for const fields
27397
27398         * icall.c (ves_icall_get_enum_info): use new apis for const fields
27399
27400 2004-07-06  Martin Baulig  <martin@ximian.com>
27401
27402         * mono-debug.h: Increment version number to 44.
27403
27404         * mono-debug.c (mono_debug_add_wrapper): The second argument is
27405         now a gpointer, rewrote this whole method.
27406
27407         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
27408         function.  Add information about the wrapper in a new "misc table".
27409
27410         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
27411         for the new misc table.
27412
27413 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
27414
27415         * metadata-internals.h image.c: Add a cache for helper signatures.
27416
27417         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
27418
27419 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
27420
27421         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
27422         delegates from a delegate. Fixes #61033.
27423         
27424         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
27425         marshalling of stringbuilder arrays. Fixes #59900.
27426
27427 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
27428
27429         * icall.c: Add EnumBuilder:setup_enum_type icall.
27430
27431 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
27432
27433         * icall.c: Added a new icall for the property version of
27434         OffsetOfStringData.
27435
27436 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
27437
27438         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
27439         it has a constant size across platforms.
27440
27441         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
27442         stack trace.
27443
27444 2004-06-29  Martin Baulig  <martin@ximian.com>
27445
27446         * mono-debug.c (mono_debug_add_method): Protect the whole function
27447         in mono_debugger_lock(), not just parts of it.
27448
27449 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
27450
27451         * reflection.c: make sure padding bytes in heaps are zeroed.
27452
27453 2004-06-24  David Waite  <mass@akuma.org>
27454
27455         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
27456         image.c, loader.c, locales.c, marshal.c, metadata.c,
27457         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
27458         string-icalls.c, threads.c: change to C90-style comments from C99 /
27459         C++ -style
27460
27461 2004-06-24  Dick Porter  <dick@ximian.com>
27462
27463         * threads.c
27464         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
27465         return createdNew.  Fixes bug 60412.
27466
27467         * threads-types.h: 
27468         * icall.c: Add createdNew parameter to CreateMutex icall
27469
27470 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27471
27472         * reflection.c, object-internals.h: save default value in params.
27473
27474 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27475
27476         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
27477         no need to build a new path combining that with the application base.
27478         Fixes bug #60442.
27479
27480 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
27481
27482         * reflection.c: fixed minor standard compliance issues.
27483
27484 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
27485
27486         * reflection.c: fixed issue with encoding some custom attributes
27487         (arrays in properties and fields, bug #60411).
27488
27489 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27490
27491         * reflection.c: fix start address when copying the public key token.
27492
27493 2004-06-23  Martin Baulig  <martin@ximian.com>
27494
27495         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
27496         the `exc' object in a static object to put it into the GC's root set.
27497
27498 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
27499
27500         * reflection.c: make mono_reflection_setup_internal_class ()
27501         callable a second time to setup a new parent class.
27502
27503 2004-06-23  Dick Porter  <dick@ximian.com>
27504
27505         * threads.c: Check for WAIT_IO_COMPLETION return values.
27506
27507 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
27508
27509         * appdomain.c: Removed the g_free on the public key token. Now copy 
27510         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
27511         * assembly.c: Added public key token string value when loading 
27512         assemblies. Fix bug #60439.
27513         * icall.c: Added missing informations (like public key) in 
27514         GetReferencedAssemblies. Fix #60519.
27515         * image.h: Changed definition for public key token from const char*
27516         public_tok_value to guchar public_key_token [17];
27517         * reflection.c: Updated for changes to public key token.
27518
27519 2004-06-22  Lluis Sanchez Gual
27520
27521         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
27522         for the field in base classes.
27523
27524 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27525
27526         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
27527         mark headers as not supported, they are installed only for use by the
27528         debugger.
27529
27530 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
27531
27532         * *.c, *.h: avoid namespace pollution in public headers.
27533
27534 2004-06-21  Martin Baulig  <martin@ximian.com>
27535
27536         * exception.c (mono_get_exception_security): It's in
27537         "System.Security", not in "System".
27538
27539         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
27540         the exception classes.
27541
27542 2004-06-21  Martin Baulig  <martin@ximian.com>
27543
27544         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
27545         Protect the exception object from being finalized.
27546
27547 2004-06-21  Martin Baulig  <martin@ximian.com>
27548
27549         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
27550         public function.
27551
27552 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
27553
27554         * reflection.c: Load the assembly in mono_reflection_type_from_name,
27555         if it was not loaded before. Fix parts of #60439.
27556
27557 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
27558
27559         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
27560         code that was broken since Ben's change: wrappers are now
27561         dependent on the method signature only again.
27562
27563 2004-06-21  Martin Baulig  <martin@ximian.com>
27564
27565         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
27566         added interface support.
27567
27568 2004-06-21  Martin Baulig  <martin@ximian.com>
27569
27570         * class.c (mono_vtable_get_static_field_data): New public method.
27571
27572 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
27573
27574         * filewatcher.c : Windows build fix to be compliant with API changes.
27575
27576 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27577
27578         * class.h, class.c: more accessors.
27579         * metadata.h, metadata.c: prepare for hiding MonoType and
27580         MonoMethodSignature: people should use the accessors from now on
27581         outside of the tree.
27582
27583 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
27584
27585         * *.c, *.h: more API cleanups.
27586
27587 2004-06-18  Jackson Harper  <jackson@ximian.com>
27588
27589         * assembly.c: Trace loading assemblies.
27590         * loader.c: Trace loading native libraries.
27591         * mono-config.c: Trace loading config files.
27592         
27593 2004-06-18  Dick Porter  <dick@ximian.com>
27594
27595         * locales.c: Tell ICU the lengths of strings, it can cope with
27596         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
27597
27598 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
27599
27600         * image.c: swapped name/filename;
27601
27602 2004-06-18  Martin Baulig  <martin@ximian.com>
27603
27604         * mono-debug-debugger.c (write_class): Write the parent class at
27605         the end of the header.
27606
27607 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
27608
27609         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
27610
27611 2004-06-17  Raja R Harinath  <rharinath@novell.com>
27612
27613         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
27614         (bundle_obj): New conditional define.
27615         (BUILT_SOURCES): Remove.
27616         ($(bundle_srcs)): Make parallel-make safe.
27617         (libmonoruntime_la_LIBADD): Make unconditional.
27618         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
27619         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
27620
27621 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
27622
27623         * culture-info-tables.h: It was inconsistent with the latest
27624           supp info files.
27625
27626 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
27627
27628         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
27629         be loaded.
27630
27631         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
27632         with gcc 2.95.
27633
27634 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
27635
27636         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
27637         cleaned up public header threads.h.
27638
27639 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
27640
27641         * Makefile.am, *.c, *.h: more API cleanups.
27642
27643 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
27644
27645         * Makefile.am: removed monosn from compilation.
27646         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
27647         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
27648         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
27649         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
27650         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
27651         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
27652
27653 2004-06-15  Jackson Harper  <jackson@ximian.com>
27654
27655         * assembly.c: Make locales lower case when searching the GAC for
27656         assemblies. gacutil will always make locales lowercase when
27657         installing so this effectively makes them case insensitive.
27658         
27659 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
27660
27661         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
27662         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
27663           parameter which allows to choose whether the wait can be interrupted or 
27664           not. Also added the method mono_monitor_enter(), which locks the monitor
27665           using an infinite wait and without allowing interruption.
27666           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
27667           interrupted.
27668         * object.h: Added new fields in MonoThread. suspend_event holds the event
27669           used to susped/resume the thread. synch_lock is the lock object to use for
27670           modifying the thread state.
27671         * threads.c: Use the new synch_lock object for locking, instead of "this",
27672           which can generate deadlocks.
27673           Moved thread state change in Thread.Sleep and Thread.Join from managed
27674           to unmanaged code. This avoids a deadlock when the thread was suspended
27675           just after acquiring the thread lock.
27676           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
27677           Implemented Thread.Suspend using an event instead of ThreadSuspend,
27678           which is not fully implemented in the io-layer.
27679         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
27680
27681 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
27682
27683         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
27684         threads-types.h: more API cleanups.
27685
27686 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
27687
27688         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
27689         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
27690         threadpool.c, threads.c: first pass at the exported API cleanup.
27691
27692 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
27693
27694         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
27695
27696 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
27697
27698         * icall.c: added internalGetHome.
27699
27700 2004-06-14  Dick Porter  <dick@ximian.com>
27701
27702         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
27703         possible to return successfully when '.' or '..' were the only
27704         entries in a directory, but were skipped.  The MonoIOStat was not
27705         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
27706         Fixes bug 59574.
27707
27708 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
27709
27710         * reflection.c: make binaries run on .Net 1.1 by default.
27711
27712 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
27713
27714         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
27715
27716 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
27717
27718         * marshal.c: keep track of struct size with explicit layout
27719         (bug #59979).
27720
27721 2004-06-12  Martin Baulig  <martin@ximian.com>
27722
27723         * mono-debug-debugger.c: Comment out a debugging g_message().
27724
27725 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
27726
27727         * reflection.c, reflection.h: do not free custom attrs that are cached.
27728         * icall.c: use braces to make code clearer.
27729
27730 2004-06-11  Martin Baulig  <martin@ximian.com>
27731
27732         * class.h (MonoInflatedField): New type.
27733         (MonoClassField): Replaced `MonoType *generic_type' with
27734         `MonoInflatedField *generic_info'.
27735
27736         * icall.c
27737         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
27738
27739 2004-06-11  Martin Baulig  <martin@ximian.com>
27740
27741         * reflection.c (mono_image_create_method_token): Correctly encode
27742         varargs methods.
27743
27744 2004-06-11  Martin Baulig  <martin@ximian.com>
27745
27746         * metadata.c (mono_metadata_parse_method_signature): When parsing
27747         a MethodDef which has VarArgs, also set sentinelpos if we don't
27748         have any parameters.
27749
27750 2004-06-11  Martin Baulig  <martin@ximian.com>
27751
27752         * verify.c (mono_method_verify): In CEE_CALL, use
27753         mono_method_get_signature() to get the method's signature, unless
27754         we're a PInvoke method.
27755
27756 2004-06-10  Jackson Harper  <jackson@ximian.com>
27757
27758         * assembly.c: Use <path>/lib/mono/gac for the extra paths
27759         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
27760         logical name as the supplied path is just a prefix to the gac not
27761         the direct path to it.
27762         
27763 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
27764
27765         * reflection.c: make the token for a created method match
27766         the token of the MethodBuilder it was created from
27767         (IKVM requires this behaviour now).
27768
27769 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
27770
27771         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
27772         reflection.c, socket-io.c: leak fixes.
27773
27774 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
27775
27776         * icall.c: handle sentinel pos in vararg methods in position different
27777         from 0.
27778
27779 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27780
27781         * culture-info-tables.h: freshly generated.
27782
27783 2004-06-09  Martin Baulig  <martin@ximian.com>
27784
27785         * loader.c (mono_get_method_constrained): Call `mono_class_init
27786         (constrained_class)'.   
27787
27788 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
27789
27790         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
27791         any methods. Fixes #59629.
27792
27793 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27794
27795         * culture-info-tables.h: reflecting locale-builder updates.
27796
27797 2004-06-08  Dick Porter  <dick@ximian.com>
27798
27799         * object.h:
27800         * locales.c: Fixed compile warnings, including a real bug in
27801         CompareInfo_internal_compare.
27802         
27803 2004-06-08  Dick Porter  <dick@ximian.com>
27804
27805         * locales.c
27806         (ves_icall_System_Globalization_CompareInfo_internal_index):
27807         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27808         Double-check the resuls of usearches, because ICU currently
27809         ignores most of the collator settings here.  Fixes bug 59720.
27810         
27811 2004-06-08  Dick Porter  <dick@ximian.com>
27812
27813         * locales.c
27814         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
27815         Fix memory leak and segfault-causing typo.  No idea how this one
27816         lasted so long without being noticed.
27817
27818 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
27819
27820         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
27821         any methods. Fixes #59629.
27822
27823 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27824
27825         * assembly.c:
27826         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
27827         own the critical section before). Removed dead code (that's done
27828         in the preload hook).
27829
27830         (mono_assembly_load_with_partial_name): call the preload hook.
27831
27832 2004-06-08  Martin Baulig  <martin@ximian.com>
27833
27834         * metadata.c (mono_metadata_signature_alloc): Default
27835         `sentinelpos' to -1.
27836
27837         * reflection.c (mono_image_get_array_token): Likewise.
27838
27839 2004-06-08  Martin Baulig  <martin@ximian.com>
27840
27841         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
27842
27843         * metadata.c (mono_metadata_parse_method_signature): When parsing
27844         a MethodDef which has VarArgs, set sentinelpos.
27845
27846         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
27847         `gint16' since we're using -1 for non-varargs methods.
27848
27849         * reflection.c
27850         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
27851         (method_encode_signature): Added varargs support.
27852         (method_builder_encode_signature): Likewise.
27853         (mono_image_get_varargs_method_token): New static method.
27854         (mono_image_create_method_token): New public method; this is
27855         called via an icall instead of mono_image_create_token() when
27856         calling a varargs method.       
27857
27858 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
27859
27860         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
27861
27862 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27863
27864         * culture-info-tables.h : Reflecting the latest locale-builder that
27865           fixed empty array representation ({} to {0}).
27866
27867 2004-06-07  Jackson Harper  <jackson@ximian.com>
27868
27869         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
27870         looking up extra gac paths. This allows MONO_GAC_PATH to act
27871         exactly like a prefix.
27872         
27873 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27874
27875         * reflection.c (mono_reflection_type_from_name): Make a copy of the
27876         type name before modifying it. Fixes #59405.
27877
27878 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
27879
27880         * culture-info.h: added fields for "all datetime patterns".
27881         * locales.c: (  ves_icall_System_Globalization_CultureInfo
27882           _construct_datetime_format ()): fill xxx_patterns fields.
27883         * object.h: added fields for "all datetime patterns" to
27884           MonoDateTimeFormatInfo.
27885         * culture-info-tables.h: reflecting locale-builder updates.
27886
27887 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
27888
27889         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
27890         the event has no add and remove methods. Fixes #59629.
27891
27892 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
27893
27894         * object.c: Fixed possible integer overflow when allocating large
27895         strings.
27896
27897 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27898
27899         * culture-info-tables.h: reflecting locale-builder updates.
27900
27901 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
27902
27903         * culture-info-tables.h: reflecting locale-builder updates.
27904
27905 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
27906
27907         * culture-info-tables.h: reflecting locale-builder updates.
27908
27909 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
27910
27911         * threads.c: Made Thread.Sleep abortable.
27912
27913 2004-06-02  Martin Baulig  <martin@ximian.com>
27914
27915         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
27916
27917         * debug-mono-symfile.h: Bumped symbol file version number to 37.
27918
27919 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
27920
27921         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
27922
27923 2004-05-30  Jackson Harper  <jackson@ximian.com>
27924
27925         * reflection.c: Do not hardcode assembly versions or public key
27926         tokens anymore. All of this except the corlib section was dead
27927         code anyways.
27928         
27929 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
27930
27931         * object.c (mono_runtime_invoke_array): Automatically create boxed
27932         objects for byref valuetypes if needed. Fixes #59300.
27933         
27934         * object.c (mono_method_return_message_restore): Handle 
27935         MONO_TYPE_OBJECT as well.
27936
27937 2004-05-28  Jackson Harper  <jackson@ximian.com>
27938
27939         * reflection.c: The modified type encoding was causing build
27940         problems. Reverted for now.
27941         
27942 2004-05-28  Jackson Harper  <jackson@ximian.com>
27943
27944         * reflection.c/h: Take an assembly ref so that we dont create
27945         fully qualified names when encoding types in the same assembly as
27946         the custom attribute being emitted.
27947         * appdomain.c: Increment version number.
27948         
27949 2004-05-26  Duncan Mak  <duncan@ximian.com>
27950
27951         * icall.c
27952         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27953         Set the full version number (major, minor, build, revision).
27954
27955 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
27956
27957         * marshal.c (emit_struct_conv): increment src/dst after blit
27958         (mono_marshal_get_managed_wrapper,
27959         mono_marshal_get_native_wrapper): make sure we have marshalling
27960         info before marshalling params (info computation affects
27961         blittable)
27962
27963         * class.c (class_compute_field_layout): correctly deal with
27964         blittable
27965         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
27966         value types (as per what windows dows by default)
27967         (mono_class_setup_mono_type): System.ValueType is blittable
27968         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
27969         blittable
27970
27971         * marshal.c (mono_marshal_load_type_info): flag types  as
27972         non-blittable if the native layout doesn't match the managed
27973         layout
27974
27975 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27976
27977         * appdomain.c: don't add stuff in the private search path that is
27978         above the application base. If application base is not set, there's
27979         no private search path.
27980
27981 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
27982
27983         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
27984         byref struct arguments in native->managed marshalling.
27985
27986 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
27987
27988         * marshal.c (mono_marshal_get_runtime_invoke): correctly
27989         cache methods using signature (special case for methods
27990         that are value type or string class)
27991         
27992         * image.c (mono_image_close): clean up allocated GSList's
27993         in runtime_invoke_cache.
27994
27995 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27996
27997         * mono-config.c: set the correct path for mono_cfg_dir on windows when
27998         there's no MONO_CFG_DIR environment variable defined.
27999
28000 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28001
28002         * threads.c: windows version must be >= 0x0500 to include OpenThread.
28003
28004 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
28005
28006         * threadpool.c: Really wait for 500ms after the async call, even if the wait
28007           is interrumped.
28008         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
28009           before waiting for it, and call CloseHandle after the wait to unref it.
28010           This will make sure that handles are not disposed too early.
28011
28012 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28013
28014         * appdomain.c:
28015         * appdomain.h:
28016         * icall.c: removed
28017         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
28018         needed now.
28019
28020         * object.c: se the application_base only for the domain that runs
28021         Main. Fixes bug #59216,
28022
28023 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28024
28025         * appdomain.c:
28026         * object.c: only the domain in which Main is run have
28027         SetupInformation.ConfigurationFile set, so moved a few lines from
28028         appdomain.c to object.c.
28029
28030 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28031
28032         * appdomain.c: we tried to load [name].(dll|exe), but according
28033         to bug #57710, we must also try [culture]/[name].(dll|exe) and
28034         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
28035         There's a test case attached to bug #58922.
28036
28037 2004-05-27  Dick Porter  <dick@ximian.com>
28038
28039         * icall.c:
28040         * file-io.c: Implemented icalls for locking and unlocking regions
28041         in a file.
28042         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
28043         FALSE on error (fixes both compiler warning and real bug.)
28044
28045 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
28046
28047         * culture-info-tables.h: reflecting locale-builder updates.
28048
28049           (Added missing ChangeLog entry for 05/26)
28050
28051 2004-05-27  Jackson Harper  <jackson@ximian.com>
28052
28053         * locales.c: Fix some cut and paste errors.
28054         
28055 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28056
28057         * mono-config.c: set the correct path for config. directory on windows.
28058
28059 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28060
28061         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
28062           on win32.
28063
28064 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28065
28066         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
28067         from pinvoke functions.
28068         
28069         * marshal.c (mono_ftnptr_to_delegate): Implement this.
28070
28071 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
28072
28073         * culture-info-tables.h: reflecting locale-builder updates.
28074
28075 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
28076
28077         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
28078         #59086.
28079
28080 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
28081
28082         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
28083         * icall.c: Modified icalls for RNG.
28084         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
28085         Windows (CryptoAPI).
28086
28087 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28088
28089         * locales.c: Fix build.
28090
28091 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
28092
28093         * culture-info-tables.h: reflecting locale-builder updates.
28094
28095 2004-05-25  Jackson Harper  <jackson@ximian.com>
28096
28097         * locales.c: When creating the current culture use the $LANGs
28098         specific culture. So DateTimeFormat and NumberFormat entries are created.
28099         
28100 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
28101
28102         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
28103         a char array as parameter.
28104
28105 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
28106
28107         * image.c: In mono_image_open(), always use an absolute path name to
28108           look for already loaded images.
28109
28110 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
28111
28112         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
28113         missing in the windows build (like older cygwin include files).
28114
28115 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
28116
28117         * icall.c: Fixed check for possible integer overflow in Buffer_
28118         BlockCopy icall. Replaced comments style // by /* */.
28119
28120 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
28121
28122         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
28123         
28124         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
28125         check after MONO_VTADDR. Fixes pinvoke2.exe.
28126
28127         * marshal.h marshal.c metadata.h: Add beginnings of support for
28128         ftnptr -> delegate marshalling.
28129
28130 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
28131
28132         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
28133         * threads.c: Fix warnings.
28134
28135 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
28136
28137         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
28138         * icall.c: Registered icalls for Suspend and Resume.
28139         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
28140           Thread.Abort.
28141         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
28142         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
28143         * process.c: Use WaitForSingleObjectEx.
28144         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
28145           checkpoints.
28146         * threads.c, threads.h: Make use of new Ex wait methods. Improved
28147           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
28148           for Suspend and Resume. Added new mono_thread_stop, used for stoping
28149           background threads. Added basic support for Abort in Windows.
28150           Start new threads using a managed delegate invoke wrapper. This wrapper
28151           has an interruption checkpoint that is needed since an interruption
28152           can be requested before the thread leaves the unmanaged code that starts 
28153           the thread.
28154         * marshal.c: Added interruption checkpoint after every native call, and
28155           also before managed calls for wrappers called from unmanaged code to
28156           go into managed code.
28157         * object.h: Added new field in MonoThread to keep track of interruption
28158           requests.
28159
28160 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
28161
28162         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
28163         calls.
28164
28165 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28166
28167         * appdomain.c:
28168         * assembly.c:
28169         * gc.c:
28170         * locales.c:
28171         * mono-config.c:
28172         * rand.c: getenv -> g_getenv (windows!)
28173
28174         * process.c: complete_path is also used on non-windows platforms.
28175
28176 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28177
28178         * icall.c: new signature for Process_Start.
28179
28180         * process.[ch]: new signature for Process_Start. If we're on windows
28181         and UseShellExecute is false, we have to search for the program by
28182         ourselves if we don't get a full path.
28183
28184 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
28185
28186         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
28187         marshalling and call CleanUpNativeData if needed. Fixes #58646.
28188
28189 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28190
28191         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
28192         Fixes bug #58373.
28193
28194 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28195
28196         * process.c: use double quotes to quote program name and arguments on
28197         windows. Fixes bug #58575.
28198
28199 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28200
28201         * file-io.c: don't return "." and ".." when using windows Find*File.
28202
28203 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
28204
28205         * marshal.c: Don't pass wrappers to message init because method 
28206         addressed used to lookup metadata. part of remoting[2|3] fix.
28207
28208 2004-05-15  Jackson Harper  <jackson@ximian.com>
28209
28210         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
28211         path is essentially the same as MONO_PATH except that it points to
28212         GACs instead of lib directories.
28213         * loader.h: The user gac is gone so we dont need function to
28214         enable/disable it.
28215         * mono-config.c: user gac option is now gone.
28216         
28217 2004-05-15  Jackson Harper  <jackson@ximian.com>
28218
28219         * culture-info.h: Make defines more consistent, add calendar data
28220         to the culture info table.
28221         * culture-info-tables.h: Add basic calendar data. Basically
28222         everyone gets default gregorian until all the data is
28223         updated.
28224         * locales.c: Use the new consistent defines. Set calendar data for
28225         culture info objects.
28226         * object.h: add a field for calendar data to CultureInfo
28227         
28228 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
28229
28230         * image.c: image->runtime_invoke_cache is keyed on signatures now.
28231         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
28232         a signature.
28233         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
28234         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
28235         an extra param that is the pointer of the method to invoke. The IL for
28236         the invoke method is no longer specific to the method, but to the
28237         signature of the method. Thus, we can share the same code for multiple
28238         methods. This reduces the number of methods that have to be compiled.
28239
28240 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
28241
28242         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
28243
28244         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
28245
28246         * icall.c: Optimize Buffer.BlockCopy.
28247
28248 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28249
28250         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
28251         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
28252         quote). Changed them to "MMMM yyyy".
28253
28254 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
28255
28256         * rand.c
28257         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
28258
28259 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
28260
28261         * reflection.h: Updated after changes to managed structures.
28262
28263         * appdomain.c: Bump corlib version.
28264
28265 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28266
28267         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
28268         windows.
28269
28270 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28271
28272         * Makefile.am: link to ../os/libmonoos.la on windows.
28273
28274         * assembly.c:
28275                 -If MONO_DEBUG, warn about non-existing directories in
28276                 MONO_PATH.
28277                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
28278                 compile time variable.
28279                 -Removed init_default_path and call mono_set_rootdir from
28280                 libmonoos.a instead (windows only).
28281
28282         * assembly.h: declare mono_assembly_getrootdir().
28283
28284         * domain.c:
28285         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
28286
28287         * loader.c: s/getenv/g_getenv/
28288
28289 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
28290
28291         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
28292
28293         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
28294
28295         * metadata.h: Add new marshalling conversions.
28296
28297         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
28298         function.
28299
28300         * reflection.c (mono_reflection_get_type): Lookup the type in all
28301         modules of a multi-module assembly. Fixes #58291.
28302
28303 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
28304
28305         * threads.c: Before aborting a background, set the StopRequested
28306         state.  This avoids throwing the Abort exception.
28307         In mono_thread_manage, don't continue with the shutdown until all
28308         aborted threads have actually stopped.
28309
28310 2004-05-10  Jackson Harper  <jackson@ximian.com>
28311
28312         * locales.c: Remove the modifier from culture names.
28313         
28314 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28315
28316         * Makefile.am: monosn is not installed any more. It has been deprecated
28317         in favor of sn.
28318
28319 2004-05-07  Jackson Harper  <jackson@ximian.com>
28320
28321         * locales.c
28322         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
28323         Fix array construction, add bailout if the length is 0.
28324
28325 2004-05-07  Dick Porter  <dick@ximian.com>
28326
28327         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
28328         machine doesn't have a DNS entry.  Patch by Urs Muff
28329         (umuff@quark.com), fixes bug 57928.
28330
28331 2004-05-06  Jackson Harper  <jackson@ximian.com>
28332
28333         * reflection.c: Handle null PublicTokens properly. alloc mem for
28334         assembly names culture so we dont crash when freeing it.
28335         
28336 2004-05-06  Jackson Harper  <jackson@ximian.com>
28337
28338         * assembly.c: Check the usergac when loading with partial names.
28339         
28340 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28341
28342         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
28343         does nothing for now (not required for Linux/Windows) but the class
28344         library can call it (and a newer or modified runtime could need it).
28345         * icall.c: Registred icall.
28346
28347 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28348
28349         * loader.c: prints a message on module loading error we set MONO_DEBUG
28350         environment variable.
28351
28352 2004-05-05  Jackson Harper  <jackson@ximian.com>
28353
28354         * appdomain.c: Handle PublicKeyToken=null properly.
28355         
28356 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
28357
28358         * environment.c|h: Added icall ves_icall_System_Environment_
28359         GetOSVersionString to get the current OS version as a string.
28360         * icall.c: Registred icall.
28361
28362 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
28363
28364         * object.c: in mono_object_get_virtual_method(), take into account that
28365         non-virtual methods don't have a slot in the vtable. Check needed when
28366         the object is a proxy.
28367
28368 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
28369
28370         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
28371         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
28372
28373         * object.c (mono_class_compute_gc_descriptor): Fix warning.
28374
28375         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
28376         passed when a valuetype is expected.
28377
28378         * object.c (mono_unhandled_exception): Only set the exit code if the
28379         exception happens in the main thread. Fixes thread5.exe.
28380
28381         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
28382         invalid names. Fixes #58047.
28383
28384 2004-05-03  Jackson Harper  <jackson@ximian.com>
28385
28386         * assembly.c: This line was committed accidently and is unneeded.
28387         
28388 2004-05-03  Jackson Harper  <jackson@ximian.com>
28389
28390         * icall.c: Add new icall for Assembly::LoadWithPartialName
28391         * assembly.c/.h: new function that probes the GAC to load partial
28392         assembly names by Paolo Molaro.
28393         
28394 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28395
28396         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
28397         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
28398         (type_get_fully_qualified_name): Added PublicKeyToken when building a
28399         full type name.
28400
28401 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28402
28403         * appdomain.c: fixed check for 'neutral' culture and removed warning.
28404         * reflection.c: fix bug when parsing a full type name and Version is not
28405         the last thing in the string.
28406
28407 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
28408
28409         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
28410         crashes when it is freed.
28411
28412 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28413
28414         * assembly.c: print the compat warning to stderr.
28415
28416 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
28417
28418         * assembly.c (mono_assembly_load_references): Add a compatibility
28419         hack to run old applications that might be still referencing the
28420         3300-based assemblies, only do this for System.xxx.
28421
28422 2004-05-01  Jackson Harper  <jackson@ximian.com>
28423
28424         * appdomain.c: If the culture is neutral we set it to "".
28425         
28426 2004-04-29  Jackson Harper  <jackson@ximian.com>
28427
28428         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
28429
28430 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
28431  
28432         * string-icalls.c: added low overhead function for copying chars
28433         * icall.c: added needed icall for the above function
28434  
28435 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28436
28437         * icall.c: fix return value of get_global_assembly_cache.  Implemented
28438         Environment.GetLogicalDrives.
28439
28440 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
28441
28442         * rand.c: try and talk to egd or prngd
28443         for random bytes if opening devices fail.
28444
28445 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
28446
28447         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
28448         alignment for the type using the native alignment of its members 
28449         instead of using klass->min_align.
28450
28451         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
28452
28453 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28454
28455         * file-io.c:
28456         * socket-io.c: added check for sys/aio.h.
28457
28458 2004-04-28  Dick Porter  <dick@ximian.com>
28459
28460         * threads.c: Don't abort a thread thats already aborting, when
28461         terminating everything.
28462
28463 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28464
28465         * icall.c: added 2 new async calls for Socket.
28466
28467         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
28468         IO on *nix systems.
28469
28470         * threadpool.c: removed unused variable.
28471
28472 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
28473
28474         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
28475
28476 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
28477
28478         * locales.c: put back string_invariant_tolower () and
28479         string_invariant_toupper ().
28480
28481 2004-04-26 David Waite <mass@akuma.org>
28482
28483         * file-io.h:
28484         * socket-io.h:
28485         * threads.h:
28486         * unicode.h: remove comma from end of enumeration declarations
28487
28488 2004-04-26 David Waite <mass@akuma.org>
28489
28490         * debug-mono-symfile.h:
28491         * decimal.c:
28492         * mono_debug.h:
28493         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
28494
28495
28496 2004-04-26  Jackson Harper  <jackson@ximian.com>
28497
28498         * appdomain.c: Increment version number.
28499         
28500 2004-04-26  Jackson Harper  <jackson@ximian.com>
28501
28502         * appdomain.c: Set assembly references public token value when
28503         PublicKeyToken is specified, not the hash_value. Free public token
28504         values when free assembly name data. Previously the public key
28505         token was hex decoded, however we are using hex encoded public key
28506         tokens, so this is not neccasary.
28507         * assembly.c: Lookup assemblies in the gac if their public token
28508         value is set. Add function to allow enabling user gac
28509         lookups. Specify whether or not the assembly was loaded from the
28510         GAC. Compare full assembly names when checking the cache for
28511         assemblies (Temporarily disabled see comment in code). Remove
28512         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
28513         specifies trace-loader they get extra info to stdout on the
28514         loading of assemblies.
28515         * image.h: Add a field for an assembly references public token
28516         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
28517         whether an assembly has been loaded from the GAC.
28518         * image.c: Remove a corlib -> mscorlib name mapping.
28519         * loader.h: Add function to enable/disable the user gac.
28520         * mono-config.c: Check if the usergac is enabled in the config
28521         file.
28522         * icall.c: New icall to determine whether or not an assembly has
28523         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
28524         * tabldefs.h: Add constant for assemblyref flag that specifies a
28525         full public key is used instead of a public token.
28526         * reflection.c: Remove mscorlib -> corlib mappings. Set
28527         PublicTokenValue instead of hash value. This value is a hex
28528         string so it does not need to be expanded.
28529
28530 2004-04-26  Martin Baulig  <martin@ximian.com>
28531
28532         * mono-debug-debugger.c (mono_debugger_initialize): Set
28533         `mono_debugger_initialized' before calling mono_debug_lock().
28534
28535 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
28536
28537         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
28538           InternalToUpper/InternalToLower.
28539         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
28540           removed invariant culture shortcut.  This is now done in managed code.
28541         * locales.c: (string_invariant_toupper/tolower) removed.
28542
28543 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28544
28545         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
28546         Added Poll internal call.
28547
28548         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
28549         call for Poll. Select was too heavy for polling a single socket.
28550
28551         * threadpool.[ch]: added mono_threadpool_cleanup.
28552         * threads.c: use it. Don't use Thread_Abort on windows.
28553
28554 2004-04-23  Martin Baulig  <martin@ximian.com>
28555
28556         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
28557
28558 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
28559
28560         * icall.c: Registred new icalls for key pair protection and added an
28561         icall for Environment.GetFolderPath on Windows.
28562         * security.c|h: Added new icalls for key pair protection.
28563
28564 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28565
28566         * socket-io.c: don't display the non-supported family warning for known
28567         families. Now this is not displayed on windows when checking support
28568         for IPv4/IPv6.
28569
28570 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28571
28572         * class.c: don't display the layout warning for static fields.
28573
28574 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
28575
28576         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
28577         * locales.c, locales.h: Added new icalls for culture-specific
28578         Char.ToLower and Char.ToUpper.
28579
28580 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28581
28582         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
28583         by David Waite.
28584
28585 2004-04-20  Martin Baulig  <martin@ximian.com>
28586
28587         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
28588         of the type name before passing it to mono_reflection_type_from_name().
28589
28590 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
28591
28592         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
28593         encodings here. Fixes #56965.
28594
28595 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
28596
28597         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28598         fix test on strstr result not that I can see anything that
28599         relies on the result.
28600
28601 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
28602
28603         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
28604         Fixes #57081.
28605
28606         * marshal.c (mono_marshal_get_string_encoding): New helper function.
28607
28608         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
28609         function to determine which marshalling to use for strings. Fixes
28610         #56965.
28611
28612         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
28613
28614         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
28615
28616 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
28617
28618         * icall.c: #include mono-config.h
28619
28620 2004-04-15  Jackson Harper  <jackson@ximian.com>
28621
28622         * culture-info-tables.h: Fix date formats for en-US culture.
28623         
28624 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
28625
28626         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
28627         ThreadPool.SetMinThreads.
28628         * threadpool.c: Implemented ThreadPool.GetMinThreads and
28629         ThreadPool.SetMinThreads.
28630
28631 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
28632
28633         * mono-config.c: also load the .config file in the directory
28634         where the assembly was found.
28635
28636 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
28637
28638         * assembly.c: load per-assembly config files.
28639         * icall.c: decrapified code to get the config dir and moved to
28640         mono-config.c.
28641         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
28642         per-assembly config files. When doing a dll map lookup give precedence
28643         to the per-assembly data.
28644
28645 2004-04-14  Martin Baulig  <martin@ximian.com>
28646
28647         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
28648         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
28649         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
28650
28651         * mono-debugger-debugger.c: While the debugger is locked, remember
28652         whether the symbol tables have changes and send one single
28653         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
28654
28655 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
28656
28657         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
28658
28659         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
28660         function.
28661
28662         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
28663         account when marshalling string arrays. Fixes #56965.
28664
28665 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
28666
28667         * icall.c: Add new icalls mapping for security.
28668         * security.c|h: Add internal calls for WindowsIdentity,
28669         WindowsImpersonationContext and WindowsPrincipal.
28670
28671 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
28672
28673         * class.c: Added comment to ensure the System.MonoDummy class
28674         is removed when no longer necessary
28675
28676 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
28677
28678         * appdomain.c: Pass arguments to the bootstraping exceptions to
28679         minimize JITed methods at boot
28680
28681         * metadata.c (mono_exception_from_name_two_strings): Allow for the
28682         second string to be null.
28683
28684         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
28685         Change the protocol to minimize the JIT methods at startup.  Now
28686         it Returns the internal codepage, if the value of "int_code_page"
28687         is 1 at entry, and we can not compute a suitable code page
28688         number, returns the code page as a string.
28689
28690 2004-04-13  Jackson Harper  <jackson@ximian.com>
28691
28692         * culture-info-tables.h: Fix number of decimal digits for all
28693         english locales.
28694
28695 2004-04-13  Jackson Harper  <jackson@ximian.com>
28696
28697         * icall.c: Clairfy out of sync error message. It is not always
28698         your corlib that is out of sync.
28699
28700 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
28701
28702         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
28703         properties when only the set accessor is overriden. Fixes #55874.
28704
28705 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
28706
28707         * assembly.c (mono_assembly_load_references): Make this thread safe.
28708         Fixes #56327.
28709
28710 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
28711
28712         * monosn.c: Add missing initialization calls.
28713
28714 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
28715
28716         * locales.c:
28717         ves_icall_System_Globalization_CultureInfo_construct_number_format
28718         Fix g_assert so it compiles on fussier compilers re int/ptr
28719         mismatch
28720
28721 2004-04-08  Dick Porter  <dick@ximian.com>
28722
28723         * socket-io.h:
28724         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
28725         53992.  Also rearrange the code so that the internal calls return
28726         an error value and exceptions are thrown from managed code.
28727
28728         * icall.c: Add type info to the socket icalls.
28729
28730 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28731
28732         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
28733         owes me a beer.
28734
28735 2004-04-07  Martin Baulig  <martin@ximian.com>
28736
28737         * class.c (mono_class_from_generic_parameter): Don't default
28738         `klass->parent' to `mono_defaults.object_type'.
28739
28740 2004-04-07  Martin Baulig  <martin@ximian.com>
28741
28742         * reflection.c (mono_reflection_initialize_generic_parameter): Set
28743         `param->pklass->reflection_info'.       
28744
28745 2004-04-07  Jackson Harper  <jackson@ximian.com>
28746
28747         * culture-info-tables.h: Fix date separator symbol.
28748         
28749 2004-04-07  Martin Baulig  <martin@ximian.com>
28750
28751         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
28752         from System.Type to System.MonoType.
28753
28754 2004-04-07  Martin Baulig  <martin@ximian.com>
28755
28756         * reflection.h
28757         (MonoReflectionGenericParam): Added `has_reference_type' and
28758         `has_value_type' fields.
28759
28760         * reflection.c (mono_image_get_generic_param_info): Encode the
28761         correct flags if we have the `class' or `struct' constraint.
28762
28763 2004-04-07  Martin Baulig  <martin@ximian.com>
28764
28765         * reflection.h
28766         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
28767
28768 2004-04-07  Jackson Harper  <jackson@ximian.com>
28769
28770         * appdomain.c: Revert extra patches, just wanted to bump the
28771         version number.
28772         
28773 2004-04-07  Jackson Harper  <jackson@ximian.com>
28774
28775         * Makefile.am: Add culture-info private headers.
28776         * icall.c: Add new icalls for contructing locales.
28777         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
28778         * locales.h: Declare new culture info construction methods.
28779         * object.h: Add new fields used to avoid the CultureMap to
28780         MonoCultureInfo.
28781         * culture-info.h: Definition of structs used in the culture info
28782         tables.
28783         * culture-info-tables.h: Autogenerated tables that contain culture
28784         info data. This file was generated with the locale-builder tool.
28785         * appdomain.c: Incement corlib version number.
28786         
28787 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
28788
28789         * appdomain.c: (mono_runtime_init) move mono_thread_init
28790         to before mono_object_new calls so critical sections
28791         are initialized before use.
28792
28793 2004-04-07  Martin Baulig  <martin@ximian.com>
28794
28795         * icall.c
28796         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
28797         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
28798         (ves_icall_MonoGenericParam_initialize): Removed.
28799         (monogenericparam_icalls): Removed.
28800         (generictypeparambuilder_icalls): Added new table for
28801         System.Reflection.Emit.GenericTypeParameterBuilder.
28802
28803         * reflection.c
28804         (mono_reflection_define_generic_parameter): Removed.
28805         (mono_reflection_initialize_generic_parameter): This is now called
28806         from GenericTypeParameterBuilder's .ctor.
28807
28808 2004-04-06  Martin Baulig  <martin@ximian.com>
28809
28810         * class.c (mono_class_init): Don't inflate nested classes in a
28811         generic instance.
28812         (mono_type_get_name_recurse): Include the generic arguments for
28813         generic instances and generic type declarations.
28814         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
28815         (_mono_class_get_instantiation_name): Removed.
28816         (mono_class_create_generic): Always use `gklass->name' as our name.
28817
28818         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
28819
28820         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
28821         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
28822         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
28823         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
28824         closed generic methods here.
28825
28826         * reflection.c
28827         (mono_reflection_generic_inst_get_nested_types): Removed.
28828         (inflate_mono_method): Copy the generic parameters from the
28829         MonoMethodHeader into out MonoGenericMethod.
28830
28831 2004-04-06  Martin Baulig  <martin@ximian.com>
28832
28833         * row-indexes.h
28834         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
28835
28836         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
28837
28838         * reflection.c (build_compressed_metadata): If we have any entries
28839         in the GenericParam, MethodSpec or GenericParamConstraint tables,
28840         set the header version to 1.1.
28841
28842 2004-04-06  Martin Baulig  <martin@ximian.com>
28843
28844         * class.c (mono_class_init): If we're a generic instance,
28845         initialize our nested classes, too.
28846         (_mono_class_get_instantiation_name): Deal with the new `!%d'
28847         suffix. 
28848
28849 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28850
28851         * process.c: quote the argument passed to the shell on windows.
28852
28853 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
28854
28855         * threads.c (mono_alloc_special_static_data): Allow this to be
28856         called during startup.
28857
28858 2004-04-02  Martin Baulig  <martin@ximian.com>
28859
28860         * icall.c
28861         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
28862
28863 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
28864
28865         * icall.c: Fix build.
28866
28867 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
28868
28869         * Makefile.am: Added security.c|h.
28870         * icall.c: Added icall for get_UserName;
28871         * security.c: New file for security related icalls. Added function
28872         get_UserName for System.Environment (fix #56144).
28873         * security.h: New. Header file for security.c
28874
28875 2004-04-02  Dick Porter  <dick@ximian.com>
28876
28877         * icall.c: Deleted the icalls that were obsoleted some time ago
28878         by the ICU string code, and which were mixed into the icall
28879         rearranging.  Fixes bug 55969.
28880
28881         * string-icalls.h: 
28882         * string-icalls.c: Deleted the code that those icalls reference.
28883
28884 2004-04-01  Martin Baulig  <martin@ximian.com>
28885
28886         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
28887
28888         * class.c (mono_class_from_generic_parameter): Don't set 
28889         TYPE_ATTRIBUTE_INTERFACE.
28890         (my_mono_class_from_generic_parameter): Likewise.
28891
28892 2004-04-01  Martin Baulig  <martin@ximian.com>
28893
28894         * loader.c (find_method): Added an optional `MonoClass *ic'
28895         argument to search in a specific interface.
28896         (mono_get_method_constrained): New public function.
28897
28898 2004-04-01  Martin Baulig  <martin@ximian.com>
28899
28900         * reflection.c (mono_image_get_generic_field_token): Use the
28901         `handleref' cache here.
28902
28903 2004-04-01  Martin Baulig  <martin@ximian.com>
28904
28905         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
28906
28907         * reflection.c (create_generic_typespec): Use the `typespec' hash
28908         here, not the `typeref' one.    
28909
28910 2004-04-01  Martin Baulig  <martin@ximian.com>
28911
28912         * class.c (mono_class_inflate_generic_type): Moved the
28913         functionality into a new static inflate_generic_type() which
28914         returns NULL if it didn't do anything.  Only increment the
28915         `mono_stats.inflated_type_count' if we actually inflated
28916         something.
28917         (mono_class_get_full): Check the classes type to see whether we
28918         need to inflate it; also inflate MONO_TYPE_(M)VAR.
28919
28920 2004-04-01  Jackson Harper  <jackson@ximian.com>
28921
28922         * reflection.c: Set culture for assembly references.
28923         
28924 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
28925
28926         * reflection.[ch], icall.[ch], Fix support for pinning variables.
28927
28928 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28929
28930         * assembly.c:
28931         (do_mono_assembly_open): the critical section also covers
28932         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
28933
28934 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28935
28936         * threads.c:
28937         (mono_manage_threads): abort the background threads when finishing.
28938         Fixes bug #47232.
28939
28940 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28941
28942         * gc.c: only close the done_event handle if there was no timeout.
28943         C-ified comments.
28944
28945 2004-03-30  Martin Baulig  <martin@ximian.com>
28946
28947         * icall.c (icall_entries): It's called "System.Activator", not
28948         "System.Activation".    
28949
28950 2004-03-30  Martin Baulig  <martin@ximian.com>
28951
28952         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
28953         (mono_class_create_from_typespec): Likewise.
28954
28955 2004-03-30  Martin Baulig  <martin@ximian.com>
28956
28957         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
28958         `has_ctor_constraint' and `initialized'.
28959
28960 2004-03-30  Martin Baulig  <martin@ximian.com>
28961
28962         * reflection.c (encode_new_constraint): New static function to add
28963         the constructor constraint attribute to a type parameter.
28964         (encode_constraints): Call encode_new_constraint() if necessary.
28965
28966         * reflection.h
28967         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
28968
28969         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
28970         
28971 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
28972
28973         * reflection.c, icall.c: add support for pinning variables. 
28974
28975 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
28976
28977         * marshal.c (mono_marshal_get_managed_wrapper):
28978         init bool local with zero rather than null.
28979
28980 2004-03-29  Martin Baulig  <martin@ximian.com>
28981
28982         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
28983         the "official" behavior here.
28984         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
28985
28986 2004-03-29  Martin Baulig  <martin@ximian.com>
28987
28988         * icall.c: Reflect latest API changes.
28989
28990 2004-03-29  Martin Baulig  <martin@ximian.com>
28991
28992         * loader.c (mono_get_method_from_token): Also call
28993         mono_metadata_load_generic_params () for abstract and interface
28994         methods; replace the type arguments in the method signature with
28995         the ones which are loaded from the metadata.
28996
28997 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
28998
28999         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
29000         of the lock is not the current thread. MS.NET don't do it, in spite of
29001         what the documentation says. See bug #56157.
29002
29003 2004-03-28  Martin Baulig  <martin@ximian.com>
29004
29005         * class.c (mono_class_init): Don't call init_properties() and
29006         init_events() for generic instances; set `prop->parent' when
29007         inflating properties.
29008
29009         * reflection.c (mono_generic_inst_get_object): Call
29010         `mono_class_init (ginst->klass)'.
29011         (mono_type_get_object): Only create a MonoGenericInst if your
29012         generic type is a TypeBuilder.
29013         (do_mono_reflection_bind_generic_parameters): Only set
29014         `ginst->is_dynamic' if our generic type is a TypeBuilder.
29015
29016 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
29017
29018         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
29019         Fixes #56091.
29020
29021 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29022
29023         * icall.c: added Kill_internal icall.
29024         * process.[ch]: added Kill_internal icall.
29025
29026 2004-03-25  Martin Baulig  <martin@ximian.com>
29027
29028         * class.h (MonoStats): Added `generic_instance_count',
29029         `inflated_method_count', `inflated_type_count' and
29030         `generics_metadata_size'.       
29031
29032 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29033
29034         * reflection.c: no warnings now.
29035
29036 2004-03-25  Martin Baulig  <martin@ximian.com>
29037
29038         * class.c (mono_class_get_full): New public function; does a
29039         mono_class_get(), but also takes a `MonoGenericContext *'.
29040
29041         * loader.c (mono_field_from_memberref): Renamed to
29042         `field_from_memberref', made static and added `MonoGenericContext *'
29043         argument.
29044         (mono_field_from_token): Added `MonoGenericInst *' argument.
29045         (method_from_memberef): Likewise.
29046         (mono_get_method_from_token): Likewise.
29047         (mono_get_method_full): New public function; does a
29048         mono_get_method(), but also takes a `MonoGenericContext *'.
29049
29050         * verify.c (mono_method_verify): Get the method's generic context
29051         and pass it to mono_field_from_token(), mono_get_method_full() and
29052         mono_class_get_full().
29053
29054 2004-03-25  Martin Baulig  <martin@ximian.com>
29055
29056         * class.c (mono_class_inflate_generic_type): Take a
29057         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
29058         `MonoGenericMethod *'.
29059
29060 2004-03-25  Martin Baulig  <martin@ximian.com>
29061
29062         * loader.h (MonoMethodInflated): Store the MonoGenericContext
29063         instead of the MonoGenericMethod here.
29064
29065 2004-03-25  Martin Baulig  <martin@ximian.com>
29066
29067         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
29068         each time we create a new MonoGenericInst, we also create a new
29069         context which points back to us.
29070
29071         * class.c (inflate_method): Use `ginst->context' instead of
29072         creating a new context.
29073
29074         * loader.c (method_from_memberref): Use
29075         `klass->generic_inst->context' instead of creating a new context.
29076
29077 2004-03-25  Martin Baulig  <martin@ximian.com>
29078
29079         * class.h (MonoGenericContext): New struct.
29080         (MonoGenericMethod): Removed `generic_inst'.
29081
29082         * class.c (mono_class_inflate_generic_method): Take a
29083         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
29084
29085 2004-03-25  Martin Baulig  <martin@ximian.com>
29086
29087         * loader.h (MonoMethodInflated): New typedef.
29088
29089         * metadata.h (MonoMethodSignature): Removed `gen_method', make
29090         `generic_param_count' consume just 30 bits, added `is_inflated'
29091         and `has_type_parameters' flags (one bit each).
29092
29093         * class.c (mono_class_inflate_generic_method): Create a
29094         MonoMethodInflated instead of a MonoMethodNormal and set
29095         `is_inflated' in the method signature.
29096
29097         * class.h (MonoGenericMethod): Removed `generic_method'.
29098
29099 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
29100
29101         * image.c: Make sure the name of a MonoImage is always an absolute path.
29102           This fixes bug #54415.
29103
29104 2004-03-24  Martin Baulig  <martin@ximian.com>
29105
29106         * class.c (mono_class_setup_vtable): If we're a generic instance,
29107         use our generic type's vtable size.
29108
29109 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
29110
29111         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
29112         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
29113         problems.
29114
29115 2004-03-23  Martin Baulig  <martin@ximian.com>
29116
29117         * class.h (MonoDynamicGenericInst): Added `int count_events' and
29118         `MonoEvent *events'.
29119
29120         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
29121         (typebuilder_icalls): Added "get_event_info"; calls
29122         mono_reflection_event_builder_get_event_info(). 
29123
29124         * reflection.c (mono_reflection_generic_inst_initialize): Added
29125         `MonoArray *events'.
29126         (mono_reflection_event_builder_get_event_info): New function.
29127
29128 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
29129
29130         * object.h: add mono_type_initialization_init
29131
29132         * object.c (mono_runtime_class_init): 
29133         implement class constructor synchronization rules
29134         to cope with threading issues.  
29135         add mono_type_initialization_init
29136
29137         * appdomain.c (mono_runtime_init): call 
29138         mono_type_initialization_init
29139
29140         * class.h: removing initializing field from MonoVTable
29141
29142 2004-03-23  Martin Baulig  <martin@ximian.com>
29143
29144         * class.c (my_mono_class_from_generic_parameter): Use
29145         `param->name' if it's not NULL. 
29146
29147 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
29148
29149         * class.c: do not insert non-virtual methods in the vtable.
29150         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
29151         that means the method is non-virtual. This never would have
29152         happened before.
29153
29154 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
29155
29156         * profiler.c: Added lock for accessing coverage_hash.
29157
29158 2004-03-22  Martin Baulig  <martin@ximian.com>
29159
29160         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
29161         `method->method->signature->generic_param_count != 0' to make it
29162         work for interface methods.
29163
29164 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29165
29166         * process.c: quote the string passed to the shell using g_shell_quote.
29167
29168 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29169
29170         * threads.c:
29171         (mono_threads_manage): don't remove the finalizer thread and self
29172         from the threads hash table so that mono_thread_manage can be called
29173         more than once.
29174
29175 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29176
29177         * process.c: quote the arguments when UseShellExecute is true. Fixes
29178         bug #55790.
29179
29180 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29181
29182         * threads.c: set mono_thread_detach as a cleanup routine for every
29183         thread. This way it's always executed upon thread termination, either
29184         aborted or finished normally. No more xsp hangs!
29185
29186 2004-03-17  Martin Baulig  <martin@ximian.com>
29187
29188         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
29189         `int count_nested' and a `MonoType **nested'.
29190
29191         * reflection.c (mono_reflection_bind_generic_parameters): Moved
29192         most of the functionality into a new static
29193         do_mono_reflection_bind_generic_parameters() and don't take a
29194         `MonoType *nested_in' argument any more.  Don't compute nested
29195         types here.
29196         (mono_reflection_generic_inst_get_nested_types): New public method
29197         to get nested types.
29198
29199         * class.c (mono_class_create_generic): Set `klass->nested_in' if
29200         we're a nested class.
29201
29202         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
29203         mono_reflection_generic_inst_get_nested_types() to compute the
29204         nested types.
29205
29206 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29207
29208         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
29209         descriptive error message under windows.
29210         
29211 2004-03-17  Martin Baulig  <martin@ximian.com>
29212
29213         * class.c (dup_type): Added `const MonoType *original' argument;
29214         copy the attrs from the original type.
29215
29216 2004-03-17  Martin Baulig  <martin@ximian.com>
29217
29218         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
29219         `m->generic_inst_cache' here.
29220
29221 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
29222
29223         * exception.h exception.c: Add stack_overflow_exception.
29224
29225 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29226
29227         * threadpool.c:
29228         (overlapped_callback): call SetEvent *after* invoking the callback.
29229         No need to call CloseHandle.
29230
29231 2004-03-16  Martin Baulig  <martin@ximian.com>
29232
29233         * reflection.c (mono_image_get_fieldref_token): Take a
29234         `MonoReflectionField *' instead of a `MonoClassField *' and a
29235         `MonoClass *'; store the `MonoReflectionField *' in the hash.
29236
29237 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29238
29239         * appdomain.c: don't add the culture to the filename we're looking for
29240         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
29241
29242 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29243
29244         * locales.c: don't ignore symbols when doing case insensitive compares.
29245         Thanks Dick! Fixes bug #54046.
29246
29247         * threads.c: surround 'threads' usage with enter/leave in
29248         mono_thread_manage.
29249
29250 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
29251
29252         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
29253         implicitly marshalled as [Out]. Fixes #55450.
29254
29255         (mono_marshal_get_runtime_invoke): Zero out the result if there is
29256         an exception.
29257
29258 2004-03-16  Martin Baulig  <martin@ximian.com>
29259
29260         * class.c (mono_class_from_generic_parameter): Use the actual
29261         parameter name. 
29262
29263 2004-03-16  Martin Baulig  <martin@ximian.com>
29264
29265         * reflection.c (type_get_signature_size): New static function.
29266         Compues the size of the type in a method signature.
29267         (method_get_signature_size): New static function; calls
29268         type_get_signature_size() to compute the actual size of the
29269         method's signature.
29270         (method_encode_signature): Use method_get_signature_size() to get
29271         the signature's size rather than using `nparams * 10'.
29272
29273 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29274
29275         * file-io.h: define here WapiOverlapped on windows. I don't want the
29276         regular OVERLAPPED one.
29277
29278         * file-io.c:
29279         * threadpool.c: somehow, BindIoCompletionCallback is not found.
29280         Disabling AIO on windows.
29281
29282 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29283
29284         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
29285         bug #55385.
29286
29287 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29288
29289         * appdomain.c: upgraded corlib version.
29290
29291         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
29292         and BeginWrite. Allow opening files for asynchrnous operations.
29293
29294         * file-io.h: new struct that maps FileStreamAsyncResult.
29295         * icall.c: added new icalls.
29296         * process.[ch]: support setting child process environment variables
29297         and use the SHELL or COMSPEC when UseShellExecute is true.
29298
29299         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
29300         callback for async. IO is here and also BindHandle.
29301
29302         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
29303         from here.
29304
29305 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
29306
29307         * reflection.c (create_custom_attr): Allow len == 0.
29308
29309         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
29310         computation on big-endian machines.
29311
29312 2004-03-13  Martin Baulig  <martin@ximian.com>
29313
29314         * class.h (MonoGenericInst): Added `int count_ifaces'.
29315
29316         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
29317         `ginst->count_ifaces' instead `klass->interface_count' since we
29318         may get called before the vtable is created.
29319
29320         * loader.c (mono_method_get_param_names): If we're a generic
29321         instance, return and don't initialize the class.
29322
29323         * reflection.c (mono_reflection_setup_generic_class): Don't call
29324         ensure_runtime_vtable().
29325         (mono_reflection_bind_generic_parameters): Set
29326         `ginst->count_ifaces'.
29327
29328 2004-03-11  Jackson Harper <jackson@ximian.com>
29329
29330         * icall.c:
29331         * unicode.c:
29332         * unicode.h: Remove unused System.Char icalls.
29333         
29334 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
29335
29336         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
29337         code when we P/Invoke the first library in Windows.Forms, instead
29338         of when we first open the assembly.
29339
29340         * assembly.c: Drop the lookup from here.
29341
29342 2004-03-10  Martin Baulig  <martin@ximian.com>
29343
29344         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
29345         class for properties, fields and events.  Finally fixes #54945.
29346
29347 2004-03-10  Martin Baulig  <martin@ximian.com>
29348
29349         * metadata.c (mono_metadata_class_equal): New static function;
29350         checks whether two generic instances or two generic parameters are
29351         equal.
29352         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
29353         compare classes.        
29354
29355 2004-03-10  Martin Baulig  <martin@ximian.com>
29356
29357         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
29358
29359         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
29360         argument and write it into the `reflection_info' field.
29361
29362         * icall.c
29363         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
29364         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
29365
29366 2004-03-09  Jackson Harper  <jackson@ximian.com>
29367
29368         * char-conversions.h: use 8 bits for numeric data its all we need
29369         * icall.c: numeric data is only 8 bits now.
29370
29371 2004-03-09  Martin Baulig  <martin@ximian.com>
29372
29373         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
29374
29375         * class.c (init_properties, init_events): Initialize the new
29376         `parent' field.
29377
29378         * reflection.c (typebuilder_setup_properties): Likewise.
29379         (typebuilder_setup_events): Likewise.
29380
29381         * reflection.h (MonoEventInfo): Replaced `parent with
29382         `declaring_type' and `reflected_type'.
29383
29384         * icall.c (ves_icall_get_property_info): Distinguish between
29385         declaring and reflected type.
29386         (ves_icall_get_event_info): Likewise.
29387
29388 2004-03-09  Martin Baulig  <martin@ximian.com>
29389
29390         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
29391         (ves_icall_Type_GetField): Correctly set field->klass.
29392
29393 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
29394
29395         * loader.h: Fix warning.
29396
29397 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
29398
29399         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
29400         library routine if present.  Notice that it will still continue
29401         executing even if its missing, for those working on the Gtk#
29402         edition of Windows.Forms.
29403
29404         * assembly.c (do_mono_assembly_open): If loading the
29405         System.Windows.Forms call mono_loader_wini_init.
29406
29407 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
29408
29409         * class.h: Added MonoRemoteClass struct.
29410         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
29411         function for MonoStrings.
29412         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
29413         Added internal call for getting the proxy type.
29414         * marshal.c: Get the type of transparent proxies from its remote_class.
29415         Added methods that generate the IL for type checks and casts:
29416         mono_marshal_get_isinst, mono_marshal_get_castclass, 
29417         mono_marshal_get_proxy_cancast.
29418         * marshal.h: Declaration of the previous new methods.
29419         * object.c: Added new moethods for creating and updating MonoRemoteClass
29420         instances: mono_remote_class, mono_upgrade_remote_class, 
29421         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
29422         * verify.c: FIx transparent_proxy_fields layout.
29423         * appdomain.c: Bump corlib version.
29424
29425 2004-03-04  Jackson Harper  <jackson@ximian.com>
29426
29427         * icall.c: Add icall to access char conversion tables.
29428         * char-conversions.h: Character conversion tables.
29429         * Makefile.am: Add char-conversions.h private header file.
29430         
29431 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
29432
29433         * appdomain.c (unload_thread_main): Increase unloading timeout to
29434         10 sec as a temporary workaround for Nant problems.
29435
29436 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
29437
29438         * gc.c: Add checks for GC_enable and GC_disable.
29439
29440         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
29441         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
29442         (bug #54988).
29443         
29444 2004-02-27  Martin Baulig  <martin@ximian.com>
29445
29446         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29447         `MonoReflectionType *' instead of a `MonoType *'.
29448
29449 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
29450
29451         * gc.c (run_finalize): Avoid finalizing the object representing the
29452         finalizer thread.
29453         (finalizer_thread): Fix warning.
29454
29455 2004-02-25  Martin Baulig  <martin@ximian.com>
29456
29457         * class.c (_mono_class_get_instantiation_name): Added `int offset'
29458         argument for nested types.
29459         (mono_class_create_generic): Added support for nested generictypes.
29460
29461         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
29462         `GList *nested'.
29463
29464         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
29465
29466         * reflection.c (method_encode_signature): Increase the minimum
29467         value of `size' from 10 to 11.
29468         (mono_reflection_bind_generic_parameters): Take `int type_argc'
29469         and `MonoType **types' arguments instead of the `MonoArray
29470         *types'; added `MonoType *nested_in'.  Recursively instantiate
29471         nested classes. 
29472
29473 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
29474
29475         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
29476         stack_overflow_ex members which are used by exception handling.
29477
29478         * appdomain.c (mono_runtime_init): Initialize the new members.
29479
29480         * gc.c (mono_gc_enable): New helper function.
29481         * gc.c (mono_gc_disable): New helper function.
29482
29483 2004-02-23  Martin Baulig  <martin@ximian.com>
29484
29485         * icall.c: I must have been really stupid - make it actually work
29486         this time ;-)
29487
29488 2004-02-23  Martin Baulig  <martin@ximian.com>
29489
29490         * loader.c (method_from_memberref): Only inflate the method if
29491         it's in another klass.
29492
29493 2004-02-23  Martin Baulig  <martin@ximian.com>
29494
29495         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
29496         (mono_class_init): If we're a generic instance and an interface,
29497         compute `class->interface_id'; also create `class->interfaces'
29498         here and inflate them.
29499
29500         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
29501         `ginst->is_open'.
29502         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
29503
29504         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
29505
29506 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
29507
29508         * reflection.c (method_encode_code): Improved the error message
29509         generated by the exception.
29510
29511 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29512
29513         * icall.c: Martin did not do what he said in the ChangeLog for
29514         2004-02-18, but put back the changes for properties and events.
29515         Commenting those changes out again and adding comment to bug #54518.
29516         
29517         * process.c: removed warning.
29518
29519 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
29520
29521         * marshal.c (emit_struct_conv): Print an error message instead of
29522         asserting when a type does not have the StructLayout attribute.
29523
29524 2004-02-20  Martin Baulig  <martin@ximian.com>
29525
29526         * reflection.c (mono_type_get_object): Also use the cache for
29527         generic instances.
29528         (mono_reflection_bind_generic_parameters): Always compute
29529         `ginst->ifaces'.        
29530
29531 2004-02-20  Martin Baulig  <martin@ximian.com>
29532
29533         * class.h (MonoGenericMethod): Removed `klass'.
29534
29535         * class.c (mono_class_inflate_generic_method): Added `MonoClass
29536         *klass' argument.
29537
29538 2004-02-20  Martin Baulig  <martin@ximian.com>
29539
29540         * reflection.c (method_encode_methodspec): Actually use the
29541         uninflated signature for the memberref.
29542
29543 2004-02-20  Martin Baulig  <martin@ximian.com>
29544
29545         * class.h (MonoGenericMethod): Removed `declaring'.
29546
29547         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
29548         is NULL, compute it here.
29549
29550 2004-02-20  Martin Baulig  <martin@ximian.com>
29551
29552         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
29553
29554         * metadata.c (mono_metadata_generic_inst_hash): New method.
29555         (mono_metadata_generic_inst_equal): New method.
29556
29557         * reflection.c (mono_reflection_bind_generic_parameters): Use the
29558         `klass->image->generic_inst_cache' cache to avoid creating
29559         duplicate MonoGenericInst's.
29560
29561         * class.c (mono_class_inflate_generic_type): Use the cache.
29562
29563 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
29564
29565         * object.c: fixed gc descriptor calculation for embedded valuetypes.
29566
29567 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29568
29569         * icall.c: added Socket.WSAIoctl icall.
29570
29571         * socket-io.[ch]: implemented
29572         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
29573
29574 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
29575
29576         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
29577
29578 2004-02-18  Urs C Muff  <umuff@quark.com>
29579
29580         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
29581         this work on PPC and other big-endian architectures.
29582
29583         * debug-mono-symfile.h: Prepended the names of all the `guint32'
29584         fields with an underscore to make sure they're only accessed by
29585         the read32() macro.
29586
29587 2004-02-18  Martin Baulig  <martin@ximian.com>
29588
29589         * icall.c: Put the klass->refclass changes back for methods and
29590         fields, but not for properties and events.  We're currently not
29591         distinguishing between DeclaringType and ReflectedType for
29592         properties and events, that's what caused the regressions.
29593
29594 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29595
29596         * object.c:
29597         (mono_async_result_new): the handle can be NULL.
29598
29599         * threadpool.c: Use an event instead of a semaphore, don't initialize
29600         it until needed. This saves quite a few semaphores from being created
29601         when using the threadpool.
29602
29603 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
29604
29605         * object.c (mono_string_is_interned_lookup): Fix interning of long
29606         strings. Fixes #54473.
29607
29608         * domain.c (ldstr_equal): Optimize if the two strings are equal.
29609
29610         * icall.c: Revert the klass->refclass changes since they introduce
29611         regressions (bug #54518).
29612
29613 2004-02-18  Martin Baulig  <martin@ximian.com>
29614
29615         * class.c (mono_class_init): If we're a generic instance and don't
29616         come from a TypeBuilder, inflate our members here.
29617         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
29618         (mono_class_create_generic): New public method.
29619         (mono_class_initialize_generic): Removed.
29620         (get_instantiation_name): Renamed to
29621         _mono_class_get_instantiation_name() and made it public.
29622
29623 2004-02-18  Martin Baulig  <martin@ximian.com>
29624
29625         * class.c (mono_class_inflate_generic_type): Clear the new
29626         instance's `nginst->klass' when inflating a generic instance.
29627         (mono_class_is_subclass_of): Added (basic) support for generic
29628         instances.
29629
29630 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
29631
29632         * appdomain.h, domain.c: use a MonoCodeManager instead of a
29633         MonoMempool to hold compiled native code.
29634
29635 2004-02-17  Martin Baulig  <martin@ximian.com>
29636
29637         * class.h (MonoDynamicGenericInst): Added `count_properties' and
29638         `properties'.
29639
29640         * reflection.c (mono_reflection_generic_inst_initialize): Added
29641         `MonoArray *properties' argument.
29642
29643         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
29644
29645 2004-02-17  Martin Baulig  <martin@ximian.com>
29646
29647         * icall.c (ves_icall_Type_GetFields): Renamed to
29648         ves_icall_Type_GetFields_internal() and added a
29649         `MonoReflectionType *rtype' argument; pass it to
29650         mono_field_get_object() to set the field's "reflected" type.
29651         (ves_icall_Type_GetConstructors): Likewise.
29652         (ves_icall_Type_GetEvents): Likewise.
29653         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
29654         argument; pass it to mono_method_get_object() to set the method's
29655         "reflected" type.       
29656
29657 2004-02-17  Martin Baulig  <martin@ximian.com>
29658
29659         * class.h (MonoDynamicGenericInst): New type.
29660         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
29661
29662         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
29663         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
29664         (ves_icall_MonoGenericInst_GetFields): New interncall.
29665
29666         * class.c (mono_class_from_generic): Don't call
29667         mono_class_initialize_generic() if this is a dynamic instance;
29668         ie. it's being created from a TypeBuilder.
29669         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
29670         `class->byval_arg.type'.
29671
29672         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
29673         to `inflate_method' and made static.
29674         (mono_reflection_inflate_field): Removed.
29675         (mono_reflection_generic_inst_initialize): New public method.
29676
29677         * reflection.h (MonoReflectionGenericInst): Removed `methods',
29678         `ctors' and `fields'; added `initialized'.
29679
29680 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
29681
29682         * debug-helpers.c (mono_method_full_name): Fix output for empty
29683         namespaces.
29684
29685 2004-02-12  Martin Baulig  <martin@ximian.com>
29686
29687         * class.h (MonoClassField): Added `MonoType *generic_type'.
29688
29689         * reflection.c (mono_image_get_fieldref_token): Added support for
29690         instantiated generic types.
29691         (field_encode_inflated_field): Removed.
29692         (mono_image_get_inflated_field_token): Removed.
29693         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
29694
29695         * reflection.h (MonoReflectionInflatedField): Removed.
29696
29697 2004-02-12  Martin Baulig  <martin@ximian.com>
29698
29699         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
29700         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
29701
29702         * reflection.c (mono_image_get_methodspec_token): Take a
29703         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
29704         (mono_image_create_token): Check whether we have a
29705         `method->signature->gen_method' and call
29706         mono_image_get_methodspec_token() if appropriate.
29707         (inflated_method_get_object): Removed.
29708         (mono_reflection_bind_generic_method_parameters): Return a
29709         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
29710         (mono_reflection_inflate_method_or_ctor): Likewise.
29711
29712         * reflection.h (MonoReflectionInflatedMethod): Removed.
29713
29714 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
29715
29716         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
29717         for custom valuetype marshalling.
29718
29719         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
29720
29721 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29722
29723         * icall.c: fixed WSAGetLastError_internal name.
29724
29725 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
29726
29727         * threads.c (mono_thread_attach): Allow this to be called multiple
29728         times for a thread.
29729         
29730         * threads.c (build_wait_tids): Do not wait for ourselves.
29731
29732         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
29733         appdomain list is empty.
29734
29735         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
29736         memory returned by mono_string_builder_to_utf16, since it points into
29737         managed memory. Thanks to Bernie Solomon for noticing this.
29738
29739         * icall.c: Add AppDomainSetup icalls.
29740
29741         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
29742
29743         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
29744         types.
29745
29746         * reflection.c (reflection_methodbuilder_to_mono_method): Save
29747         custom attributes to the method_aux struct. Also fix array indexes etc.
29748
29749         * loader.c (mono_method_get_param_names): Make dynamic case work again.
29750         
29751 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
29752
29753         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
29754         (both static and runtime) and reduce startup time.
29755
29756 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
29757
29758         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
29759         AsAny marshalling conversion instead of crashing.
29760
29761         * marshal.c: Fix warnings.
29762
29763 2004-02-09  Martin Baulig  <martin@ximian.com>
29764
29765         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
29766
29767         * reflection.h (MonoReflectionInflatedMethod): Removed the
29768         `declaring' field, it's now in the unmanaged MonoGenericMethod.
29769
29770         * reflection.c (method_encode_methodspec): Removed the `method'
29771         argument; we get it from `gmethod->declaring'.
29772         (inflated_method_get_object): Removed the `declaring' argument.
29773
29774 2004-02-09  Martin Baulig  <martin@ximian.com>
29775
29776         * class.h (MonoGenericMethod): New type.
29777         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
29778         `generic_method'.
29779
29780         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
29781         a `MonoGenericMethod *gen_method' one.
29782
29783         * class.c (mono_class_inflate_generic_type): Take an additional
29784         `MonoGenericMethod * argument.  This is only non-NULL if we're
29785         inflating types for a generic method.   
29786         (mono_class_inflate_generic_signature): Renamed to
29787         inflate_generic_signature() and made static; take a
29788         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29789         (inflate_generic_header): Take a `MonoGenericMethod *' argument
29790         instead of a `MonoGenericInst *' one.
29791         (mono_class_inflate_generic_method): Likewise.
29792
29793         * reflection.c (encode_generic_method_sig): Take a
29794         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
29795         (method_encode_methodspec): Likewise.
29796         (inflated_method_get_object): Likewise. 
29797
29798         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
29799         field with a `MonoGenericMethod *gmethod' one.  
29800
29801 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
29802
29803         * class.h (mono_class_has_parent): add parens to expansion
29804         so you can ! this.
29805
29806 2004-02-08  Martin Baulig  <martin@ximian.com>
29807
29808         * image.h (MonoImage): Removed `generics_cache'.
29809
29810         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
29811         instead of a `MonoType *' argument; removed the `inflate_methods'
29812         argument.  Don't inflate methods here.
29813
29814         * loader.c (find_method): If it's a generic instance, call
29815         mono_class_init() on the `sclass->generic_inst->generic_type'.
29816
29817         * metadata.c (mono_type_size): Make this work on uninitialized
29818         generic instances; call it on the `ginst->generic_type's class.
29819
29820         * reflection.c (mono_reflection_bind_generic_parameters): Call
29821         mono_class_from_generic() to create the `ginst->klass'.
29822
29823 2004-02-08  Martin Baulig  <martin@ximian.com>
29824
29825         * class.h (MonoClass): Changed type of `generic_inst' from
29826         `MonoType *' to `MonoGenericInst *'.
29827
29828 2004-02-08  Martin Baulig  <martin@ximian.com>
29829
29830         * icall.c (ves_icall_Type_BindGenericParameters): Just call
29831         mono_type_get_object(), this is now creating a `MonoGenericInst'
29832         for MONO_TYPE_GENERICINST.
29833         (ves_icall_MonoGenericInst_GetParentType): Likewise.
29834         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
29835
29836         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
29837         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
29838         (inflated_method_get_object): Added `MonoClass *refclass' argument.
29839         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
29840         and reflected type.
29841
29842         * reflection.h (MonoReflectionInflatedMethod): Removed
29843         `declaring_type' and `reflected_type'.
29844
29845 2004-02-08  Martin Baulig  <martin@ximian.com>
29846
29847         * class.h (MonoGenericInst): Added `MonoType *parent' and
29848         `MonoType **ifaces'.
29849
29850         * reflection.h (MonoReflectionGenericInst): Removed `klass',
29851         `parent' and `interfaces'.
29852
29853         * reflection.c (mono_reflection_bind_generic_parameters): Take a
29854         `MonoType *' argument and return a `MonoType *'.
29855
29856         * icall.c
29857         (ves_icall_MonoGenericInst_GetParentType): New interncall.
29858         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
29859
29860 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29861
29862         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
29863         valuetype marshalling.
29864
29865 2004-02-06  Martin Baulig  <martin@ximian.com>
29866
29867         * class.c
29868         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
29869         (my_mono_class_from_generic_parameter): Likewise.
29870
29871 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
29872
29873         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
29874         contents of the symbol files lazily.
29875
29876         * object.h (MonoThread): Add 'name' and 'name_len' fields.
29877
29878         * threads.h threads.c icall.c: New icalls for getting and setting the
29879         threads name.
29880
29881 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
29882
29883         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
29884         Raise an exception when the domain is not found.
29885
29886 2004-02-03  Martin Baulig  <martin@ximian.com>
29887
29888         * reflection.c (mono_image_get_methodspec_token): Use the
29889         uninflated signature; fixes gen-33.
29890
29891 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
29892
29893         * gc.c threads.c: Make the finalizer thread a normal managed thread so
29894         the finalizer code can use thread functionality.
29895
29896         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
29897         the finalizer thread.
29898
29899         * threads.c: Make some functions more robust.
29900
29901         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
29902
29903         * metadata.h: Add new marshalling conventions.
29904
29905         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
29906         stringbuilder marshalling. Fixes #53700.
29907
29908         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
29909
29910         * reflection.c (mono_image_get_type_info): Save declarative security
29911         info.
29912
29913         * reflection.c (mono_image_get_field_info): Handle uninitialized 
29914         unmanaged fields as well.
29915
29916         * appdomain.c: Bump corlib version.
29917
29918 2004-02-01  Martin Baulig  <martin@ximian.com>
29919
29920         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
29921         method type arguments.  
29922
29923 2004-01-30  Duncan Mak  <duncan@ximian.com>
29924
29925         * marshal.h: Add prototype for
29926         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
29927         and
29928         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
29929         fix the build.
29930
29931 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
29932
29933         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
29934         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
29935
29936 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29937
29938         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29939         custom marshalling of valuetypes.
29940
29941         * marshal.c: Fix some warnings.
29942
29943 2004-01-29  Martin Baulig  <martin@ximian.com>
29944
29945         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
29946         for generic method parameters.
29947
29948         * reflection.c (method_encode_methodspec): Write the uninflated
29949         signature into the methodspec table.
29950         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
29951         is always the uninflated method.
29952         (reflection_methodbuilder_to_mono_method): Copy the generic
29953         parameters from the MethodBuilder into `header->gen_params'.
29954
29955 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
29956
29957         * class.c (mono_class_from_generic_parameter): Fix warning.
29958
29959 2004-01-27  Martin Baulig  <martin@ximian.com>
29960
29961         * class.c (mono_class_from_generic_parameter): Don't create
29962         `klass->methods' here.  
29963
29964 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
29965
29966         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
29967         extension since it does not work with libraries named lib<FOO>.dll.so.
29968
29969 2004-01-25  Martin Baulig  <martin@ximian.com>
29970
29971         * class.c (mono_class_inflate_generic_type): Added support for
29972         MONO_TYPE_GENERICINST.
29973
29974         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
29975         inflate methods on open constructed types.      
29976
29977 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29978
29979         * object.c: fire ProcessExit event in the root AppDomain after running
29980         Main. Fixes bug #53299.
29981
29982 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
29983
29984         * socket-io.c: include the new socket-wrappers.h header.
29985         Use the wrappers instead of the unix socket functions to make the code
29986         more clear.
29987
29988 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
29989
29990         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
29991
29992         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
29993         Fixes #22532.
29994
29995 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
29996
29997         * reflection.c (mono_image_create_pefile): Handle the case when the
29998         entry point is not a MethodBuilder.
29999
30000         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
30001         field to ReflectionMethod since it is not allways a builder.
30002
30003         * reflection.c (type_get_fully_qualified_name): New helper function to
30004         return the fully qualified name of a type.
30005
30006         * reflection.c (encode_marshal_blob): Always emit the fully qualified
30007         type name for custom marshallers.
30008
30009         * reflection.c (mono_marshal_spec_from_builder): Ditto.
30010
30011         * class.c (mono_class_setup_vtable): If a parent class already 
30012         implements an interface, use the implementing methods from that class.
30013         Fixes #53148.
30014
30015 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30016
30017         * threadpool.c: just return instead of ExitThread to allow for thread
30018         clean up earlier.
30019
30020 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
30021
30022         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
30023         when closing resource modules.
30024
30025         * reflection.c (mono_image_create_pefile): Handle the case when the
30026         entry point is not a MethodBuilder.
30027
30028         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
30029         field to ReflectionMethod since it is not allways a builder.
30030
30031 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
30032
30033         * marshal.c (mono_marshal_get_managed_wrapper): 
30034         mono_marshal_alloc takes native int so CONV_I
30035         the arg for 64bits.
30036
30037 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
30038
30039         * reflection.c (fixup_cattrs): New function to fixup the methoddef
30040         tokens in the cattr table. Fixes #53108.
30041
30042 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30043
30044         * loader.c: don't trim ".dll" before looking up in the config file.
30045         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
30046
30047 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
30048
30049         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
30050         Return the module which contains the resource as well.
30051         (ves_icall_System_Reflection_Module_Close): New icall.
30052
30053         * appdomain.c: Bump corlib version number.
30054
30055         * image.c (mono_image_addref): New public function.
30056
30057         * assembly.c: Call mono_image_addref.
30058
30059         * reflection.c (mono_module_get_object): Increase reference count of 
30060         the image.
30061
30062         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
30063         Fixes #22532.
30064
30065         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
30066         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
30067         proper exceptions on DllImport problems.
30068
30069 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
30070
30071         * class.c, metadata.c: eliminate CSIZE macro.
30072
30073 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
30074
30075         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
30076         * object.h: Added async_callback field in MonoAsyncResult.
30077         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
30078         * verify.c: Added async_callback in MonoAsyncResult layout.
30079
30080 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
30081
30082         * reflection.c (mono_reflection_get_custom_attrs): Add support
30083         for Modules.
30084
30085 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30086
30087         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
30088         marshalling.
30089         (mono_marshal_method_from_wrapper): Add null pointer check.
30090
30091 2004-01-16  Martin Baulig  <martin@ximian.com>
30092
30093         * debug-mono-symfile.h: Set version number to 36 and reflect
30094         latest symbol writer changes.
30095
30096 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
30097
30098         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
30099         multi-dimensional arrays.
30100         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
30101         (mono_class_from_mono_type): Use bounded_array_class_get.
30102         
30103         * class.c (mono_bounded_array_class_get): New function which takes
30104         a 'bounded' bool argument to distinguish vectors from one dimensional
30105         arrays.
30106
30107         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
30108         bounded_array_class_get if the array has bounds.
30109
30110         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30111         Search modules loaded using AssemblyBuilder:AddModule as well.
30112
30113 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30114
30115         * appdomain.c: increased corlib version.
30116         * filewatcher.c: removed g_print.
30117         * icall.c:
30118         (get_property_info): only allocate what is actually requested.
30119         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
30120
30121 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30122
30123         * Makefile.am: added filewatcher.[ch]
30124         * filewatcher.[ch]: FileSystemWatcher runtime support.
30125         * icall.c: added new FSW icalls.
30126
30127 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
30128
30129         * string-icalls.c: fix stringbuilder regression as suggested by
30130         Iain McCoy <iain@mccoy.id.au>.
30131
30132 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
30133
30134         * process.c (process_read_stringtable_block): Recognize '007f' as
30135         a language neutral stringtable block.
30136
30137 2004-01-12  Patrik Torstensson
30138
30139         * object.h (MonoStringBuilder) : Changed layout to support our
30140         new stringbuilder class.
30141         * marshal.c: Change marshalling to support the new layout of 
30142         string builder.
30143         * appdomain.c: increased version number because new layout of
30144         string builder.
30145
30146 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
30147
30148         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
30149         assembly name as an string instead of an AssemblyName, since it is
30150         easier to extract info from it.
30151
30152         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
30153         the culture subdirectories too. Fixes #52231.
30154
30155 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30156
30157         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
30158         It takes 2 new parameters with an optional name for the method to look
30159         for and case ignoring info.
30160
30161         * threadpool.c: removed unused variable.
30162
30163 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30164
30165         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
30166         It takes 2 new parameters with an optional name for the property to look
30167         for and case ignoring info.
30168         Fixes bug #52753.
30169
30170 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
30171
30172         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
30173         Fix #52451.
30174
30175 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30176
30177         * appdomain.c:
30178         * assembly.c: escape the uri before passing it to g_filename_from_uri.
30179         Fixes bug #52630.
30180
30181 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
30182
30183         * reflection.c: Add support for more than one unmanaged resource.
30184
30185         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
30186         in field->def_value, as done in all other cases.
30187
30188         * reflection.c (mono_reflection_get_custom_attrs): Add support for
30189         TypeBuilders.
30190
30191         * reflection.c (mono_reflection_create_runtime_class): Remove 
30192         errorneous assignment to klass->element_class, since it is already
30193         done in mono_reflection_setup_internal_class.
30194
30195 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30196
30197         * gc.c: added missing LeaveCriticalSection.
30198         * icall.c: indented a couple of lines.
30199         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
30200         if we call EndInvoke inside a callback. Fixes bug #52601.
30201
30202 2004-01-07  Martin Baulig  <martin@ximian.com>
30203
30204         * mono-debug-debugger.h
30205         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
30206
30207 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
30208
30209         * appdomain.c: Use messages in NotImplementedException.
30210
30211         * exception.c (mono_get_exception_not_implemented): Now this takes
30212         a message argument.
30213
30214         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
30215         exception instead of g_asserting an aborting when something is not
30216         implemented.
30217
30218         Add some inline docs.
30219
30220 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
30221
30222         * reflection.h: Update after changes to object layout.
30223
30224         * reflection.c: Implement saving of unmanaged aka win32 resources.
30225
30226         * appdomain.c: Bump version number.
30227
30228         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
30229         Handle missing domains gracefully.
30230
30231 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
30232
30233         * file-io.c : On Windows, there are much more invalid_path_chars.
30234
30235 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
30236
30237         * class.h, object.c: prepare for GetType () speedup.
30238
30239 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
30240
30241         * profiler.c: workaround for --profile null reference exception on
30242           cygwin. Patch by Patrik Torstensson.
30243
30244 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
30245
30246         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
30247         make work for unaligned access.
30248
30249 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
30250
30251         * class.c: small cleanup (class->fields [i] -> field).
30252         * image.c: check address of metadata is valid.
30253
30254 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
30255
30256         * assembly.h assembly.c (mono_assembly_loaded): New public function to
30257         search the list of loaded assemblies.
30258
30259         * reflection.c (mono_reflection_type_from_name): Use 
30260         mono_assembly_loaded instead of mono_image_loaded.
30261
30262         * reflection.c: Fix warnings.
30263
30264 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
30265
30266         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
30267         is dynamic. This is needed since an assembly can contain both dynamic and
30268         non-dynamic images.
30269
30270         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
30271         assembly->dynamic.
30272
30273         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
30274
30275         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
30276         to store modules loaded using AddModule.
30277
30278         * reflection.c (mono_image_fill_file_table): Generalize this so it works
30279         on Modules.
30280
30281         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
30282
30283         * reflection.c (mono_image_fill_export_table_from_module): New function to
30284         fill out the EXPORTEDTYPES table from a module.
30285
30286         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
30287         into a separate function. Also handle loaded non-dynamic modules.
30288
30289         * reflection.c (mono_image_basic_init): Fix memory allocation.
30290
30291         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30292
30293         * assembly.c (mono_assembly_load_references): Make this public.
30294
30295 2003-12-19  Martin Baulig  <martin@ximian.com>
30296
30297         * class.c (mono_class_initialize_generic): Made this static, take
30298         a `MonoGenericInst *' instead of a `MonoClass *'.
30299         (mono_class_from_generic): Call mono_class_initialize_generic()
30300         unless we're already initialized or being called from
30301         do_mono_metadata_parse_generic_inst().
30302
30303         * class.h (MonoGenericInst): Added `initialized' and
30304         `init_pending' flags.
30305
30306         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
30307         `mono_class_init (gklass)' or mono_class_initialize_generic()
30308         here; set `generic_inst->init_pending' while parsing the
30309         `type_argv'.
30310
30311 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
30312
30313         * locales.c: include string.h for memxxx prototypes
30314
30315 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
30316
30317         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
30318         constructor when accessing literal fields.
30319
30320 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
30321
30322         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
30323
30324         * reflection.c (assembly_add_resource_manifest): New function to fill
30325         the MANIFESTRESOURCE table.
30326
30327         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
30328
30329         * reflection.h: Update to changes in class layout.
30330
30331         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
30332         Reenable call to mono_runtime_is_shutting_down ().
30333
30334         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
30335         determine if the runtime is shutting down.
30336
30337 2003-12-16  Jackson Harper <jackson@ximian.com>
30338
30339         * icall.c: comment out call to mono_runtime_is_shutting_down to
30340         fix build.
30341         
30342 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
30343
30344         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
30345         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
30346
30347 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
30348
30349         * reflection.c: move definition of swap_with_size
30350         to before its first call
30351
30352 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
30353
30354         * appdomain.c (mono_runtime_is_shutting_down): New public function.
30355
30356         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
30357         icall.
30358
30359         * object.c: Fix warnings.
30360
30361         * icall.c (ves_icall_Type_Get...): Only consider inherited static
30362         members if FlattenHierarchy is set.
30363
30364         * reflection.c (mono_image_add_decl_security): New function to emit
30365         declarative security.
30366
30367         * reflection.h reflection.c: Add support for declarative security.
30368
30369         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30370         
30371 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
30372
30373         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
30374         
30375         * appdomain.c verify.c: Moved corlib version checking into its own
30376         function in appdomain.c since it needs to create vtables etc.
30377
30378 2003-12-13  Patrik Torstensson <p@rxc.se>
30379
30380         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
30381         instead of unwrapped server.
30382
30383 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
30384
30385         * verify.c (check_corlib): Fix field index.
30386
30387 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
30388
30389         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
30390         GetGacPath icall.
30391
30392 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
30393
30394         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
30395         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
30396         cope with sizeof(size_t) != sizeof(guint32).
30397
30398 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30399
30400         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
30401         in case of failure.
30402
30403 2003-12-10  Mark Crichton <crichton@gimp.org>
30404
30405         * icall.c: removed the GetNonZeroBytes.  We now handle this case
30406         in managed code.
30407
30408         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
30409
30410 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
30411
30412         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
30413         marked as deleted.
30414
30415 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
30416
30417         * verify.c (check_corlib): Handle the case when the version field is 
30418         initialized by a static constructor.
30419
30420 2003-12-08  Patrik Torstensson  <p@rxc.se>
30421
30422     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
30423
30424 2003-12-08  Martin Baulig  <martin@ximian.com>
30425
30426         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
30427         a MonoReflectionGenericParameter, also take the parameter index
30428         and name as arguments.
30429         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
30430         (ves_icall_MonoGenericParam_initialize): New interncall.
30431         (ves_icall_Type_make_byref_type): New interncall.
30432
30433         * reflection.h (MonoReflectionGenericParam): Derive from
30434         MonoReflectionType, not just from MonoObject.  Added `refobj' and
30435         `index' fields.
30436
30437         * reflection.c (mono_reflection_define_generic_parameter): Create
30438         and return a new MonoReflectionGenericParam; don't initialize the
30439         constraints here.
30440         (mono_reflection_initialize_generic_parameter): New public method;
30441         initializes the constraints and creates the `param->pklass'.
30442
30443 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
30444
30445         * reflection.h reflection.c: Use the new fields 'num_types', 
30446         'num_fields' and 'num_methods' to track the number of types etc.
30447
30448         * verify.c (check_corlib): Check corlib version number.
30449
30450 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
30451
30452         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
30453         function works on all methods.
30454
30455 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
30456
30457         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
30458         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
30459         the custom_type_info flag of the transparent proxy.
30460         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
30461         objects that supports IRemotingTypeInfo.
30462         * object.h: Added custom_type_info field in transparent proxy.
30463
30464 2003-12-06  Martin Baulig  <martin@ximian.com>
30465
30466         * class.c (mono_class_create_from_generic): Removed.
30467         (mono_class_from_generic): Check `ginst->klass' before doing
30468         anything else.  This is important to fully support "recursive"
30469         generic types.
30470
30471         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
30472         empty `generic_inst->klass' before doing anything else.
30473
30474 2003-12-06  Dick Porter  <dick@ximian.com>
30475
30476         * verify.c: 
30477         * object.h:
30478         * icall.c:
30479         * locales.c: Use C structs to access class fields.  Don't do a
30480         conversion between MonoString and UChar because both are
30481         platform-endian UTF-16.  Compare now takes startindex and count
30482         parameters.  Add a char overload for IndexOf.  Speed up the
30483         invariant string IndexOf.
30484
30485 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
30486
30487         * Makefile.am (monosn_LDADD): Fix parallel build.
30488
30489 2003-12-04  Martin Baulig  <martin@ximian.com>
30490
30491         * icall.c
30492         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
30493         (ves_icall_Type_make_array_type): New interncall.       
30494
30495 2003-12-04  Martin Baulig  <martin@ximian.com>
30496
30497         * locales.c: also change it in the !HAVE_ICU case.
30498
30499 2003-12-04  Dick Porter  <dick@ximian.com>
30500
30501         * icall.c:
30502         * locales.c: construct_compareinfo is now in CompareInfo, not
30503         CultureInfo.
30504
30505 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
30506
30507         * image.c (mono_image_load_file_for_image): Cache loaded images in the
30508         image->files array.
30509
30510         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
30511         table as well.
30512
30513         * assembly.c (mono_assembly_load_references): Only load references
30514         once.
30515
30516         * class.c (mono_class_from_name): Avoid linear search of the 
30517         EXPORTEDTYPE table.
30518
30519         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
30520
30521 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
30522
30523         * image.h (MonoImage): Add 'field_cache' field.
30524
30525         * loader.c (mono_field_from_token): Cache field lookups.
30526         
30527         * reflection.c (mono_module_get_object): Fix name property.
30528
30529         * icall.c (ves_icall_get_enum_info): Update after changes to 
30530         mono_metadata_get_constant_index ().
30531
30532         * icall.c: Get rid of get_type_info icall, use a separate icall for
30533         each type property to avoid needless memory allocations. Fixes #51514.
30534
30535         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
30536         to avoid needless binary searches.
30537
30538         * class.c (class_compute_field_layout): Move the initialization of
30539         field->def_value to mono_class_vtable ().
30540
30541         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
30542         non-corlib types.
30543
30544         * object.c (mono_object_allocate): Make it inline.
30545
30546         * object.c (mono_object_allocate_spec): Make it inline.
30547         
30548 2003-12-02  Dick Porter  <dick@ximian.com>
30549
30550         * locales.c (create_NumberFormat): NumberFormatInfo construction.
30551         Patch by Mohammad DAMT (mdamt@cdl2000.com).
30552
30553 2003-12-01  Dick Porter  <dick@ximian.com>
30554
30555         * threads.c: Fix signature and call in CreateMutex and
30556         CreateEvent.
30557
30558 2003-12-01  Dick Porter  <dick@ximian.com>
30559
30560         * icall.c: 
30561         * locales.c: Implement string compares and searching
30562
30563         * object.h: Add extra Thread field
30564
30565 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
30566
30567         * reflection.c (fixup_method): Add support for MonoCMethod.
30568
30569 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
30570
30571         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
30572
30573         * reflection.c (assembly_name_to_aname): Allow extra characters in
30574         assembly names. Fixes #51468.
30575
30576 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
30577
30578         * exception.c (mono_exception_from_name_domain): New helper function.
30579
30580         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
30581         exception object in the correct domain.
30582
30583         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
30584         formatting + make a copy a the input data.
30585
30586         * loader.c (mono_get_method_from_token): Methods which contain
30587         native code do not have entries in the ImplMap.
30588
30589         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
30590         Thanks to Gonzalo for spotting this.
30591         
30592         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
30593         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
30594
30595         * assembly.h (mono_assembly_load_from): Split the second part of 
30596         assembly loading into a new public function.
30597
30598         * exception.h (mono_get_exception_bad_image_format): New function.
30599
30600 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
30601
30602         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30603         Enumerate all modules inside a dynamic assembly. Fixes #51293.
30604         
30605         * icall.c: Add new icall for creating dynamic methods.
30606
30607         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
30608
30609         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
30610
30611         * reflection.c (mono_reflection_create_dynamic_method): New icall to
30612         create a dynamic method.
30613
30614         * reflection.c (resolve_object): New helper function.
30615
30616         * reflection.c: Generalize ReflectionMethodBuilder and the functions
30617         which manipulate it so they can also work on dynamic methods.
30618
30619         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
30620         creating the MonoReflectionMethodAux structure if it is not needed.
30621         
30622         * reflection.h verify.c: Update after changes to object layout.
30623
30624         * reflection.c (method_builder_encode_signature): Fix compilation on
30625         gcc 2.95.x.
30626
30627 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
30628
30629         * appdomain.h: Added support for context static fields. Added static_data
30630           field to MonoAppContext and renamed thread_static_fields to a more
30631           generic special_static_fields in MonoAppDomain, since it can now contain
30632           context static fields.
30633         * domain.c: Updated hashtable name.
30634         * object.c: Replaced field_is_thread_static() for a more generic
30635           field_is_special_static() which also checks for context static attribute.
30636           In mono_class_vtable(), added support for static context fields.
30637         * threads.c: Changed methods that manage thread static fields to more
30638           generic methods so they can be reused both for thread and context static
30639           data.
30640         * threads.h: Declared some new methods.
30641
30642 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
30643
30644         * reflection.h: Update after changes to the managed types.
30645
30646         * reflection.c (encode_custom_modifiers): New helper function.
30647
30648         * reflection.c (method_encode_signature): Emit custom modifiers.
30649
30650         * reflection.c (field_encode_signature): Emit custom modifiers.
30651
30652 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
30653
30654         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
30655
30656         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
30657         implementation.
30658
30659         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
30660         icall.
30661
30662         * object.c (mono_field_get_value_object): New function.
30663
30664         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
30665         specific.
30666
30667 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
30668
30669         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
30670         return a preallocated out-of-memory exception instance.
30671
30672         * object.c (out_of_memory): Use the new function.
30673
30674         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
30675         flag is before the custom modifiers. Fixes #49802.
30676
30677 2003-11-16  Martin Baulig  <martin@ximian.com>
30678
30679         * class.c (mono_class_is_open_constructed_type): Implemented the
30680         MONO_TYPE_GENERICINST case.
30681
30682 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
30683
30684         * assembly.c (mono_assembly_fill_assembly_name): New function to
30685         fill out the MonoAssemblyName structure.
30686         (mono_assembly_open): Use the new function.
30687
30688         * icall.c (fill_reflection_assembly_name): New helper function.
30689
30690         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
30691         new function.
30692
30693         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
30694
30695 2003-11-15  Martin Baulig  <martin@ximian.com>
30696
30697         * class.c (mono_class_is_open_constructed_type): New public
30698         function; checks whether a type is an open constructed type,
30699         ie. whether it still contains type parameters.
30700         (mono_class_inflate_generic_type): If we're a type parameter and
30701         the inflated type is also a MONO_TYPE_(M)VAR, return the original
30702         type.
30703
30704         * class.h (MonoGenericInst): Added `guint32 is_open'.
30705
30706         * loader.c (method_from_methodspec): Check whether we're an open
30707         or closed constructed type and set `ginst->is_open'.
30708
30709         * reflection.c (mono_reflection_bind_generic_parameters): Check
30710         whether we're an open or closed constructed type and set
30711         `ginst->is_open'.
30712         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
30713         from open constructed types.
30714
30715 2003-11-15  Martin Baulig  <martin@ximian.com>
30716
30717         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30718         a generic instance (instead of a generic type declaration) with
30719         unbound generic parameters, bind them to our actual types.
30720
30721 2003-11-14  Martin Baulig  <martin@ximian.com>
30722
30723         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
30724
30725         * reflection.c (mono_reflection_bind_generic_parameters): If we're
30726         an interface type, populate `res->interfaces' with instantiated
30727         versions of all the interfaces we inherit.
30728
30729 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
30730
30731         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
30732         when MONO_PATH is set but doesn't contain the install dir.
30733
30734 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30735
30736         * icall.c:
30737         (ves_icall_Type_GetInterfaces): don't return an interface twice when
30738         it's also implemented in base classes. Fixes bug #50927.
30739
30740 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
30741
30742         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
30743         if this method is called from a finalizer. Fixes #50913.
30744
30745 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
30746
30747         * threads.c: Implement VolatileRead/VolatileWrite
30748
30749         * icall.c: Add new icalls for VolatileRead/VolatileWrite
30750
30751 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30752
30753         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
30754         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
30755         2.95.3.
30756
30757         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
30758         from Peter Ross (pro@missioncriticalit.com).
30759         
30760 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
30761
30762         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
30763
30764 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30765
30766         * assembly.c (mono_assembly_load_references): Disable check because it
30767         triggers on older corlibs which lots of people have.
30768
30769 2003-11-12  Jackson Harper  <jackson@ximian.com>
30770
30771         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
30772         load corlib.dll if mscorlib.dll is not found.
30773         * assembly.h: Remove corlib name define.
30774         * class.c:
30775         * domain.c:
30776         * image.c: Change corlib name to mscorlib.
30777         
30778 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
30779
30780         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
30781
30782 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
30783
30784         * appdomain.h: Added loader_optimization here to sync with the C#
30785         code, and add disallow_binding_redirects field.
30786
30787 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30788
30789         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
30790
30791         * reflection.c (mono_image_build_metadata): Fix crash on modules
30792         with no types.
30793
30794         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
30795
30796         * icall.c (ves_icall_get_method_info): Return callingConvention as
30797         well.
30798
30799         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
30800         namespaces from the EXPORTEDTYPE table as well.
30801
30802         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
30803         from all modules inside the assembly.
30804         
30805 2003-11-11  Martin Baulig  <martin@ximian.com>
30806
30807         * reflection.c (mono_reflection_bind_generic_parameters): Make
30808         this work for interfaces.
30809
30810 2003-11-11  Martin Baulig  <martin@ximian.com>
30811
30812         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
30813
30814 2003-11-11  Martin Baulig  <martin@ximian.com>
30815
30816         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
30817         "MonoInflatedMethod" and "MonoInflatedCtor".
30818
30819 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
30820
30821         * reflection.c (resolution_scope_from_image): Use the assembly table
30822         from the manifest module, since other modules don't have it.
30823
30824         * debug-helpers.c (mono_type_full_name): New helper function.
30825
30826         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
30827
30828         * image.c (mono_image_load_file_for_image): New public function which
30829         is a replacement for the load_file_for_image in class.c.
30830
30831         * assembly.c (mono_assembly_load_module): A wrapper for the function
30832         above which does assembly association and reference loading too.
30833
30834         * class.c (mono_class_from_name): Call mono_assembly_load_module.
30835
30836 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30837
30838         * appdomain.c: not all of the attributes for the full assembly name
30839         are required and the order doesn't matter. Fixes bug #50787.
30840
30841 2003-11-10  Dick Porter  <dick@ximian.com>
30842
30843         * locales.c: Use platform-endian UTF16
30844
30845 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30846
30847         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30848         
30849 2003-11-10  Martin Baulig  <martin@ximian.com>
30850
30851         * metadata.c
30852         (mono_metadata_load_generic_params): Make this actually work.
30853
30854         * reflection.c (mono_reflection_bind_generic_parameters): If our
30855         parent is a generic instance, pass all the `types' to it, no
30856         matter whether it has the same number of type parameters or not.
30857
30858 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
30859
30860         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
30861
30862         * assembly.c (mono_assembly_load_references): Move the image<->assembly
30863         assignment code to this function so it gets called recursively for all
30864         modules.
30865
30866         * image.c (load_modules): Remove the assembly assignment since it is
30867         now done by mono_assembly_load_references.
30868         
30869         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
30870         Add 'module' argument.
30871         (mono_module_get_types): New helper function.
30872         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
30873
30874 2003-11-08  Martin Baulig  <martin@ximian.com>
30875
30876         * class.c (mono_class_inflate_generic_method): Interface method
30877         don't have a header.
30878
30879         * reflection.c (mono_image_get_methodspec_token): Take an
30880         additional `MonoGenericInst *' argument instead of reading it from
30881         the header; this is necessary to support interfaces.
30882         (mono_image_create_token): Pass the `MonoGenericInst *' from the
30883         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
30884         (inflated_method_get_object): Take an additional `MonoGenericInst *'
30885         argument.
30886
30887         * reflection.h (MonoReflectionInflatedMethod): Added
30888         `MonoGenericInst *ginst'.
30889
30890 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
30891
30892         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
30893
30894 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
30895
30896         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
30897
30898 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
30899
30900         * reflection.c 
30901         (reflection_methodbuilder_from_method_builder):
30902         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
30903         initialize a ReflectionMethodBuilder structure.
30904         (mono_image_get_methodbuilder_token):
30905         (mono_image_get_ctorbuilder_token): New functions to emit memberref
30906         tokens which point to types in another module inside the same assembly.
30907
30908         * reflection.c: Use the new helper functions.
30909         
30910         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
30911
30912         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
30913         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
30914
30915         * reflection.c (resolution_scope_from_image): Emit a moduleref if
30916         neccesary.
30917
30918         * reflection.c (mono_image_build_metadata): Emit metadata only for the
30919         current module. Emit the manifest only for the main module.
30920
30921         * reflection.c (mono_image_create_token): Add assertion when a 
30922         memberref needs to be created.
30923
30924         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
30925
30926         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
30927         larger buffer for the custom attribute blob. Fixes #50637.
30928         
30929 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30930
30931         * threadpool.c: notify listener on async processing handles after
30932         invoking the async callback. Thanks to Zoltan.
30933
30934 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30935
30936         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
30937         avoid code duplication.
30938
30939         * reflection.h (MonoDynamicImage): New type which is currently unused,
30940         but will be used through the ref.emit code in place of 
30941         MonoDynamicAssembly.
30942
30943         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30944         object layout.
30945
30946         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
30947         a MonoDynamicImage instead of just a MonoImage.
30948         
30949         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
30950         icalls to ModuleBuilder but keep their semantics, so they will work
30951         with moduleb->assemblyb. This will change later.
30952         
30953 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30954
30955         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
30956         object layout.
30957
30958         * reflection.c (mono_image_build_metadata): Avoid creation of a default
30959         main module, since it is now done by the managed code.
30960
30961 2003-11-03  Martin Baulig  <martin@ximian.com>
30962
30963         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
30964         `ginst->klass' here.
30965         (method_encode_methodspec): Don't use the `ginst->generic_method's
30966         klass if it's a generic instance, use `ginst->klass' in this case.
30967
30968 2003-11-03  Martin Baulig  <martin@ximian.com>
30969
30970         * reflection.c (mono_image_get_generic_method_param_info):
30971         Removed, use mono_image_get_generic_param_info() instead.
30972         (mono_image_get_type_info): Write the GenericParam table before
30973         the Method table.  This is neccessary because in the GenericParam
30974         table, type parameters of the class (ie. '!0' etc.) must come
30975         before the ones from its generic methods (ie. '!!0' etc).
30976
30977 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
30978
30979         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
30980
30981 2003-11-02  Martin Baulig  <martin@ximian.com>
30982
30983         * reflection.c (create_generic_typespec): Take a
30984         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
30985         the generic parameters from it.
30986
30987 2003-11-02  Martin Baulig  <martin@ximian.com>
30988
30989         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
30990         instead of a `MonoClassField *' since we just need the type.
30991         (create_generic_typespec): New static function.  Creates a
30992         TypeSpec token for a generic type declaration.
30993         (mono_image_get_generic_field_token): New static function.
30994         (mono_image_create_token): If we're a FieldBuilder in a generic
30995         type declaration, call mono_image_get_generic_field_token() to get
30996         the token.
30997
30998 2003-11-02  Martin Baulig  <martin@ximian.com>
30999
31000         * reflection.h
31001         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
31002         `MonoReflectionGenericInst *declaring_type' and
31003         `MonoReflectionGenericInst *reflected_type' fields.
31004
31005         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
31006         `MonoReflectionGenericInst *declaring_type' and a
31007         `MonoReflectionGenericInst *reflected_type' argument instead of a
31008         single `MonoReflectionGenericInst *type' one.  Set
31009         `res->declaring_type' and `res->reflected_type' from them.
31010         (mono_reflection_inflate_field): Likewise.      
31011
31012 2003-11-02  Martin Baulig  <martin@ximian.com>
31013
31014         * class.c (mono_class_setup_vtable): Don't store generic methods
31015         in the vtable.  
31016
31017 2003-11-02  Martin Baulig  <martin@ximian.com>
31018
31019         * reflection.h (MonoReflectionGenericInst): Added
31020         `MonoReflectionType *declaring_type'.
31021
31022         * reflection.c (mono_reflection_bind_generic_parameters): Use
31023         `if (tb->parent)' instead of `klass->parent'.
31024
31025 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
31026
31027         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
31028         with an empty ASSEMBLY table.
31029
31030         * reflection.c (mono_image_build_metadata): Avoid using the same loop
31031         variable in the inner and outer loops.
31032
31033 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
31034
31035         * metadata.h (mono_metadata_make_token): Put parentheses around macro
31036         argument.
31037
31038         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
31039         
31040         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
31041         icalls. Instead, do everything in managed code. This is needed since
31042         it is hard to restore the original domain etc. in unmanaged code in the
31043         presence of undeniable exceptions.
31044
31045         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
31046         New icalls to push and pop appdomain refs.
31047
31048 2003-10-31  Martin Baulig  <martin@ximian.com>
31049
31050         * class.c (inflate_generic_type): Renamed to
31051         mono_class_inflate_generic_type() and made it public.
31052
31053         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
31054         New interncall.
31055
31056         * loader.c (mono_field_from_memberref): Also set the retklass for
31057         typespecs.
31058
31059         * fielder.c (mono_image_get_inflated_field_token): New static
31060         method; creates a metadata token for an inflated field.
31061         (mono_image_create_token, fixup_method): Added support for
31062         "MonoInflatedField".
31063         (fieldbuilder_to_mono_class_field): New static function.
31064         (mono_reflection_inflate_field): New public function.
31065
31066         * reflection.h
31067         (MonoReflectionGenericInst): Added `MonoArray *fields'.
31068         (MonoReflectionInflatedField): New typedef.     
31069
31070 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
31071
31072         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
31073         for Solaris and other platforms without s6_addr16
31074
31075 2003-10-30  Martin Baulig  <martin@ximian.com>
31076
31077         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
31078         argument instead of two.
31079         (mono_class_inflate_generic_signature): Likewise.
31080         (inflate_generic_header): Likewise.
31081         (mono_class_inflate_generic_method): Likewise.  In addition, if
31082         `ginst->klass' is set, it becomes the new `method->klass'.
31083
31084         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
31085         field.
31086
31087         * reflection.c (encode_generic_method_sig): Write a 0xa as the
31088         first byte. [FIXME]
31089         (method_encode_methodspec): If we have generic parameters, create
31090         a MethodSpec instead of a MethodRef.
31091         (fixup_method): Added support for "MonoInflatedMethod" and
31092         "MonoInflatedCtor".
31093         (mono_image_create_token): Added support for "MonoInflatedMethod"
31094         and "MonoInflatedCtor".
31095         (inflated_method_get_object): New static function; returns a
31096         managed "System.Reflection.MonoInflatedMethod" object.
31097         (mono_reflection_bind_generic_method_parameters): Return a
31098         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
31099         (mono_reflection_inflate_method_or_ctor): Likewise.
31100         (mono_image_get_generic_method_param_info): Initialize unused
31101         fields to zero.
31102         (mono_image_get_generic_param_info): Likewise.
31103
31104         * reflection.h (MonoReflectionInflatedMethod): New public
31105         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
31106         "S.R.MonoInflatedCtor" classes.
31107
31108         * loader.c (method_from_memberref): If we're a TypeSpec and it
31109         resolves to a generic instance, inflate the method.
31110
31111 2003-10-28  Dick Porter  <dick@ximian.com>
31112
31113         * object.c (mono_runtime_run_main): Convert command-line arguments
31114         into utf8, falling back to the user's locale encoding to do so.
31115
31116 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
31117
31118         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
31119         at this time.
31120
31121         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
31122
31123         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
31124         up icalls at method definition time. Partially fixes #33569.
31125
31126 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
31127
31128         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
31129         marshalling of arrays. Fixes #50116.
31130
31131         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
31132
31133         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
31134         points to a vtable in the dying appdomain.
31135
31136         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
31137         listeners into unmanaged code inside the lock.
31138
31139         * object.c (mono_class_vtable): Turn off typed allocation in non-root
31140         domains and add some comments.
31141
31142 2003-10-25  Martin Baulig  <martin@ximian.com>
31143
31144         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
31145
31146         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
31147
31148         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
31149         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
31150         currently parsing.  Create the generic class and store it in
31151         `generic_inst->klass' before parsing the type arguments.  This is
31152         required to support "recursive" definitions; see mcs/tests/gen-23.cs
31153         for an example.
31154         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
31155         to support recursive typespec entries.
31156
31157         * class.c (mono_class_setup_parent): If our parent is a generic
31158         instance, we may get called before it has its name set.
31159         (mono_class_from_generic): Splitted into
31160         mono_class_create_from_generic() and mono_class_initialize_generic().
31161
31162 2003-10-25  Martin Baulig  <martin@ximian.com>
31163
31164         * icall.c (ves_icall_Type_BindGenericParameters): Return a
31165         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
31166         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
31167         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
31168
31169         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
31170         (create_typespec): Likewise.
31171         (mono_reflection_bind_generic_parameters): Return a
31172         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
31173         (mono_reflection_inflate_method_or_ctor): New public function.
31174
31175         * reflection.h (MonoReflectionGenericInst): New typedef.        
31176
31177 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
31178
31179         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
31180         inside the domain lock. Fixes #49993.
31181         
31182         * object.c (mono_class_vtable): When typed allocation is used, 
31183         allocate vtables in the GC heap instead of in the mempool, since the
31184         vtables contain GC descriptors which are used by the collector even
31185         after the domain owning the mempool is unloaded.
31186
31187         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
31188
31189         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
31190         reflect what it does. Also invalidate mempools instead of freeing
31191         them if a define is set.
31192
31193         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
31194         of the appdomain.
31195         
31196         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
31197         hold the finalizable objects in this domain.
31198
31199         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
31200         appdomain.
31201
31202         * appdomain.c (mono_domain_set): New function to set the current
31203         appdomain, but only if it is not being unloaded.
31204
31205         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
31206         appdomain which is being unloaded.
31207         
31208         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
31209         unloading of the root appdomain.
31210
31211         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
31212         icall to execute a method in another appdomain. Intended as a 
31213         replacement for InternalSetDomain, which can confuse the code 
31214         generation in the JIT.
31215
31216         * appdomain.c (mono_domain_is_unloading): New function to determine
31217         whenever an appdomain is unloading.
31218
31219         * appdomain.c (mono_domain_unload): New function to correctly unload
31220         an appdomain.
31221
31222         * assembly.c (mono_assembly_load_references): Check that an assembly
31223         does not references itself.
31224
31225         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
31226         domain manually, it asks the finalizer thread to do it, then waits for
31227         the result. Also added a timeout.
31228
31229         * icall.c: Register the new icalls.
31230
31231         * threads.h threads.c: Export the mono_gc_stop_world and 
31232         mono_gc_start_world functions.
31233         
31234         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
31235         function to fill out the mempool with 0x2a.
31236
31237 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
31238
31239         * reflection.h (MonoReflectionMethodAux): New structure to store
31240         information which is rarely used, thus is not in the MonoMethod
31241         structure.
31242
31243         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
31244         store the aux info.
31245
31246         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
31247         and marshalling info into the aux structure.
31248
31249         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
31250         from the aux structure.
31251
31252         * loader.c (mono_method_get_param_names): Retrieve the param names from
31253         the aux structure.
31254         
31255 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
31256
31257         * exception.h exception.c: Add AppDomainUnloadedException && fix 
31258         warning.
31259
31260 2003-10-21  Dick Porter  <dick@ximian.com>
31261
31262         * socket-io.c
31263         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
31264         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
31265
31266 2003-10-21  Martin Baulig  <martin@ximian.com>
31267
31268         * reflection.c (mono_reflection_bind_generic_parameters):
31269         `klass->parent' is NULL for interfaces.
31270
31271 2003-10-21  Martin Baulig  <martin@ximian.com>
31272
31273         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31274
31275 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
31276
31277         * exception.c (mono_exception_from_name_msg): New helper function for
31278         creating exceptions and initializing their message field.
31279
31280         * exception.c: Simplify functions using the new helper.
31281
31282         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
31283         New function.
31284
31285         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
31286         mono_raise_exception, since otherwise gcc doesn't generate the function
31287         epilog for raise_exception, confusing the stack unwinding in the JIT.
31288         Fixes #45043.
31289
31290         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
31291         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
31292         Fixes #49499.
31293
31294 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31295
31296         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
31297         utf8.
31298
31299 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
31300
31301         * icall.c: Removed GetUninitializedObject method because
31302           AllocateUninitializedClassInstance does the same.
31303
31304 2003-10-18  Martin Baulig  <martin@ximian.com>
31305
31306         * class.c (inflate_generic_signature): Renamed to
31307         mono_class_inflate_generic_signature() and made it public.
31308         (my_mono_class_from_generic_parameter): New static function; if we
31309         don't already have the generic parameter's MonoClass, create a
31310         very simple one which is just used internally in the runtime and
31311         not passed back to managed code.
31312
31313         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
31314
31315         * metadata.h (MonoMethodSignature): Moved the
31316         `MonoGenericParam *gen_params' to the MonoMethodHeader.
31317         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
31318
31319         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
31320         ves_icall_MonoMethod_GetGenericArguments(); this is now an
31321         interncall on the MonoMethod class, not on MethodInfo.
31322         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
31323         calling mono_reflection_bind_generic_method_parameters() directly.
31324
31325         * loader.c (mono_method_get_signature): If this is a MethodSpec;
31326         return the already computed `method->signature'.
31327         (method_from_methodspec): New static function to load a method
31328         from a MethodSpec entry.
31329         (mono_get_method_from_token): Call the new method_from_methodspec()
31330         for MethodSpec tokens.  
31331         (mono_get_method_from_token): If we're a generic method, load the
31332         type parameters.
31333
31334         * reflection.c (mono_image_get_memberref_token): Allow
31335         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
31336         table.
31337         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
31338         (mono_image_create_token): First check whether it's a generic
31339         method (so we'd need to create a MethodSpec), then do the other
31340         two alternatives.
31341         (mono_reflection_bind_generic_method_parameters): Return a
31342         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
31343         called directly from the interncall.
31344
31345 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
31346
31347         * reflection.c (load_public_key): Move loading of the public key
31348         into managed code.
31349
31350         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
31351
31352         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
31353         fields.
31354
31355         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
31356         culture, hash_alg and public_key. Fixes #49555.
31357
31358 2003-10-17  Martin Baulig  <martin@ximian.com>
31359
31360         * class.h (MonoGenericInst): Moved this declaration here and added
31361         `MonoMethod *generic_method'.
31362
31363         * icall.c
31364         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
31365         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
31366
31367         * metadata.c (mono_metadata_type_equal): Two types of
31368         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
31369         index; ie. don't compare the address of the `MonoGenericParam'
31370         structure.
31371         (mono_metadata_load_generic_params): Removed the `MonoMethod
31372         *method' argument.
31373
31374         * metadata.h (MonoGenericInst): Moved declaration to class.h.
31375         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
31376
31377         * reflection.c (method_encode_signature): Encode the number of
31378         generic parameters.
31379         (encode_generic_method_sig): New static function.
31380         (method_encode_methodspec): New static function; creates an entry
31381         in the MethodSpec table for a generic method.
31382         (mono_image_get_methodspec_token): New static function.
31383         (mono_image_create_token): Call mono_image_get_methodspec_token()
31384         for generic methods.
31385         (mono_reflection_bind_generic_method_parameters): New public
31386         function.  Instantiates a generic method.
31387
31388 2003-10-16  Martin Baulig  <martin@ximian.com>
31389
31390         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
31391         *gen_params' here from MonoMethodHeader.
31392
31393         * metadata.c (mono_metadata_parse_method_signature): If we have
31394         generic parameters, initialize `method->gen_params' and then set
31395         the correct `type->data.generic_param' in all the parameters.
31396
31397 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
31398
31399         * threads.c (mono_threads_get_default_stacksize): New function to 
31400         return the default stacksize.
31401
31402         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
31403         termination of the finalizer thread, since the previous method had
31404         race conditions. Fixes #49628.
31405
31406         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
31407         as for the other managed threads.
31408
31409 2003-10-16  Martin Baulig  <martin@ximian.com>
31410
31411         * class.c (inflate_generic_signature): Copy `generic_param_count'
31412         and `gen_params'.
31413
31414         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
31415         New interncall.
31416
31417         * metadata.c (mono_metadata_parse_method_signature): Actually set
31418         the `method->generic_param_count' here.
31419         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
31420
31421 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
31422
31423         * object.h: Add a new field to TypedRef to simplify the implementation
31424         of the REFANY opcodes in the JIT.
31425
31426         * icall.c: Make use of the new field.
31427
31428         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
31429         dynamically.
31430
31431 2003-10-15  Martin Baulig  <martin@ximian.com>
31432
31433         * class.c (mono_class_from_gen_param): Renamed to
31434         mono_class_from_generic_parameter() and moved most of the
31435         functionality from mono_reflection_define_generic_parameter()
31436         here; ie. we create a "real" class here.
31437         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
31438         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
31439         previously been called.
31440
31441         * class.h (MonoGenericParam): Moved the declaration of this struct
31442         here from metadata.h and added `MonoMethod *method'.
31443
31444         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
31445         interncall.
31446
31447         * loader.c (mono_get_method_from_token): If we have any generic
31448         parameters, call mono_metadata_load_generic_params() to read them
31449         from the MONO_TABLE_GENERICPAR.
31450
31451         * metadata.c (mono_metadata_load_generic_params): Added
31452         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
31453
31454         * metadata.h (MonoMethodSignature): Replaced
31455         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
31456         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
31457
31458         * reflection.c (mono_reflection_define_generic_parameter): Moved
31459         most of the functionality into the new
31460         mono_class_from_generic_parameter(); set the `method' field if
31461         we're a method parameter.       
31462
31463 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
31464
31465         * marshal.c (emit_struct_conv): if native size is 0
31466         emit no code.
31467
31468 2003-10-14  Martin Baulig  <martin@ximian.com>
31469
31470         * icall.c: The generics API has changed in the spec since it was
31471         added to System.Type; these modifications make it match the spec
31472         again.
31473         (ves_icall_Type_GetGenericParameters): Renamed to
31474         `ves_icall_Type_GetGenericArguments'.
31475         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
31476         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
31477         `ves_icall_MonoType_get_HasGenericArguments'.
31478         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
31479         `ves_icall_MonoType_get_IsGenericParameter'.
31480         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
31481         this is no interncall anymore.
31482         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
31483         `ves_icall_TypeBuilder_get_IsGenericParameter'.
31484
31485 2003-10-14  Martin Baulig  <martin@ximian.com>
31486
31487         * reflection.c (mono_reflection_bind_generic_parameters): Also
31488         inflate generic methods if we're reading the class from IL.
31489
31490 2003-10-13  Martin Baulig  <martin@ximian.com>
31491
31492         * reflection.c (mono_reflection_define_generic_parameter): This
31493         method isn't called directly from the icall anymore; take a
31494         `MonoReflectionAssemblyBuilder *' so we can use this for type and
31495         method generic parameters.
31496         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
31497         (method_builder_encode_signature): Encode generic parameters.
31498         (mono_image_get_method_info): Write generic params to the
31499         MONO_TABLE_GENERICPARAM table.
31500
31501         * reflection.h (MonoReflectionMethodBuilder): Added
31502         `MonoArray *generic_params'.
31503
31504         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
31505
31506         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
31507         wrapper for mono_reflection_define_generic_parameter().
31508         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
31509
31510 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
31511
31512         * marshal.h: Add missing function to fix build.
31513
31514         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
31515         the SetLastError pinvoke attribute.
31516
31517         * marshal.c (mono_marshal_set_last_error): New helper function called
31518         by the generated code.
31519         
31520         * marshal.c (mono_mb_emit_branch): New helper function.
31521
31522         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
31523
31524         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
31525         classes as parameters and return values of delegates. Fixes #29256. 
31526
31527 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
31528
31529         * locales.c: use gint32 in non HAVE_ICU case
31530
31531 2003-10-11  Martin Baulig  <martin@ximian.com>
31532
31533         * mono-debug.c (mono_debug_add_method): Added a workaround for
31534         bug #48591.
31535
31536 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
31537
31538         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
31539         delegates passed to native code must use the STDCALL calling 
31540         convention. Fixes #35987.
31541
31542 2003-10-10  Martin Baulig  <martin@ximian.com>
31543
31544         * class.c (inflate_generic_type): If we're inflating for a generic
31545         type instance (and not for a generic method), return
31546         MONO_TYPE_MVAR unchanged.
31547
31548 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31549
31550         * string-icalls.c: Join ignores null strings in the source array.
31551         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
31552         * threads.c: GetAvailableTheads is slightly more accurate.
31553
31554 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
31555
31556         * threads.h threads.c : add mono_threads_set_default_stacksize
31557         and pass default to CreateThread calls.
31558
31559 2003-10-09  Dick Porter  <dick@ximian.com>
31560
31561         * icall.c:
31562         * locales.h:
31563         * locales.c: Internal calls for constructing CultureInfo and
31564         related objects from libicu (if its available.)
31565
31566 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
31567
31568         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
31569
31570 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31571
31572         * threadpool.c: added an argument to async_invoke_thread that is the
31573         item to process, pass the MonoAsyncResult to the thread start function
31574         when creating a new thread. This way we don't need to acquire any lock
31575         when we're creating a new thread. Readded a semaphore for faster
31576         response times (instead of that Sleep i added).
31577
31578 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
31579
31580         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31581         get daylight change dates better on Windows, fix handling
31582         of platforms without tm_gmtoff.
31583
31584 2003-10-06  Martin Baulig  <martin@ximian.com>
31585
31586         * class.c (inflate_generic_method): Renamed to
31587         mono_class_inflate_generic_method() and made public.
31588         (mono_class_init): Don't inflate the generic methods here.
31589         (mono_class_from_generic): Added `gboolean inflate_methods'
31590         argument.  Inflate the methods here.
31591
31592         * loader.c (mono_method_get_param_names): Ignore instances of
31593         generic types for the moment.
31594
31595         * reflection.c (fixup_method): Added support for inflated methods.
31596         (mono_image_create_token): Use mono_image_get_methodref_token()
31597         for inflated methods.
31598         (mono_custom_attrs_from_param): Ignore instances of generic types
31599         for the moment.
31600         (mono_reflection_bind_generic_parameters): New public function.
31601         Moved all the functionality from
31602         ves_icall_Type_BindGenericParameters() here and added support for
31603         dynamic types.
31604         (mono_reflection_define_generic_parameter): Initialize
31605         `klass->methods' here.
31606
31607         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
31608         functionality into mono_reflection_define_generic_parameter().
31609         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
31610         TypeBuilder, return that TypeBuilder.
31611
31612 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31613
31614         * appdomain.c: removed mono_delegate_semaphore.
31615
31616         * threadpool.c:
31617         (mono_thread_pool_add): moved hash table creation inside and the thread 
31618         creation outside of the critical region.
31619         (mono_thread_pool_finish): removed obsolete code.
31620         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
31621         continue or exit the thread depending on the queue.
31622
31623 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
31624
31625         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
31626         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
31627         handle more bool marshalling options
31628
31629 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
31630
31631         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
31632         arrays of structs. Also add a more descriptive error message when
31633         a structure member is marshalled as LPArray.
31634
31635 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
31636
31637         * marshal.c (mono_marshal_get_native_wrapper): Add support for
31638         marshalling arrays of complex types. Fixes #29098. Also remove an
31639         usused and incomplete function.
31640
31641 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
31642
31643         * gc.c: report heap_size - free_bytes as total memory allocated
31644         (bug#49362).
31645
31646 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
31647
31648         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
31649         fix timezone handling problems on Windows.
31650         
31651         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
31652         asserts when the year is outside the range handled by ms the functions.
31653
31654         * class.c (setup_interface_offsets): If the class is an interface,
31655         fill out its interface_offsets slot.
31656
31657 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31658
31659         * threadpool.c: mark threadpool threads as background.
31660
31661 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
31662
31663         * decimal.c - define DECINLINE to nothing if not using GCC
31664
31665 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
31666
31667         * assembly.c: More refcount fixes.
31668
31669 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31670
31671         * string-icalls.c: if we're not trimming, return the same string.
31672         When not splitting, don't create a new string.
31673
31674 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31675
31676         * image.c:
31677         (mono_image_open): increment the ref_count inside the critical section.
31678
31679 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
31680
31681         * image.c (mono_image_open): Fix reference counting bug.
31682
31683 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
31684
31685         * marshal.c (mono_marshal_type_size) struct alignment changed for 
31686         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
31687         64bits. Avoid leak in mono_marshal_get_native_wrapper when
31688         mono_lookup_pinvoke_call throws.        
31689
31690 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
31691
31692         * reflection.c (mono_reflection_parse_type): Fix #49114.
31693
31694         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
31695         temporary workaround for cygwin header problem.
31696
31697         * object.c (mono_object_isinst): Synchronize this with the code
31698         generated by the JIT for casts.
31699
31700 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
31701
31702         * reflection.c (encode_type): Fix #38332.
31703
31704 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
31705
31706         * marshal.c (mono_marshal_method_from_wrapper): New function to return
31707         the original method from the wrapper method.
31708
31709 2003-09-25  Martin Baulig  <martin@ximian.com>
31710
31711         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
31712         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
31713         (ves_icall_Type_get_IsGenericInstance): New interncall.
31714
31715 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
31716
31717         * object.c: fix cast warning in big endian code.
31718
31719 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
31720
31721         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
31722         
31723 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31724
31725         * assembly.c: don't call check_env from mono_assembly_load. It's
31726         already done once in mono_assemblies_init and may cause headaches when
31727         multiple threads are loading assemblies.
31728
31729 2003-09-19  Martin Baulig  <martin@ximian.com>
31730
31731         * reflection.c (mono_reflection_define_generic_parameter): Don't
31732         allocate `klass->methods', set `klass->flags' to
31733         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
31734
31735 2003-09-18  Martin Baulig  <martin@ximian.com>
31736
31737         * class.c (mono_class_init): Don't create `class->methods' if it's
31738         already initialized.
31739
31740         * metadata.c (mono_metadata_load_generic_params): Make this
31741         actually work.
31742
31743         * reflection.c (mono_reflection_define_generic_parameter): Set
31744         parent class and interfaces from the constraints.
31745
31746         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
31747         to keep this struct in sync with the declaration in TypeBuilder.cs.
31748
31749 2003-09-17  Martin Baulig  <martin@ximian.com>
31750
31751         * metadata.h (MonoType): Replaced the data's `int type_param'
31752         field with `MonoGenericParam *generic_param'.
31753         (MonoGenericParam): Added `MonoClass *klass'.
31754
31755         * class.c (mono_class_from_gen_param): Removed the
31756         `MonoImage *image' and `int type_num' arguments.
31757
31758         * metadata.c (mono_metadata_parse_generic_param): New static
31759         method; creates a MonoGenericParam which just contains the index.
31760         (do_mono_metadata_parse_type): Call
31761         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
31762         MONO_TYPE_MVAR.
31763
31764         * reflection.c (mono_image_typedef_or_ref): Generic type
31765         parameters may be in the same assembly, but never use a typedef
31766         for them.
31767         (mono_reflection_define_generic_parameter): We're now creating a
31768         "real" class for the type parameter; it's now safe to call
31769         mono_class_from_mono_type() on the class'es type, it'll do the
31770         right thing.
31771
31772 2003-09-16  Martin Baulig  <martin@ximian.com>
31773
31774         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
31775         `symfile->range_entry_size' and `symfile->class_entry_size' here;
31776         the `symfile' data structure must be fully initialized before it
31777         gets added to the table.
31778
31779 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
31780
31781         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
31782
31783         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
31784         class init trampolines.
31785
31786 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
31787
31788         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
31789         to the built-in profiler to turn off time and allocation profiling
31790         respectively.
31791
31792 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
31793
31794         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
31795         g_direct_equal.
31796
31797         * debug-helpers.c (mono_method_full_name): Print the wrapper type
31798         in human readable form.
31799
31800 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
31801
31802         * reflection.c icall.c: Fixed warnings.
31803
31804         * image.c (load_class_names): Use a temporary hash table to hold the
31805         namespaces in order to avoid doing many string comparisons.
31806
31807         * image.h: Fix typo.
31808
31809         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
31810         Pass NULL instead of g_direct_equal to the GHashTable constructor 
31811         since the NULL case is short-circuited inside g_hash_table_lookup, 
31812         leading to better performance.  
31813
31814         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
31815         obtain the first custom attribute for a given index. Depends on the
31816         CustomAttribute table being sorted by the parent field.
31817
31818         * reflection.c (mono_custom_attrs_from_index): Use the new function 
31819         for better performance.
31820
31821 2003-09-07  Martin Baulig  <martin@ximian.com>
31822
31823         * class.c (mono_class_init): If we're a generic instance, inflate
31824         all our methods instead of loading them from the image.
31825         (mono_class_from_generic): Set `class->methods = gklass->methods'.
31826
31827 2003-09-07  Martin Baulig  <martin@ximian.com>
31828
31829         * mono-debug-debugger.c: Added support for constructors.
31830
31831 2003-09-06  Martin Baulig  <martin@ximian.com>
31832
31833         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
31834         New interncall.
31835
31836         * reflection.c (mono_reflection_setup_generic_class): Call
31837         ensure_runtime_vtable() to create the vtable.
31838
31839 2003-09-05  Martin Baulig  <martin@ximian.com>
31840
31841         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
31842         MONO_TYPE_MVAR.
31843
31844 2003-09-04  Martin Baulig  <martin@ximian.com>
31845
31846         * reflection.c (mono_reflection_define_generic_parameter): Generic
31847         parameters start with zero.
31848
31849 2003-09-04  Martin Baulig  <martin@ximian.com>
31850
31851         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
31852
31853         * reflection.h (MonoReflectionGenericParam): New typedef.
31854         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
31855         the generic parameters from the managed TypeBuilder.
31856
31857         * reflection.c (mono_reflection_define_generic_parameter): New function.
31858         (mono_reflection_create_runtime_class): Encode generic parameters.
31859         (mono_reflection_setup_generic_class): New function; this is
31860         called after adding adding all generic params to the TypeBuilder.
31861         (encode_type): Added MONO_TYPE_VAR.
31862
31863 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
31864
31865         * class.h class.c (mono_class_needs_cctor_run): Moved this method
31866         here from the JIT.
31867
31868         * assembly.h assembly.c: Moved the AOT loading code into an assembly
31869         load hook.
31870
31871 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
31872
31873         * reflection.h reflection.c class.h class.c: Delete duplicate 
31874         definition of mono_type_get_name () from reflection.c and export the
31875         one in class.c.
31876
31877         * class.c: Class loading fixes from Bernie Solomon 
31878         (bernard@ugsolutions.com).
31879
31880         * reflection.c: Endianness fixes from Bernie Solomon 
31881         (bernard@ugsolutions.com).
31882         
31883 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
31884
31885         * assembly.h assembly.c: Define a file format version for AOT
31886         libraries.
31887         
31888         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
31889
31890         * appdomain.h (MonoJitInfo): New field to determine whenever the
31891         code is domain neutral.
31892         
31893 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
31894
31895         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
31896
31897 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
31898
31899         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
31900         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
31901         Avoid caching the result since strings must be domain specific. Fixes
31902         #48050.
31903
31904 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
31905
31906         * marshal.c (mono_marshal_init): Make this callable multiple times
31907         since it is hard to find a correct place to call it.
31908
31909         * object.c (mono_runtime_class_init): Execute static constructors in
31910         the correct appdomain.
31911
31912         * image.c (build_guid_table): Handle the case when multiple images have
31913         the same GUID.
31914
31915 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31916
31917         * icall.c: added a couple of icalls for System.Web.
31918
31919 2003-08-28  Martin Baulig  <martin@ximian.com>
31920
31921         * icall.c (ves_icall_Type_BindGenericParameters): Use
31922         `klass->generic_inst' instead of `&klass->byval_arg' in the
31923         mono_type_get_object() call.  The returned type must be
31924         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
31925
31926 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
31927
31928         * NOTES: New file.
31929
31930         * object.c (mono_class_proxy_vtable): Make it thread safe.
31931
31932         * pedump.c: Fix warning.
31933
31934         * object.c appdomain.h: Get rid of metadata_section. 
31935         It is no longer needed and it was causing deadlocks with domain->lock.
31936
31937         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
31938
31939 2003-08-26  Martin Baulig  <martin@ximian.com>
31940
31941         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
31942
31943 2003-08-26  Martin Baulig  <martin@ximian.com>
31944
31945         * pedump.c (main): Call mono_metadata_init(),
31946         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
31947         and mono_loader_init().
31948
31949 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
31950
31951         * loader.h: Add missing include to fix build.
31952
31953         * image.h: mono_image_load_references is no more.
31954
31955         * assembly.c: Reworked assembly loading to make it really thread safe.
31956         After these changes, the assembly returned by mono_assembly_open is
31957         fully initialized, i.e. all its references assemblies are loaded.
31958
31959         * assembly.c (mono_image_load_references): Renamed to 
31960         mono_assembly_load_references, and made private, since clients no
31961         longer need to call it.
31962
31963         * class.c: Removed calls to mono_assembly_load_references, since it was
31964         a source of deadlocks.
31965
31966         * loader.h loader.c class.h class.c: Protect data structures using a 
31967         new lock, the loader lock.
31968
31969         * class.c (mono_class_setup_vtable): Create temporary hash tables and
31970         GPtrArrays only when needed.
31971
31972         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
31973         into empty structures by mcs. Fixes pinvoke7.cs.
31974         
31975         * domain.c (mono_init): Call a new initialization function.
31976
31977         * appdomain.c (mono_runtime_init): Call the new initializer function
31978         of the marshal module.
31979
31980         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
31981         inserted into empty structures by mcs. Fixes pinvoke7.cs.
31982
31983         * marshal.h marshal.c: Added locks around the wrapper caches to make
31984         this module thread safe.
31985
31986         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
31987         this argument. Fixes pinvoke1.exe.
31988
31989 2003-08-25  Lluis Sanchez <lluis@ximian.com>
31990
31991         * object.h: Added call_type field to MonoMethodMessage and the corresponding
31992         enumeration of values. Removed fields to store remote call output values in
31993         MonoAsyncResult. Not needed any more.
31994         * object.c: Initialize call_type and async_result fields in mono_message_init.
31995         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
31996         dispatching the message.
31997         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
31998         async call to finish. To do it use a message with EndInvoke call type.
31999
32000 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
32001
32002         * loader.h loader.c (mono_method_hash_marhal_info): New function which
32003         determines whenever a method has marshalling info.
32004
32005 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32006
32007         * assembly.c: fix the build on windows.
32008
32009 2003-08-22 Lluis Sanchez <lluis@ximian.com>
32010
32011         * object.cs: Fixed bug #47785.
32012
32013 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
32014
32015         * string-icalls.c (StringReplace): If their are no occurances of
32016         the old string found return a reference to the supplied
32017         string. This saves some memory and matches MS behavoir.
32018         
32019 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32020
32021         * socket-io.c: fixed compilation for systems that define AF_INET6
32022         and don't define SOL_IP/SOL_IPV6.
32023
32024 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
32025
32026         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
32027         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
32028
32029         * rawbuffer.c rawbuffer.h: Make this module thread safe.
32030
32031         * domain.c: Make this module thread safe.
32032
32033         * domain.c (mono_init): Call new initialization function.
32034
32035         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
32036         reference types too. Fixes #38812.
32037
32038         * image.c (mono_image_init): Fixed warnings.
32039
32040         * class.c (mono_class_from_typeref): Handle assembly load failure
32041         correctly.
32042
32043         * appdomain.c (add_assemblies_to_domain): Handle the case when
32044         the references of an assembly are not yet loaded.
32045
32046         * metadata.c image.c assembly.c: Moved initialization of global
32047         variables to a separate function called at startup since lazy 
32048         initialization of these variables is not thread safe.
32049         
32050         * image.c assembly.c: Made this module thread safe by adding locks in 
32051         the appropriate places.
32052
32053         * domain.c (mono_init): Call the new initialization functions of the
32054         three modules.
32055
32056 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
32057
32058         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
32059           make a direct call. It is proxy's work to make the call asynchronous.
32060           mono_delegate_end_invoke(): If the targe is a proxy, just collect
32061           the return values.
32062         * object.cs: mono_method_call_message_new(): read AsyncResult and
32063           state object from parameters list, if this info is requested.
32064         * object.h: Added fields to store remote call output values in
32065           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
32066
32067 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32068
32069         * object.h: add needed fields to MonoThread.
32070         * threads.c, threads.h: allow registering a function to cleanup data
32071         allocated per thread by the JIT.
32072
32073 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32074
32075         * loader.h: portability fix by Bernie Solomon
32076         * <bernard@ugsolutions.com>.
32077
32078 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
32079
32080         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
32081         return a MonoArray. This simplifies the code and also ensures that
32082         the cache allways contains an object reference as a value.
32083
32084         * icall.c (ves_icall_get_parameter_info): Simplified using the new
32085         function.
32086
32087 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32088
32089         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
32090         fixes a problem with byte ordering when getting the address family for
32091         a socket.
32092
32093 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
32094
32095         * .cvsignore: Added monosn.
32096
32097         * reflection.h reflection.c loader.c: Added support for parameter
32098         marshalling to dynamically created types. Fixes #47295.
32099
32100 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
32101
32102         * rand.c: remove useless warnings.
32103
32104 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32105
32106         * class.c: implemented ldtoken for methods and fieldrefs.
32107
32108 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32109
32110         * threadpool.c: when mono_async_invoke was called, no one took care of
32111         monitoring the queue. So if the method invoked took some time and we
32112         got new async invoke requests after 500 ms (the thread created waited
32113         that long in WaitForSingleObject), the new async invoke was not called
32114         until the previous one finished.
32115
32116         This is fixed now. Thanks to Totte for helping with it.
32117
32118 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32119
32120         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
32121
32122 2003-08-11  Martin Baulig  <martin@ximian.com>
32123
32124         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
32125
32126 2003-08-06  Martin Baulig  <martin@ximian.com>
32127
32128         * mono-debug-debugger.c: Added support for static fields,
32129         properties and methods.
32130
32131 2003-08-06  Martin Baulig  <martin@ximian.com>
32132
32133         * mono-debug-debugger.c: Don't store the MonoString's vtable to
32134         make this work for applications with multiple application domains.
32135
32136 2003-08-04  Martin Baulig  <martin@ximian.com>
32137
32138         * mono-debug-debugger.c: Completely reworked the type support; the
32139         most important thing is that we're now just using one single
32140         `MonoType' instance per type.
32141
32142 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
32143
32144         * mono-endian.h, mono-endian.c, icall.c: Added icall
32145         ves_icall_System_Double_AssertEndianity to assert double word endianity
32146         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
32147
32148 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32149
32150         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
32151         support, icalls and fixes.
32152
32153 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
32154
32155         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
32156         classes that are a punctuation character in .NET is not the same a
32157         g_unichar_ispunct.
32158
32159 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32160
32161         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
32162
32163 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
32164
32165         * icall.c: Add new MemCopy internalcall.
32166         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
32167         Simplified code; It is not necessary to handle all the cases here,
32168         as the C# code takes care of it.  Only handle the case of the name
32169         resource embedded into the assembly.
32170
32171         Changed signature to return the data pointer and the size of the
32172         data. 
32173
32174 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
32175
32176         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
32177         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
32178
32179 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32180
32181         * socket-io.c: ignore EINTR error in select.
32182
32183 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32184
32185         * class.h, class.c: removed unused subclasses field in MonoClass.
32186
32187 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
32188
32189         * icall.c: improve fix of get_base_definition(). If the parent class
32190           doesn't have the mehod, look at the parent of the parent.
32191         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
32192           to check if a parameter is an in or out parameter
32193           (PARAM_ATTRIBUTE_IN is not set by default).
32194           mono_method_return_message_restore(): Use mono_class_value_size to
32195           get the size of a value type. mono_type_stack_size (parameterType)
32196           does not return the correct value if parameterType is byRef.
32197           mono_load_remote_field(), mono_load_remote_field_new(),
32198           mono_store_remote_field(), mono_store_remote_field_new():
32199           raise exception if the remote call returns an exception.
32200
32201 2003-07-28  Martin Baulig  <martin@ximian.com>
32202
32203         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
32204         method.  This is a wrapper around mono_runtime_invoke() which
32205         boxes the instance object if neccessary.
32206
32207 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32208
32209         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
32210         metadata.h, row-indexes.h, verify.c: first cut of generics support.
32211
32212 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32213
32214         * icall.c: disable mcs bug workaround.
32215
32216 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
32217
32218         * object.c (mono_runtime_class_init): Take the metadata_section
32219         mutex before obtaining the domain mutex.
32220
32221         * appdomain.h: Added definition of metadata_section mutex here. 
32222
32223         * object.c: define metadata_mutex here.
32224
32225 2003-07-24  Ravi Pratap  <ravi@ximian.com>
32226
32227         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
32228         fixed.
32229
32230 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
32231
32232         * reflection.c: Fix bug #46669
32233
32234 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32235
32236         * exception.c:
32237         * exception.h:
32238         * icall.c:
32239         * object.h: fill in the type name for TypeLoadException.
32240
32241 2003-07-23  Ravi Pratap  <ravi@ximian.com>
32242
32243         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
32244         relationship between TypeBuilders while compiling corlib) and bug
32245         45993 (Array types returned from the runtime while compiling
32246         corlib were from the loaded corlib).
32247
32248 2003-07-22  Martin Baulig  <martin@ximian.com>
32249
32250         * mono-debug-debugger.c: Reworked the type support a bit more;
32251         distinguish between types and classes.
32252
32253 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
32254
32255         * icall.c: add IsArrayImpl icall.
32256
32257 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
32258
32259         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
32260         initializing real_size only once. Also fix bug #46602.
32261
32262 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
32263
32264         * object.c: Renamed mono_metadata_section to metadata_section.
32265
32266 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
32267
32268         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
32269           empty array if the type is an array. Fixed.
32270           ves_icall_MonoMethod_get_base_definition: if the base method
32271           is abstract, get the MethodInfo from the list of methods of
32272           the class.
32273         * reflection.c: ParameterInfo.PositionImpl should be zero-based
32274           and it was 1-based. Fixed in mono_param_get_objects.
32275
32276 2003-07-20  Martin Baulig  <martin@ximian.com>
32277
32278         * mono-debug.h: Set version number to 31.
32279         (mono_debug_init): Added `MonoDomain *' argument.
32280
32281         * mono-debug-debugger.c: Reworked the type support; explicitly
32282         tell the debugger about builtin types; pass the `klass' address to
32283         the debugger.
32284
32285 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
32286
32287         * image.c: Allow new metadata tables to be loaded without a
32288         warning. Also update the warning message to give the new constant value.
32289                 
32290 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
32291
32292         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
32293         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
32294         array type representation changes.
32295
32296 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32297
32298         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
32299         on Environment.Exit () call.
32300
32301 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
32302
32303         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
32304         requires a matching corlib.
32305
32306 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32307
32308         * Changelog: My editor decided to add a CR to each line. Sorry about that.
32309           Committed again without the CRs.
32310         
32311 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
32312
32313         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
32314           getting it from the "this" socket instance. Did not work
32315           if the socket is a subclass of Socket.
32316           Also fixed bug #35371.
32317
32318 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32319
32320         * metadata.c: fixed size for TypedByRef.
32321         * loader.c: when searching for a method, consider the vararg amrker.
32322         * unicode.c, decimal.c: constify some arrays.
32323
32324 2003-07-15  Dick Porter  <dick@ximian.com>
32325
32326         * socket-io.c: Fixed compilation for gcc < 3.2.
32327
32328         Fixed compilation for machines that don't have AF_INET6 (thanks to
32329         Bernie Solomon <bernard@ugsolutions.com> for that part.)
32330
32331         Fixed compile warnings.
32332         
32333         Fixed formatting and line endings.
32334
32335 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
32336
32337         * socket-io.h:
32338         * socket-io.c: Added IPv6 support.
32339
32340 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
32341
32342         * class.c (mono_class_is_assignable_from): New function to implement
32343         the is_assignable_from logic. Used by mono_object_isinst, 
32344         Type::IsAssignableFrom () and the interpreter.
32345
32346         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
32347         Object, even interfaces.
32348         
32349         * object.c (mono_object_isinst): Implement in terms of 
32350         is_assignable_from.
32351
32352         * icall.c (ves_icall_type_is_assignable_from): New icall.
32353
32354 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
32355
32356         * domain.c (foreach_domain): fix compiler warning.
32357
32358 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
32359
32360         * image.c (load_metadata_ptrs): use g_strndup because strndup is
32361         not available on all plattforms
32362
32363 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
32364
32365         * image.h image.c: Store the metadata version string in MonoImage.
32366         * icall.c: New icall to retrieve the image version.
32367         * reflection.c (create_dynamic_image): Fill in the image version field
32368         * reflection.c (build_compressed_metadata): Use the image version
32369         from the image structure.
32370
32371 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32372
32373         * appdomain.c: modified comment.
32374         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
32375         That will be its last iteration when mono_gc_cleanup is called from
32376         mono_runtime_cleanup and before the domain is unloaded.
32377
32378         Fixes bug #45962.
32379
32380 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
32381
32382         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
32383         attributes.
32384
32385 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32386
32387         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
32388         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
32389         Bernie Solomon <bernard@ugsolutions.com>.
32390
32391 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32392
32393         * object.c, object.h: provide mono_object_new_fast() for faster
32394         allocation in some special cases.
32395
32396 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
32397
32398         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
32399         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
32400
32401 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
32402
32403         * threadpool.c: fix leaks.
32404
32405 2003-07-01  Dick Porter  <dick@ximian.com>
32406
32407         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
32408         using MonoGHashTables.  Fixes threadpool bug posted to list.
32409
32410 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
32411
32412         * image.h, image.c: added support to load an assembly from a byte array.
32413         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
32414         assembly bundle support.
32415
32416 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
32417
32418         * threadpool.c (mono_thread_pool_add): keep a reference to the
32419         AsyncResult to prevent GC
32420
32421 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
32422
32423         * class.c: leak fix.
32424
32425 2003-06-25  Dick Porter  <dick@ximian.com>
32426
32427         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
32428         for the async object, the WaitHandle object will close the handle.
32429         Fixes bug 45321.
32430
32431 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32432
32433         * class.c: in mono_array_class_get (), lookup from the hash with the
32434         same type we insert: this works around a bug in
32435         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
32436         lluis. The real fix will have to wait for after the release.
32437
32438 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
32439
32440         * icall.c: fix memory leak when getting type members.
32441
32442 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32443
32444         * reflection.c: added more pubtoken special cases.
32445
32446 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
32447
32448         * class.c: handle field offset correctly when class size
32449         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
32450
32451 2003-06-20  Martin Baulig  <martin@ximian.com>
32452
32453         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
32454         *image' field.
32455
32456 2003-06-20  Martin Baulig  <martin@ximian.com>
32457
32458         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
32459
32460 2003-06-20  Martin Baulig  <martin@ximian.com>
32461
32462         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
32463         just distinguish between variables in registers and variables at
32464         an offset relative to a register.
32465
32466 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32467
32468         * icall.c: #ifdef out latest changes until mcs is fixed.
32469
32470 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32471
32472         * icall.c: return members in metadata order.
32473
32474 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
32475
32476         * icall.c: avoid infinite loop in GetTimeZoneData.
32477
32478 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
32479
32480         * icall.c: added Marshal.Prelink/All icalls.
32481
32482 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
32483
32484         * object.c, object.h: fix warnings and do some overflow checking
32485         when creating arrays.
32486
32487 2003-06-17  Dick Porter  <dick@ximian.com>
32488
32489         * file-io.h:
32490         * file-io.c: File attributes need to be tweaked slightly when
32491         passed from the managed to the w32 world.
32492
32493 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32494         * profiler.h profiler-private.h profiler.c: Rework last patch
32495         based on suggestion by Paolo.
32496         
32497 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
32498
32499         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
32500         instruction level coverage data collection.
32501         * profiler.h profiler.c (: Added new callback function which can be
32502         used by the profiler to limit which functions should have coverage
32503         instrumentation.
32504         * profiler.c (mono_profiler_load): Call g_module_build_path to
32505         generate the file name of the profiler library.
32506
32507 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
32508
32509         * profiler.c, profiler.h, profiler-private.h: added basic block 
32510         coverage profiling API.
32511
32512 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
32513
32514         * reflection.c (mono_reflection_create_runtime_class): Add support
32515         for events in dynamically generated code.
32516
32517         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
32518         not allocated.
32519
32520 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
32521
32522         * icall.c: when getting timezone info, return reasonable values if we
32523         can't get the actual data.
32524
32525 2003-06-14  Dick Porter  <dick@ximian.com>
32526
32527         * threads.c (start_wrapper): Remove the reference to the thread
32528         object in the TLS data, so the thread object can be finalized.
32529         This won't be reached if the thread threw an uncaught exception,
32530         so those thread handles will stay referenced :-( (This is due to
32531         missing support for scanning thread-specific data in the Boehm GC
32532         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
32533
32534 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
32535
32536         * reflection.c: ensure streams and tables are first allocated with
32537         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
32538
32539 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
32540
32541         * icall.c: fixed GetElementType for byrefs (bug# 44792).
32542
32543 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
32544
32545         * reflection.c (mono_reflection_create_runtime_class): Add support for
32546         properties to dynamically created classes.
32547         * reflection.c: Fix a few places where non-MonoObjects were inserted
32548         into the tokens hashtable.
32549
32550 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32551
32552         * object.c: some support to handle out of memory exceptions.
32553
32554 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
32555
32556         * marshal.c (mono_marshal_get_native_wrapper): support reference
32557         return types
32558
32559 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32560
32561         * object.h, object.c: more portability stuff from Bernie Solomon.
32562         Unexport mono_object_allocate(). Added mono_object_unbox ().
32563         Set exitcode when an unhandled exception is thrown.
32564
32565 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
32566
32567         * marshal.c (mono_marshal_get_native_wrapper): use custom
32568         marshaler for return types.
32569
32570 2003-06-10  Dick Porter  <dick@ximian.com>
32571
32572         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
32573         ip_mreq is available
32574
32575 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
32576
32577         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
32578         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
32579         by Bernie Solomon <bernard@ugsolutions.com>.
32580
32581 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
32582
32583         * gc.c (mono_gc_init): Avoid error message on shutdown when
32584         GC_DONT_GC=1 is used.
32585
32586         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
32587         New icall to return the GUID of a module.
32588
32589 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
32590
32591         * class.c: ensure instance size always includes the parent's size
32592         even whem class size is set explicitly (fixes bug#44294).
32593
32594 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32595
32596         * profiler.h, profiler.c: made the simple profiler thread-safe,
32597         get more accurate timing info. Allow the loading of an
32598         externally-developed profiler module.
32599
32600 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
32601
32602         * marshal.c (mono_marshal_get_native_wrapper): improved
32603         class/byref arguments.
32604         (mono_marshal_get_native_wrapper): better string marshaling support.
32605
32606 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
32607
32608         * class.c: ensure .pack and .size are handled correctly and
32609         simplified layout of static fields.
32610
32611 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
32612
32613         * appdomain.c
32614         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
32615
32616         * loader.c (mono_lookup_pinvoke_call): look for modules in the
32617         current directory (fix bug 44008)
32618
32619 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
32620
32621         * marshal.c (mono_marshal_get_native_wrapper): started support for
32622         custom marshalers.
32623         (mono_delegate_to_ftnptr): consider marshalling specifications
32624
32625 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
32626
32627         * reflection.c, reflection.h: emit custom marshal info.
32628
32629 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32630
32631         * object.c: free the GError.
32632         * icall.c: added CloseEvent_internal.
32633         * threads.[ch]:
32634         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
32635         call.
32636
32637 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
32638
32639         * loader.c (mono_method_get_signature): Add support for dynamic
32640         assemblies.
32641
32642 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
32643
32644         * reflection.c: fixed bug #43905.
32645
32646 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
32647
32648         * class.c, domain.c, icall.c, metadata.h, object.h: support for
32649         handling TypedReference and ArgIterator.
32650         * loader.c, loader.h: added function to get signature at call site.
32651
32652 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
32653
32654         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
32655         data readonly. Buglets and warning fixes. Some MethodSpec support.
32656
32657 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
32658
32659         * class.h, class.c, object.c: remove relative numbering support.
32660
32661 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
32662
32663         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
32664         free the string, until we get a chance to fix Gtk#
32665
32666 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32667
32668         * marshal.c: revert last patch.
32669
32670 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
32671
32672         * icall.c: updates for new mono_class_vtable() not calling
32673         the type constructor anymore.
32674
32675 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
32676
32677         * object.h, object.c: separate vtable creation from type
32678         initialization. Make running the .cctor thread safe.
32679
32680 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
32681
32682         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
32683
32684 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
32685
32686         * loader.c (mono_get_method): consider calling convention
32687
32688 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
32689
32690         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
32691         to return the invisible global type for a module.
32692
32693         * reflection.c (mono_image_build_metadata): Emit global fields too.
32694
32695 2003-05-20  Peter Williams  <peterw@ximian.com>
32696
32697         * loader.c (mono_lookup_internal_call): Add a few newlines.
32698
32699 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
32700
32701         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
32702         literal strings.
32703
32704         * appdomain.c (set_domain_search_path): Recalculate search path when
32705         AppDomainSetup.PrivateBinPath changes.
32706
32707         * object.c (mono_class_compute_gc_descriptor): It turns out some
32708         parts of the class libs (like System.Thread) holds pointers to
32709         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
32710         to treat native int a pointer type here.
32711         
32712 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
32713
32714         * appdomain.h, domain.c: add hashtable for jump target resolution.
32715
32716 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
32717
32718         * reflection.h reflection.c icall.c: Added new icalls 
32719         GetManifestResourceInfoInternal, GetModulesInternal and support
32720         infrastructure.
32721
32722 2003-05-16  Dick Porter  <dick@ximian.com>
32723
32724         * icall.c:
32725         * file-io.h:
32726         * file-io.c: Implement System.IO.MonoIO::GetTempPath
32727
32728 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
32729
32730         * object.c: mono_store_remote_field: little fix to previous patch.
32731
32732 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
32733
32734         * class.c: add constructors to array classes.
32735         * icall.c: special case array construction for InternalInvoke (),
32736
32737 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
32738
32739         * class.h class.c reflection.c object.c: Added support for field
32740         defaults in dynamically generated classes.
32741
32742 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
32743
32744         * reflection.c: properly encode charset for ddlimport.
32745
32746 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
32747
32748         * threads.c: allow compiling without GC.
32749
32750 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
32751
32752         * appdomain.h, object.c, object.h, threads.c, threads.h: added
32753         handling of thread static data.
32754
32755 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
32756
32757         * reflection.h, reflection.c: added mono_custom_attrs_free ().
32758
32759 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
32760
32761         * class.c (mono_array_class_get): always set the serializable flags
32762         (mono_array_class_get): always set the SEALED attribute for array types
32763
32764 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
32765
32766         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
32767         attributes (fix for bug 42021).
32768
32769 2003-05-12  Dick Porter  <dick@ximian.com>
32770
32771         * gc.c: Don't run finalizers when the finalizer thread is
32772         finishing up, because the default domain has already been
32773         destroyed.
32774
32775 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
32776
32777         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
32778         value is null, we should throw an exception.   This is slightly
32779         different than the other conventions used for the constructor.
32780
32781 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32782
32783         * socket-io.c: fixed windows build.
32784
32785 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32786
32787         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
32788
32789 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
32790
32791         * object.c (mono_string_new_wrapper): Compatibility fix for MS
32792         compilers.
32793
32794 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
32795
32796         * class.c (mono_class_layout_fields): Add experimental GC aware
32797         auto layout facility. Requires class library changes to work correctly.
32798
32799         (mono_class_setup_vtable): Avoid overriding explicit interface
32800         method implementations. Fixes iface3.exe test.
32801
32802         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
32803         object reference.
32804         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
32805         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
32806
32807         * metadata.h: Add new type classification macro which determines
32808         whenever the type holds an object reference.
32809
32810 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
32811
32812         * marshal.c (mono_marshal_get_native_wrapper): cleanups
32813
32814 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
32815
32816         * gc.c (finalizer_thread): Work around a GC bug.
32817
32818 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
32819
32820         * marshal.c (emit_struct_conv): allow unions
32821
32822         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
32823
32824 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
32825
32826         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
32827
32828 2003-05-06  Martin Baulig  <martin@ximian.com>
32829
32830         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
32831
32832 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32833
32834         * socket-io.c:
32835         (Select_internal): allow NULLs, don't create arrays if not needed.
32836         Coupled with Socket.cs changes.
32837
32838         * threadpool.c:
32839         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
32840         register a finalizer for it that will close the semaphore handle. This
32841         fixes the leak and make Lupus' test run with > 4080 loops.
32842
32843 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
32844
32845         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
32846         Jerome Laban (bug #42287)
32847
32848 2003-05-02  Martin Baulig  <martin@ximian.com>
32849
32850         * debug-mono-symfile.h
32851         (MonoSymbolFile): Moved declaration into mono-debug.h.
32852         (MonoDebugMethodJitInfo): Likewise.
32853         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
32854         argument.
32855         (_mono_debug_address_from_il_offset): Take a
32856         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
32857
32858         * mono-debug.h
32859         (MonoDebugDomainData): New struct.
32860         (mono_debug_get_domain_data): New function.
32861         (mono_debug_add_method): Take an additional `MonoDomain *'
32862         argument.
32863         (mono_debug_source_location_from_address): Likewise.
32864         (mono_debug_il_offset_from_address): Likewise.
32865         (mono_debug_address_from_il_offset): Likewise.
32866
32867 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
32868
32869         * reflection.c: one more check for null type in custom attrs.
32870
32871 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32872
32873         * reflection.c: avoid warning (comparison is always false due to limited
32874         range of data type).
32875
32876 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32877
32878         * icall.c: throw an exception in Type.GetField if the argument 'name'
32879         is NULL.
32880
32881 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
32882
32883         * reflection.c: fixed handling of enums in named arguments to custom
32884         attributes (bug #42123).
32885
32886 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
32887
32888         * reflection.c: use the right array element type and handle
32889         a null for a Type argument, too.
32890
32891 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
32892
32893         * reflection.c: handle arrays as arguments to custom attributes.
32894
32895 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
32896
32897         * reflection.c: handle a string value in a custom attr
32898         ctor that takes an object.
32899
32900 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
32901
32902         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
32903         (fix bug #42063)
32904
32905 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
32906
32907         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
32908
32909 2003-04-27  Martin Baulig  <martin@ximian.com>
32910
32911         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
32912         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
32913         MONO_DEBUGGER_EVENT_BREAKPOINT.
32914         (mono_breakpoint_trampoline_code): Removed.
32915         (mono_debugger_event_handler): The last argument is now a
32916         `guint32'.
32917         (mono_debugger_insert_breakpoint_full): Removed the
32918         `use_trampoline' argument.
32919         (mono_debugger_method_has_breakpoint): Likewise.
32920         (mono_debugger_trampoline_breakpoint_callback): Renamed to
32921         mono_debugger_breakpoint_callback(); take the method and
32922         breakpoint number as arguments.
32923
32924 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
32925
32926         * metadata.c: fix off by one when loading parameters attributes.
32927
32928 2003-04-24  Martin Baulig  <martin@ximian.com>
32929
32930         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
32931
32932 2003-04-24  Martin Baulig  <martin@ximian.com>
32933
32934         * mono-debug-debugger.c: Moved all code which interacts with the
32935         Mono Debugger here.
32936
32937         * debug-mono-symfile.c: This code now just deals with the symbol
32938         file itself, the debugger code is now in mono-debug-debugger.c.
32939
32940 2003-04-23  Martin Baulig  <martin@ximian.com>
32941
32942         * mono-debug.c (mono_debug_source_location_from_il_offset):
32943         New method; like mono_debug_source_location_from_address(), but
32944         takes an IL offset instead of a machine address.
32945
32946 2003-04-23  Martin Baulig  <martin@ximian.com>
32947
32948         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
32949         `line' field; this is now computed by the debugger.
32950
32951 2003-04-23  Martin Baulig  <martin@ximian.com>
32952
32953         * mono-debug.[ch]: New files.  This is the new debugging interface.
32954
32955         * mono-debug-debugger.[ch]: New files.  Moved all code which
32956         interacts with the Mono Debugger here.
32957
32958 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
32959
32960         * domain.c (mono_init): initialize mono_defaults.monitor_class
32961
32962 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
32963
32964         * reflection.c (method_encode_code): Add a spicy exception to help
32965         future compiler authors.
32966
32967 2003-04-21  Martin Baulig  <martin@ximian.com>
32968
32969         * icall.c
32970         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
32971         Make this work with relative pathnames; g_filename_to_uri() needs
32972         an absolute filename.
32973
32974 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
32975
32976         * icall.c: Track name changes in Object and ValueType.
32977
32978 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
32979
32980         * metadata.c (mono_type_stack_size): size should be a multiple of
32981         sizeof (gpointer)
32982
32983 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32984
32985         * gc.c:
32986         (internal_domain_finalize): moved into mono_domain_finalize. No need
32987         to create another thread because the finalizers will be run in the
32988         finalizer thread.
32989         
32990         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
32991         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
32992         to be run (MS does this too).
32993
32994 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
32995
32996         * object.c (mono_class_compute_gc_descriptor): Update comment.
32997
32998         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
32999
33000         * image.h: Add synchronized wrapper cache.
33001
33002         * image.c (do_mono_image_open): Initialize cache.
33003
33004         * reflection.c (create_dynamic_mono_image): Initialize cache.
33005
33006 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33007
33008         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
33009         ves_icall_System_Buffer_ByteLengthInternal.
33010
33011 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
33012
33013         * reflection.c: setup klass->nested_in earlier. Allow
33014         a dash in the assembly name.
33015
33016 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
33017
33018         * metadata.c (mono_type_to_unmanaged): dont access
33019         type->data.klass for MONO_TYPE_OBJECT
33020         (mono_type_to_unmanaged): consider System.Delegate class
33021
33022 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
33023
33024         * class.c: just setup supertypes in the proper place instead of
33025         initializing the full element class for arrays.
33026
33027 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
33028
33029         * class.c: ensure the element class of arrays is initialized.
33030         Setup the supertype info for array classes, too.
33031
33032 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
33033
33034         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
33035
33036 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33037
33038         * Makefile.am: re-added -m option when running cygpath. This way,
33039         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
33040         separator.
33041         * mono-config.c: same codepath for locating mono config file for WIN32
33042         and the rest.
33043         * assembly.c: if mono_assembly_setrootdir is called, don't override
33044         the value set.
33045
33046 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33047
33048         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
33049         MONO_ASSEMBLIES variable.
33050
33051 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
33052
33053         * icall.c: added Assembly::GetNamespaces() icall.
33054
33055 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33056
33057         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
33058
33059 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
33060
33061         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
33062         * object.c: fixed bug in the construction of vtable for proxies
33063
33064 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
33065
33066         * object.c (mono_array_new): Mark mono_array_new as an icall.
33067
33068 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33069
33070         * class.c: fixed test for public method when overriding interfaces.
33071         Closes bug #40970.
33072
33073 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
33074
33075         * appdomain.h, domain.c: added mono_domain_foreach() to
33076         be able to access the currently loaded appdomains.
33077         * object.c: make string interning work across sppdomains.
33078         Mark some functions for use as icalls.
33079
33080 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
33081
33082         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
33083
33084         * reflection.h reflection.c: Allocate long living data using 
33085         GC_MALLOC_ATOMIC so the collector does not need to scan it.
33086
33087         * reflection.c: Double the allocation size in streams instead of
33088         increasing it, to prevent unneccesary copying on large assemblies.
33089         
33090         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
33091         creation if the assembly does not have the Run flag set.
33092
33093 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
33094
33095         * class.h: avoid the C++ keywords in header files (Jerome Laban
33096         spotted and fixed this).
33097
33098 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33099
33100         * object.c:
33101         (mono_unhandled_exception): fill in the arguments for the
33102         UnhandledException event. Only trigger that event for the default
33103         domain (as MS does).
33104
33105 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
33106
33107         * object.c: Improve typed allocation stuff based on suggestions from
33108         Paolo. Also turn it on if the GC library supports it.
33109
33110 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33111
33112         * object.c object.h class.h: Added experimental typed allocation
33113         facility using the interfaces in gc_gcj.h.
33114
33115         * os/gc_wrapper.h: Added new include files.
33116         
33117 2003-04-03  Martin Baulig  <martin@ximian.com>
33118
33119         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
33120         which is not yet enabled by default.
33121
33122         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
33123         functions.
33124         (mono_gc_lock, mono_gc_unlock): New static functions.
33125
33126         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
33127         functions; stop/start the world for the garbage collector.  This
33128         is using the windows API; we need to complete the SuspendThread()/
33129         ResumeThread() implementation in the io-layer to make this work on Unix.
33130         (mono_gc_push_all_stacks): New public function; tells the garbage
33131         collector about the stack pointers from all managed threads.
33132
33133 2003-04-03  Martin Baulig  <martin@ximian.com>
33134
33135         * object.h (MonoThread): Added `gpointer stack_ptr'.
33136
33137         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
33138
33139 2003-04-03  Martin Baulig  <martin@ximian.com>
33140
33141         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
33142
33143 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
33144
33145         * reflection.c (typebuilder_setup_fields): Initialize field.first and
33146         field.last.
33147
33148 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
33149
33150         * loader.c (mono_lookup_internal_call): Report the corlib that is
33151         out of sync.
33152
33153 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
33154
33155         * icall.c (ves_icall_type_GetTypeCode): fixed check for
33156         System.DBNull (it's class not valuetype).
33157
33158 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
33159
33160         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
33161         if the array method was already assigned a token (fixes bug#40646).
33162
33163 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
33164
33165         * reflection.c (mono_reflection_get_type): Attempt type resolve even
33166         if no assembly is given.
33167
33168 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
33169
33170         * metadata.h: Added the new tables.
33171
33172         * row-indexes.h: Added definitions for new tables.
33173
33174         * metadata.c: Add schemas for new tables, and add support for
33175         computing the sizes of them.
33176
33177         * class.c: Update for handling the new type cases.
33178
33179 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
33180
33181         * metadata.h (MONO_TYPE_IS_VOID): new macro
33182
33183 2003-03-31  Martin Baulig  <martin@ximian.com>
33184
33185         * threads.h (MonoThreadCallbacks): Added `thread_created'.
33186
33187         * threads.c (mono_thread_new_init): Call `thread_created' in the
33188         mono_thread_callbacks.
33189
33190 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
33191
33192         * loader.h: added marshalbyrefobject_class to mono_defaults
33193         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
33194         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
33195           generation of output parameters.
33196           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
33197         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
33198           contextbound and the target object belongs to the context of the caller.
33199         * object.h: added context and unwrapped_server variables in MonoRealProxy.
33200         * object.c: Implemented support for interfaces and abstract classes
33201           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
33202           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
33203
33204 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
33205
33206         * class.h class.c (mono_class_is_subclass_of): New function.
33207         
33208         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
33209         routines for most common case (calls from ArrayList::ToArray).
33210
33211         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
33212         routine so programs which call Environment::Exit() can be profiled.
33213
33214         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
33215         Added MONO_ARCH_SAVE_REGS.
33216
33217         * icall.c (ves_icall_type_is_subtype_of): Use new function.
33218
33219 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
33220
33221         * blob.h: Add a couple of new MonoType types definitions.
33222
33223         * tabledefs.h: Add a couple of new call convs.
33224
33225 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
33226
33227         * reflection.h (MonoReflectionDynamicAssembly): track changes in
33228         the layout of the class.
33229
33230         * reflection.c (alloc_table): double the size on overflow to avoid
33231         unnecessary copying.
33232
33233         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
33234         avoid filling out metadata tables and blobs. Also set mb->ilgen to
33235         null so it can be garbage collected.
33236         
33237 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
33238
33239         * reflection.c (mono_reflection_get_type): Return the resolved type
33240         only if it is in the assembly we searched.
33241
33242         * reflection.c (ensure_runtime_vtable): Initialize method slots.
33243
33244         * class.c (mono_class_setup_vtable): Set the slot of the overriding
33245         method.
33246
33247 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33248
33249         * appdomain.c:
33250         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
33251         the right one is 'file:///blah', but MS allows it.
33252         * assembly.c:
33253         (mono_assembly_open): allow 'file://blah'
33254
33255         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
33256
33257 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
33258
33259         * socket-io.c: fixes bug #40310.
33260
33261 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
33262
33263         * reflection.c (mono_reflection_parse_type): handle deeply nested
33264         types correctly.
33265
33266         * reflection.c (mono_image_create_token): Use unique token values
33267         since they will be put into a hash table.
33268
33269         * class.c (mono_class_setup_vtable): If a method occurs in more than
33270         one place in the vtable, and it gets overriden, then change the
33271         other occurances too.
33272
33273         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
33274         object as return type.
33275
33276 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33277
33278         * icall.c: Deleted "ToString" implementation for double and float
33279         because they are full implemented in managed code.
33280
33281 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33282
33283         * reflection.c, reflection.h: implemented and exported functions
33284         to retrieve info about custom attributes.
33285
33286 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33287
33288         * appdomain.c: moved Uri handling to assembly.c
33289         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
33290         work when using a file Uri in *nix and windows.
33291
33292         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
33293         GetReferencedAssemblies.
33294
33295 2003-03-18  Dick Porter  <dick@ximian.com>
33296
33297         * icall.c: Rename a couple of internal calls
33298
33299         * threads.c: Set the thread state to Stopped when a thread exits.
33300         Fixes bug 39377.
33301
33302 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
33303
33304         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
33305         New icall.
33306
33307         * object.c (mono_class_vtable): fix warning.
33308
33309 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
33310
33311         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
33312
33313         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
33314         memory.
33315         (method_encode_clauses): Create exception info structures in the right
33316         order.
33317         (mono_reflection_setup_internal_class): Initialize supertypes field.
33318
33319         * class.c object.c: Handle interfaces which implement other interfaces 
33320         correctly.
33321
33322         * class.h class.c: Move the supertypes array initialization code into 
33323         a separate function so it can be used for dynamic types too. Also call
33324         it earlier, in mono_class_init(), since it can be used before the
33325         type is initialized.
33326
33327 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33328
33329         * Makefile.am:
33330         * assembly.c:
33331         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
33332
33333         * appdomain.c:
33334         * appdomain.h:
33335         * marshal.c:
33336         * object.c: remove warnings.
33337
33338 2003-03-13  Martin Baulig  <martin@ximian.com>
33339
33340         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
33341         (MonoDebugLexicalBlockEntry): New types.
33342
33343         * debug-mono-symfile.c
33344         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
33345
33346 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33347
33348         * process.c: ret can be any non-zero value accroding to MS doc.
33349
33350 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
33351
33352         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
33353         fixing a warning for a miss-used prototype, would have cause
33354         random memory corruption.
33355
33356 2003-03-07  Martin Baulig  <martin@ximian.com>
33357
33358         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
33359         getting really annoying ....
33360
33361 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
33362
33363         * reflection.c (fixup_method): added support for array methods.
33364
33365 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
33366
33367         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
33368         (pointed out by Michael Adams).
33369
33370 2003-03-04  Dick Porter  <dick@ximian.com>
33371
33372         * icall.c: Temporarily reverted the Double and Single ToString()
33373         change, because it broke nunit.
33374
33375 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
33376
33377         * object.h, threads.h: make include files compatible with C++
33378         (patch by Jerome Laban <jlaban@wanadoo.fr>).
33379
33380 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33381
33382         * icall.c: Erased ToString helper functions for Double and Single.
33383         Now, that implementations ar all in managed code (Double and Single
33384         Formatters).
33385
33386 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
33387
33388         * appdomain.c: Added method for initializing the default context of
33389         a domain. Added internal call for getting the default context.
33390         * appdomain.h: Added context variable in MonoDomain struct.
33391         * domain.c: mono_domain_set also sets the default context of the domain
33392         * icall.c: Mapped internal method InternalGetDefaultContext.
33393         * object.c: mono_object_get_virtual_method returns always a remoting
33394         wrapper if the object is a transparent proxy.
33395         mono_runtime_invoke_array: when creating an object by calling the
33396         constructor, if the created object is a proxy, then the constructor should
33397         be called using the a remoting wrapper.
33398
33399 2003-03-03  Dick Porter  <dick@ximian.com>
33400
33401         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
33402         variable so it compiles on solaris.  Problem spotted by
33403         Christopher Taylor <ct@cs.clemson.edu>
33404
33405 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33406
33407         * appdomain.c:
33408         (get_info_from_assembly_name): don't leak value.
33409
33410         * icall.c:
33411         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
33412         result.
33413
33414 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
33415
33416         * assembly.c: export mono_image_load_references ().
33417         * class.c: handle function pointers. mono_class_from_name() now
33418         supports nested type names directly.
33419
33420 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
33421
33422         * reflection.h reflection.c: Encode already created dynamic methods 
33423         and fields correctly as a DEF instead of a REF.
33424
33425         * reflection.c: Get rid of the force_ref argument to 
33426         mono_image_typedef_or_ref since it was wrong in the first place.
33427
33428         * string-icalls.c: add error checking to string constructors according
33429         to the MSDN docs.
33430
33431         * reflection.c: Emit types in the order their TypeBuilders were 
33432         created. Previously, a new table index was assigned to each type before
33433         the tables were emitted. This was wrong because the signature blob
33434         might already refer to a type by its original table index.
33435
33436 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
33437
33438         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
33439         change.
33440         
33441 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33442
33443         * Makefile.am: make assemblies dir have \ instead of / on windows.
33444
33445 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
33446
33447         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
33448         iterate over the NESTEDCLASS table using a linear search since the
33449         table is not guaranteed to be sorted by the secondary key.
33450
33451         * class.c (mono_class_create_from_typedef): fixed up call to
33452         mono_metadata_nesting_typedef.
33453         
33454 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
33455
33456         * marshal.c (mono_string_to_byvalstr): clear the memory as
33457         suggested by Jerome Laban <jlaban@wanadoo.fr>
33458
33459 2003-02-26  Dick Porter  <dick@ximian.com>
33460
33461         * process.c: Cope with padding in .rsrc blocks
33462
33463 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33464
33465         * metadata.h: reverted the filter_len change, it breaks reflection
33466         
33467 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
33468
33469         * metadata.h: added a new field to store the filter_len
33470         
33471
33472 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
33473
33474         * reflection.c: handle custom attributes for types and members
33475         created with Reflection.Emit (bug#38422).
33476
33477 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
33478
33479         * reflection.c: define RTSpecialName automatically for constructors for
33480         compatibility with MS.NET.
33481
33482         * reflection.c (mono_reflection_create_runtime_class): initialize
33483         nested_in field of dynamically created classes.
33484
33485 2003-02-22  Martin Baulig  <martin@ximian.com>
33486
33487         * debug-mono-symfile.h: Incremented version number.
33488
33489 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33490
33491         * object.h icall.c process.c: fix warnings.
33492
33493 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
33494
33495         * appdomain.h appdomain.c:
33496         (mono_domain_try_type_resolve): split the 
33497         name_or_tb argument into a name and a tb argument.
33498         (mono_domain_has_type_resolve): new function to check whenever the
33499         application has registered a TypeResolve event handler.
33500         
33501         * icall.c reflection.h reflection.c: move the type resolve logic into
33502         mono_reflection_get_type () so it will be invoked when 
33503         Assembly::GetType () is called.
33504
33505         * reflection.c:
33506         (mono_reflection_get_type): renamed to get_type_internal.
33507         (mono_reflection_get_type): fixed type name generation so it works 
33508         for nested types too.
33509         (mono_reflection_get_type): call has_type_resolve () to avoid the 
33510         costly type name generation if there is no resolve event handler.
33511
33512 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33513
33514         * class.c, image.c: load exported types from file references.
33515
33516 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
33517
33518         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
33519           used to cache the managed methods used to create proxies and make 
33520           remote invocation of methods.
33521         * class.h: Added in MonoVTable a flag to indicate that a class needs 
33522           to be remotely created.
33523         * object.c: Modified the method mono_class_vtable(). It now initializes 
33524           the remote flag of the vtable. Modified mono_object_new_specific(), 
33525           so now it checks the remote flag.
33526         * icall.c: Added a couple of internal methods, one for enabling instance 
33527           creation interception for a type, and one for creating objects bypassing
33528           the remote check.
33529
33530 2003-02-18  Martin Baulig  <martin@ximian.com>
33531
33532         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
33533         New interncall to get a method's metadata token.
33534
33535         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
33536         New interncall for the debugger.
33537
33538 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
33539
33540         * class.c (mono_class_setup_vtable): allocate supertype array
33541
33542 2003-02-18  Martin Baulig  <martin@ximian.com>
33543
33544         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
33545
33546 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33547
33548         * reflection.c:
33549         (assembly_name_to_aname): jump over unknown properties (i've found
33550         something like: 'type, assembly, version=xxx, custom=null, public...',
33551         so now will ignore custom=null and still get the rest of the values).
33552
33553 2003-02-17  Dick Porter  <dick@ximian.com>
33554
33555         * threads.c: Have Thread.Start() wait for a semaphore to signal
33556         that the thread has set up all its local data.  This fixes bug
33557         34323, where Abort() raced the new thread's TLS data.
33558
33559         Also removes the handle_store() call from start_wrapper, because
33560         threads are now always created suspended and there is no longer a
33561         race between the parent and child threads to store the info.
33562
33563 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
33564
33565         * image.c: explain the #- heap issue in a message, hopefully
33566         avoiding FAQs on mono-list.
33567
33568 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33569
33570         * icall.c:
33571         (GetEntryAssembly): if the domain has not invoked
33572         AppDomain.ExecuteAssembly yet, return the assembly of the default
33573         AppDomain.
33574
33575 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
33576
33577         * class.c (mono_ldtoken): make it work in dynamic assemblies.
33578
33579 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
33580
33581         * metadata.c, reflection.c: simple speedup to type hash
33582         and equals code.
33583
33584 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
33585
33586         * image.c, image.h, class.c, assembly.c: move module loading
33587         to MonoImage. When loading metadata, consider alignemnet from
33588         the start of metadata, not from the metadata address in memory.
33589
33590 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
33591
33592         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
33593         AssemblyBuilder objects. Factored out custom attribute creation into
33594         a separate function.
33595         (create_custom_attr): new function to create custom attributes.
33596
33597 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
33598
33599         * Makefile.am: Got tired of typing the full pathname to pedump.
33600         Until there is another option, am installing this.
33601
33602 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
33603
33604         * class.c (class_compute_field_layout): always set field->parent 
33605         (mono_ldtoken): use mono_defaults.fieldhandle_class;
33606
33607 2003-02-11  Dick Porter  <dick@ximian.com>
33608
33609         * threads-types.h:
33610         * monitor.c: Rewrote Monitor, making lock much faster and
33611         Pulse/Wait work as specified.  Also uses much fewer handles, and only
33612         creates them as needed.
33613
33614         * exception.c: Added SynchronizationLockException
33615
33616         * threads.c: Deleted old Monitor implementation.  The new one is
33617         in a new file.
33618
33619 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
33620
33621         * class.c: handled TypedReference type code. Set the correct size for
33622         class data. Setup interface_offsets for interface classes, too.
33623
33624 2003-02-09  Martin Baulig  <martin@ximian.com>
33625
33626         * debug-mono-symfile.h: Reflect latest symbol writer changes.
33627
33628 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
33629
33630         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
33631         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
33632         * object.c: fixed mono_object_get_virtual_method () for interfaces.
33633         * verify.c: check for code that runs after the end of the method.
33634
33635 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
33636
33637         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
33638         "System.Math::Round2".
33639         * sysmath.h: Added Floor, Round and Round2 definitions.
33640         * sysmath.c: Modified certain functions that were not 100% compliant
33641         with MS.NET (math precision) and added the implementation of Floor,
33642         Round and Round2.
33643
33644 2003-02-07  Martin Baulig  <martin@ximian.com>
33645
33646         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
33647
33648 2003-02-07  Martin Baulig  <martin@ximian.com>
33649
33650         * debug-mono-symfile.c: Reflected latest symwriter changes.
33651         (mono_debug_create_mono_symbol_file): Removed.
33652         (mono_debug_open_mono_symbol_file): Take an argument which
33653         specifies whether to create a dynamic symbol file.
33654
33655 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
33656
33657         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
33658
33659 2003-02-05  Martin Baulig  <martin@ximian.com>
33660
33661         * reflection.c (mono_image_build_metadata): Make this public,
33662         protect it against being called multiple times, don't create
33663         resources and don't build the compressed metadata here.
33664         (mono_image_create_pefile): Do this here.
33665
33666         * icall.c
33667         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
33668
33669 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33670
33671         * socket-io.c: fixed bug #36322.
33672
33673 2003-02-06  Piers Haken <piersh@friskit.com>
33674
33675         * appdomain.[ch]:
33676         * class.h:
33677         * debug-mono-symfile.c:
33678         * icall.c:
33679         * loader.c:
33680         * mono-config.c:
33681         * monosn.c:
33682         * reflection.c:
33683         * socket-io.c: warning cleanups
33684
33685 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
33686
33687         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
33688         function. works like remoting invoke, but does a check for the Proxy first.
33689
33690 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
33691
33692         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
33693
33694 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
33695
33696         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
33697         array of pointers.
33698         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
33699         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
33700
33701         * object.c (mono_store_remote_field_new): used by the new jit
33702         instead of mono_store_remote_field
33703         (mono_load_remote_field_new): used by the new jit
33704         instead of mono_load_remote_field
33705
33706 2003-02-05  Patrik Torstensson
33707
33708         * appdomain.c: changed unload to take the domain id instead
33709         of domain
33710         
33711         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
33712
33713
33714 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33715
33716         * appdomain.c: don't look for assemblies in ApplicationBase if
33717         PrivateBinPathProbe is set.
33718
33719 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33720
33721         * object.c: make the first argument in main_args contain the absolute
33722         path to the assembly. Fixes bug #37511.
33723
33724 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33725
33726         * icall.c: get correct UTC offset for countries not using daylight
33727         time saving. Fixes bug #30030.
33728
33729 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33730
33731         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
33732         and 1 are the family).
33733
33734 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
33735
33736         * icall.c (ves_icall_InternalExecute): removed wrong assertion
33737
33738         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
33739
33740 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
33741
33742         * reflection.c: added support for SignatureHelper tokens, which is
33743         needed by the Calli opcode.
33744
33745         * reflection.h: track changes to SignatureHelper class.
33746
33747         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
33748
33749 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33750
33751         * appdomain.c: fixed loading assemblies from PrivateBinPath.
33752
33753 2003-02-03  Patrik Torstensson
33754         * appdomain.[c|h], domain.c : 
33755          - Added support for getting a domain via domain id
33756          - Support for setting and getting domain from System.AppDomain 
33757            (used in cross appdomain channel)
33758          - Added support for get/set for a MonoAppContext on a thread 
33759            (Context class in System.Runtime.Remoting.Contexts),
33760          - Removed hack in Get/SetData and ExecuteAssembly.
33761         
33762         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
33763         the managed world to get control when a proxy is created.
33764
33765         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
33766         
33767 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
33768
33769         * icall.c
33770         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
33771         Populate the codebase field as well.
33772
33773 2003-02-02  Martin Baulig  <martin@ximian.com>
33774
33775         * debug-mono-symfile.c
33776         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
33777         (mono_debug_symfile_add_method): Allow interncalls.
33778
33779 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33780
33781         * icall.c: throw parse exception if strtod fails or the string is empty.
33782
33783 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
33784
33785         * marshal.c: handle object type separately from defined
33786         class types.
33787
33788 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
33789
33790         * marshal.c: handle NATIVE_LPSTR for strings when it's
33791         explicitly specified.
33792
33793 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
33794
33795         * reflection.c, reflection.h, icall.c: setup the reflection
33796         handle cache for ModuleBuilders and AssemblyBuilders.
33797
33798 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
33799
33800         * reflection.c (reflection_methodbuilder_to_mono_method): set
33801         pinvoke flag
33802
33803 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33804
33805         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
33806
33807 2003-01-29  Dick Porter  <dick@ximian.com>
33808
33809         * threads.c: No need for the fake_thread kludge now that Thread
33810         doesn't run a class constructor
33811         
33812 2003-01-29  Dick Porter  <dick@ximian.com>
33813
33814         * threads.c: Use g_direct_hash instead of the rather bogus
33815         g_int_hash
33816
33817 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
33818
33819         * marshal.c (mono_marshal_get_native_wrapper): add check for null
33820         (fix pinvoke12.exe)
33821         (mono_marshal_get_struct_to_ptr): generate valid IL code
33822         (mono_marshal_get_ptr_to_struct): generate valid IL code
33823         (*): correctly set sig->pinvoke, we need to memdup the signature
33824         to do that
33825
33826 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
33827
33828         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
33829         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
33830
33831 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33832
33833         * profiler.c: provide more callers information.
33834
33835 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
33836
33837         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
33838
33839         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
33840
33841         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
33842
33843 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33844
33845         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
33846         exception instead of going into an infinite loop on dates which it 
33847         can't yet handle.
33848
33849         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
33850         out-of-range exception if needed.
33851
33852         * class.c (mono_class_setup_vtable): allow a virtual method to provide
33853         an implementation for an interface method and to override an inherited
33854         method at the same time. 
33855         Imagine a scenario when a virtual method is used to override a
33856         virtual abstract method in a parent class, and this same method 
33857         provides an implementation for an method inherited from an interface. 
33858         In this case, the interface resolution code will set im->slot, which 
33859         means that the virtual method override pass will skip this method 
33860         which means a pointer to the abstract method inherited from the parent
33861         will remain in the vtable of this non-abstract class.
33862
33863         * class.c: (mono_class_setup_vtable): continue search for a real 
33864         method if only an abstract method is found.     
33865
33866 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
33867
33868         * reflection.c: add size to encoding for ByValStr and ByValArray
33869         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
33870
33871 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33872
33873         * class.c (mono_class_setup_vtable): pass the override info as an
33874         argument.
33875
33876         * class.c (mono_class_setup_vtable): set the slot of overriding methods
33877         correctly.
33878         
33879         * reflection.c (ensure_runtime_vtable); add support for method 
33880         overrides.
33881         
33882 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33883
33884         * reflection.c (resolution_scope_from_image): Hack to work to work with
33885         dynamic assemblies.
33886
33887         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
33888         added a 'force_ref' argument to force this function to allways return 
33889         a TypeRef. This is needed by mono_image_get_memberref_token ().
33890         
33891 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33892
33893         * reflection.c (mono_image_get_type_info): interfaces really don't have
33894         a parent.
33895
33896         * reflection.c (mono_image_basic_init): fill out missing fields of
33897         image structure.
33898
33899         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
33900         dynamic assemblies. This is required so dynamic assemblies show up in
33901         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
33902         Type::GetType() etc. This is consistent with MS behaviour.
33903
33904         * image.c image.h reflection.c: add newly created classes to the name 
33905         cache so mono_class_get () will find them.      
33906
33907 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
33908
33909         First part of changes to get IKVM.NET running under mono.
33910         
33911         * appdomain.h, appdomain.c: added new function 
33912         mono_domain_try_type_resolve() which will emit TypeResolve events. 
33913         This function will call AppDomain::DoTypeResolve to do the actual work.
33914
33915         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
33916         moved existing code dealing with dynamic tokens to a new function 
33917         called mono_reflection_lookup_dynamic_token (). This function will 
33918         raise TypeResolve events when appropriate. Since reflection.c is not 
33919         part of libmetadata, a new hook function called 
33920         mono_lookup_dynamic_token() is added to class.c which will call this.
33921
33922         * assembly.h assembly.c: make the invoke_load_hook function public,
33923         so it can be called for dynamic assemblies.
33924
33925         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
33926
33927         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
33928         type isn't found.
33929
33930         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
33931         MonoGHashTable, since it contains pointers to objects which the GC 
33932         needs to track.
33933
33934         * assembly.c (search_loaded): remove unused variable.
33935         
33936 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
33937
33938         * object.c: fixed issue exposed by gcc-generated IL programs
33939         that use RVA data for pointers.
33940
33941 2003-01-25  Martin Baulig  <martin@ximian.com>
33942
33943         * threads.c (start_wrapper): Moved the initialization of
33944         `start_func' above the mono_new_thread_init() call to which we
33945         pass it as argument.
33946
33947 2003-01-24  Martin Baulig  <martin@ximian.com>
33948
33949         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
33950         the MonoThread pointer.
33951
33952 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
33953
33954         * icall.c: Rename `PowImpl' to Pow.
33955
33956 2003-01-23  Dick Porter  <dick@ximian.com>
33957
33958         * threads.c (start_wrapper): Create a Thread object if needed, so
33959         the Main() thread can do the class initialisation in a subthread
33960         that has been set up to allow managed code execution.
33961
33962         Pass the thread ID instead of the MonoThread pointer to the thread
33963         start and attach callbacks.  This change is required, because the
33964         jit thread start callback must be called _before_ the Thread
33965         object can be created.
33966         
33967         (mono_thread_init): Removed much object creation code that is no
33968         longer needed.  No managed code is called from here now.
33969
33970         * object.c (mono_runtime_exec_managed_code): Create a subthread
33971         for Main, and call back to the runtime to use it.
33972         Set the exit code when Main exits.
33973
33974         * gc.c: Make sure domain finalisation happens in a subthread.
33975         Re-enable threaded GC, fixing bug 31333 (again).
33976
33977         * environment.c: System.Environment internall calls (so far just
33978         ExitCode is here, the others are still in icall.c)
33979
33980         * appdomain.c (mono_runtime_cleanup): All threads running managed
33981         code should have finished before mono_runtime_cleanup() is
33982         reached, so no need to clean up threads.
33983
33984 2003-01-22  Martin Baulig  <martin@ximian.com>
33985
33986         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
33987         `gpointer func' arguments.      
33988         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
33989         but added `MonoThread *thread' argument.
33990         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
33991
33992         * threads.c (mono_new_thread_init): Added `gpointer func' argument
33993         and pass it to the mono_thread_start_cb callback.
33994         (mono_install_thread_callbacks): New public function to install a
33995         set of callbacks which are set by the debugger.
33996         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
33997
33998 2003-01-22  Martin Baulig  <martin@ximian.com>
33999
34000         * Makefile.am: Install debug-mono-symfile.h.
34001
34002 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
34003
34004         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
34005
34006 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
34007
34008         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
34009         * class.c (mono_ptr_class_get): correctly set access levels of pointers
34010         (mono_array_class_get): correctly set access levels of arrays
34011
34012 2003-01-20      Patrik Torstensson
34013         * image.h (MonoAssemblyName): changed major, minor, build, revision
34014         from signed to unsigned.
34015
34016 2003-01-20  sean kasun <skasun@azstarnet.com>
34017
34018         * reflection.c (load_cattr_value): Now this handles
34019         MONO_TYPE_SZARRAY.  Fixes bug #35629
34020
34021 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
34022
34023         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
34024         integer value
34025
34026 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34027
34028         * decimal.c: fixed bug #26056.
34029
34030 2003-01-17  Martin Baulig  <martin@ximian.com>
34031
34032         * gc.c: Raise an ExecutionEngineException instead of using g_error().
34033
34034 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34035
34036         * exception.[ch]:
34037         (mono_get_exception_type_initialization): new function.
34038
34039         * object.c: throw a TypeInitializationException when an exception is
34040         thrown invoking the class constructor.
34041
34042 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34043
34044         * reflection.c: fixed attribute reading.
34045
34046 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34047
34048         * icall.c:
34049         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
34050         provided, look for the type in the calling assembly and then in
34051         mscorlib; if the assembly name is provided, only try that one.
34052
34053 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
34054
34055         * object.c: register the vtable before there is a chance it's
34056         queried again recursively.
34057
34058 2003-01-13  Duncan Mak  <duncan@ximian.com>
34059
34060         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
34061         gc-internal.h. 
34062         
34063 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
34064
34065         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
34066
34067 2003-01-11  Martin Baulig  <martin@ximian.com>
34068
34069         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
34070         this to 20 for the release.
34071
34072 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
34073
34074         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
34075
34076         * loader.c (mono_method_get_marshal_info): bug fix
34077
34078         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
34079         structures with explicit layout
34080
34081 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34082
34083         * profiler.c: made the output more readable (and sorted). 
34084         Added caller information for the allocation profiler.
34085
34086 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
34087
34088         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
34089
34090 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34091
34092         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
34093         to get value types.
34094         
34095 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
34096
34097         * object.c, profiler.h, profiler.c, profiler-private.h:
34098         Added object allocation profiler.
34099
34100 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
34101
34102         * reflection.h, reflection.c: handle global methods.
34103         Compress blob entries.
34104
34105 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
34106
34107         * marshal.c: fix compilation.
34108
34109 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
34110
34111         * loader.c (mono_method_get_marshal_info): impl.
34112
34113         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
34114
34115 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34116
34117         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
34118         for reference types.
34119
34120 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
34121
34122         * loader.c: fixed off by one error in loaded parameter names.
34123
34124 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
34125
34126         * marshal.c (mono_marshal_get_icall_wrapper): like
34127         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
34128         instead of a MonoMethod.
34129
34130 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34131
34132         * decimal.c: fixed bug #36537.
34133
34134 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
34135
34136         * marshal.c: throw a missing method exception if a
34137         P/Invoke method is not found.
34138
34139 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
34140
34141         * icall.c: allow a null this for constructors.
34142
34143 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
34144
34145         * icall.c: raise the proper exceptions if the arguments to the
34146         internal Invoke are incorrect.
34147
34148 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
34149
34150         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
34151
34152 2003-01-03  Martin Baulig  <martin@ximian.com>
34153
34154         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34155
34156 2002-12-31  Martin Baulig  <martin@ximian.com>
34157
34158         * debug-mono-symfile.c: Completely rewrote the type section.
34159         Instead of using individual malloc()ed fields, we use one big
34160         continuous memory area and offsets into this area.
34161         See the comments in the source code for details.
34162
34163 2002-12-30  Martin Baulig  <martin@ximian.com>
34164
34165         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
34166
34167 2002-12-30  Martin Baulig  <martin@ximian.com>
34168
34169         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
34170         line number table in this data blob instead of using an external
34171         pointer.
34172
34173 2002-12-28  Martin Baulig  <martin@ximian.com>
34174
34175         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
34176
34177 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
34178
34179         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
34180         as a boxed return type.
34181
34182 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
34183
34184         * appdomain.c
34185         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
34186         g_build_filename to properly get separators on the filename created.
34187
34188         * object.h: Small change, introduce MonoMarshalByRefObject to
34189         track the layout of that structure in the C# universe as we make
34190         changes there.
34191
34192 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
34193
34194         * object.c: removed assert to allow static fields on interfaces.
34195         * loader.c: a TypeSpec may be used for any type, not just arrays.
34196
34197 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34198
34199         * class.c, class.h: added mono_class_array_element_size ().
34200         Ignore static methods in interfaces.
34201
34202 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34203
34204         * threads.c: fixed the build under cygwin.
34205
34206 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34207
34208         * reflection.c: handle nullref constants. Allocate keys for
34209         reflection handles with the GC.
34210
34211 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34212
34213         * threads.c, threads.h: added mono_thread_get_abort_signal()
34214         to get a suitable signal for thread abort.
34215
34216 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34217
34218         * metadata.c: fix handling of ExportedType table.
34219
34220 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34221
34222         * icall.c: added WriteWindowsDebugString internal call.
34223
34224 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34225
34226         * reflection.h: added fields to match C# implementation.
34227
34228 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34229
34230         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
34231
34232 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
34233
34234         * gc.h, gc-internal.h: Rename header for GC internal calls to
34235         gc-internal.h from gc.h as to not clash with Boehm GC having its
34236         header installed as <gc.h> in outside include paths.
34237         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
34238         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
34239
34240 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34241
34242         * icall.c: assign minor, build and revision in FillName.
34243
34244 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
34245
34246         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
34247         Added support for running code generated by Reflection.Emit.
34248
34249 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34250
34251         * appdomain.c: check for NULL argument in LoadFrom.
34252
34253 2002-12-10  Dick Porter  <dick@ximian.com>
34254
34255         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
34256
34257 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34258
34259         * appdomain.c: fix buglet when building exe file name.  Handle full
34260         assembly name (needed after latest changes to AssemblyName).
34261         * image.c:
34262         (mono_image_close): free some hashtables.
34263
34264 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
34265
34266         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
34267         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
34268         on some systems (redhat 7.3) 
34269
34270 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
34271
34272         * threads.c: delete the critical section of a sync block,
34273         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
34274
34275 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
34276
34277         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
34278
34279 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34280
34281         * appdomain.[ch]: handle the assembly preload event to try loading the
34282         assemblies using the paths we have in the current domain.
34283
34284         * assembly.[ch]: created an assembly preload hook that is called to try
34285         loading the assembly by other means that the ones provided here.
34286
34287         * domain.c: initialize the domain search path.
34288
34289         From now on, assemblies (TODO: except corlib and System) are loaded
34290         according to these rules when using mono_assembly_load ():
34291
34292                 1. It tries to load the assembly from the ApplicationBase
34293                 of the current domain appending .dll and .exe (TODO: have to
34294                 try loading from name/name.dll and name/name.exe).
34295
34296                 2. It tries the search path specified in PrivateBinPath for the
34297                 current domain (if any).
34298
34299                 3. Previous behavior.
34300
34301 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
34302
34303         * icall.c: implemented GetInterfaceMap() related icall.
34304         * domain.c, loader.h: load MethodInfo in mono_defaults.
34305
34306 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34307
34308         * gc.c: disable the finalizer thread for now, untill all the issues
34309         with it are resolved.
34310
34311 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34312
34313         * string-icalls.c: handle embedded nulls in string ctor when the
34314         length is specified.
34315
34316 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34317
34318         * class.c: look for explicit interface implementation in parent
34319         classes, too.
34320
34321 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
34322
34323         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
34324
34325 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34326
34327         * gc.c: protect handles with a critical section.
34328
34329 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34330
34331         * icall.c:
34332         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
34333         parameters. If no assembly specified, try getting the type from all
34334         the assemblies in the current domain, else, load the assembly and get
34335         the type from it.
34336
34337 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34338
34339         * marshal.c: applied patch from Aleksey Demakov that fixes
34340         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
34341
34342 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34343
34344         * icall.c: fixed get_location.
34345
34346 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
34347
34348         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
34349         declarations to make it work with older gcc. 
34350
34351         * loader.c (mono_get_method): set signature->pinvoke for native calls
34352
34353 2002-11-20  Dick Porter  <dick@ximian.com>
34354
34355         * threads.c (mono_thread_init): Set the main thread's handle
34356
34357 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34358
34359         * gc.c: allow compilation without GC support. Changed to match the
34360         mono coding style.
34361
34362 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34363
34364         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
34365
34366 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
34367
34368         * reflection.c: set a public key token on the core assemblies.
34369
34370 2002-11-18  Dick Porter  <dick@ximian.com>
34371
34372         * threads.c: Split out some thread initialisation so that other
34373         files can set the start callback function.
34374
34375         * gc.c: Run finalisers in a separate thread, to avoid stack
34376         overflow.  Fixes bug 31333.
34377
34378         * appdomain.c: Set up GC finalisation thread.
34379
34380         * reflection.c: 
34381         * object.c: 
34382         * domain.c: Use gc.h macros for GC_malloc
34383         
34384 2002-11-15  Dick Porter  <dick@ximian.com>
34385
34386         * threadpool.c: 
34387         * threads.c:
34388         * appdomain.c: Removed mono_runtime_init_with_attach(),
34389         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
34390         merging the extra parameter with the existing function.  Removed
34391         unneeded code in mono_thread_attach().
34392
34393 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
34394
34395         * image.c (mono_image_loaded_by_guid): a method to get loaded
34396         images by guid. 
34397         (load_metadata_ptrs): we store the guid as string.
34398
34399 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
34400
34401         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
34402
34403         * metadata.c (mono_guid_to_string): imported method form Zoltan
34404         Varga (slightly modified)
34405
34406         * assembly.c (mono_assembly_open): load precompiled code
34407
34408         * loader.h (MonoMethod): we store the method token for use in the
34409         aot compiler. 
34410
34411 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34412
34413         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
34414         the hook function called when an assembly is loaded.
34415         
34416         * domain.c: Modified file.
34417         (mono_domain_assembly_load): removed hash table insertion of assemblies.
34418
34419         Fixes bug #33196.
34420
34421 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
34422
34423         * reflection.c: Map PEFileKind to the value expected by the WinNT
34424         image loader. 
34425
34426 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34427
34428         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
34429         Read until the buffer is filled completely.
34430
34431 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34432
34433         * icall.c: implemented MonoType.InternalGetEvent ().
34434
34435 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34436
34437         * appdomain.c: implemented InitAppDomainSetup. Delayed
34438         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
34439         the entry_assembly.
34440
34441         * assembly.c: base_dir is now an absolute path ending with
34442         G_DIR_SEPARATOR.
34443
34444         * icall.c: modified get_location according to the above changes.
34445
34446         * object.c: init AppDomain.SetupInformation for the default domain after
34447         we have the entry assembly.
34448
34449         * domain.c: when unloading a domain, setup = NULL.
34450
34451 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
34452
34453         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
34454
34455 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
34456
34457         * object.h, object.c: introduced mono_object_get_virtual_method ()
34458         to lookup the method invoked on an object when a callvirt is done on
34459         a method.
34460         * icall.c: make MethodInfo::Invoke() always do a virtual call.
34461
34462 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34463
34464         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
34465         current domain when loaded an assembly and failed to load it.
34466
34467         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
34468
34469 2002-10-31  Dick Porter  <dick@ximian.com>
34470
34471         * icall.c: 
34472         * file-io.h: 
34473         * file-io.c: Return the error status in a parameter, as the
34474         GetLastError() value has long since been blown away if we try and
34475         look it up in a subsequent internal call invocation.  Delete the
34476         GetLastError() internal call, because it's useless.
34477
34478 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
34479
34480         * class.[ch]: added cast_class to fix bug 29517
34481
34482 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
34483
34484         * marshal.c: create valid IL code in the filter clause:
34485         the new JIT is less forgiving:-)
34486
34487 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34488
34489         * icall.c: removed get_property internal call.
34490
34491 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
34492
34493         * appdomain.h domain.c: Added an ID to appdomains.
34494         
34495         * threads.c threads.h icall.c: Implement icall
34496         Thread:GetDomainID(), and remove unused icall 
34497         CurrentThreadDomain_internal.
34498
34499 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34500
34501         * icall.c: Don't recurse through the base types in GetConstructor.
34502         Fixes bug #32063. 
34503
34504 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
34505
34506         * mempool.h, mempool.c: added mono_mempool_empty() and
34507         mono_mempool_stats().
34508
34509 2002-10-23  Dick Porter  <dick@ximian.com>
34510
34511         * file-io.c: 
34512         * file-io.h: 
34513         * icall.c: Added MonoIO.GetFileType internal call
34514
34515 2002-10-17  Dick Porter  <dick@ximian.com>
34516
34517         * appdomain.c (mono_runtime_cleanup): Don't signal the async
34518         delegate semaphore before waiting for all threads to finish,
34519         because new threads can also call async delegates.  Fixes bug
34520         32004.
34521
34522         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
34523         of 3 seconds, in case another async job is queued.  (This part is
34524         needed because the bug fix reintroduced the 3s exit lag.)  This
34525         makes the mono_runtime_shutdown flag superfluous.
34526
34527 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
34528
34529         * reflection.c: include ehader size in method section headers.
34530         Really check for suplicated modules entries.
34531
34532 2002-10-17  Martin Baulig  <martin@gnome.org>
34533
34534         * debug-mono-symfile.c: Added back support for locals.
34535
34536 2002-10-14  Martin Baulig  <martin@gnome.org>
34537
34538         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
34539         MONO_TYPE_VOID.
34540
34541 2002-10-14  Martin Baulig  <martin@gnome.org>
34542
34543         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
34544         mono_class_get() instead of looking in the class cache. 
34545
34546 2002-10-13  Martin Baulig  <martin@gnome.org>
34547
34548         * debug-mono-symfile.c: Set version number to 28, include the
34549         signature in method names.
34550
34551 2002-10-13  Martin Baulig  <martin@gnome.org>
34552
34553         * debug-mono-symfile.h: Set version number to 27.
34554
34555 2002-10-11  Martin Baulig  <martin@gnome.org>
34556
34557         * gc.c: Don't register/unregister NULL pointers as disappearing links.
34558
34559 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34560
34561         * metadata.c, metadata.h: added helper function to allocate signatures.
34562
34563 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34564
34565         * icall.c: added internal call to get the location of machine.config.
34566
34567 2002-10-08  Martin Baulig  <martin@gnome.org>
34568
34569         * debug-mono-symfile.c: Ignore classes with a pending init for the
34570         moment.
34571
34572 2002-10-03  Dick Porter  <dick@ximian.com>
34573
34574         * threads.c: Freebsd pthread_t is a pointer
34575
34576 2002-10-03  Dick Porter  <dick@ximian.com>
34577
34578         * socket-io.c: Implemented GetHostName_internal
34579
34580 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34581
34582         * mono-config.c:
34583         (mono_config_parse_file): don't leak the text.
34584
34585 2002-10-02  Martin Baulig  <martin@gnome.org>
34586
34587         * debug-mono-symfile.c: Added support for methods.
34588
34589 2002-10-01  Martin Baulig  <martin@gnome.org>
34590
34591         * debug-mono-symfile.c: Don't emit methods and line numbers for
34592         the dynamic symbol file, just write the type table.  We can easily
34593         have an external helper program which creates a symbol file for an
34594         IL file.        
34595
34596 2002-10-01  Dick Porter  <dick@ximian.com>
34597
34598         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
34599         Only add the handle to the cleanup array when we're about to
34600         launch the thread.  Bug 31425 deadlocked when the test was run on
34601         mono under w32.
34602
34603 2002-10-01  Martin Baulig  <martin@gnome.org>
34604
34605         * debug-mono-symfile.c: Added support for properties.
34606
34607 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34608
34609         * reflection.c: unaligned store fix from Mark Crichton
34610         <crichton@gimp.org>.
34611
34612 2002-09-27  Martin Baulig  <martin@gnome.org>
34613
34614         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
34615         New interncall.
34616
34617 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34618
34619         * assembly.h, assembly.c: use a sane API to hook into the assembly
34620         loading process instead of a useless special-purpouse hack
34621         (ngen needs a hook, too, for example).
34622
34623 2002-09-27  Dick Porter  <dick@ximian.com>
34624
34625         * threads.c (mono_thread_init): Call GetCurrentProcess() so
34626         io-layer can set up some process handle info.  Not needed on w32,
34627         but doesn't hurt either.
34628
34629         * process.c: Pass the program name in the second parameter to
34630         CreateProcess, so the path is searched.  Include the working
34631         directory. Implemented process name, process enumeration, and some
34632         process detail internal calls.
34633         
34634         * icall.c: Added internal calls for process lookup, and some
34635         process details
34636
34637 2002-09-26  Martin Baulig  <martin@gnome.org>
34638
34639         * assembly.c (mono_install_open_assembly_hook): New global
34640         function to install a function to be invoked each time a new
34641         assembly is loaded.
34642         (mono_assembly_open): Run this callback function if set.
34643
34644         * debug-mono-symfile.c: Put back line numbers for the dynamic
34645         symbol file and also record the .il file as source file.  This
34646         allows us to install the temporary symbol file as `file.dbg' just
34647         like a compiler-generated one.
34648
34649 2002-09-26  Nick Zigarovich <nick@chemlab.org>
34650
34651         * Corrected typo in gc.c (BOHEM vs BOEHM).
34652
34653 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34654
34655         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
34656         GetProperties. Also avoid calling g_slist_length in GetProperties and
34657         GetMethods.
34658
34659 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
34660
34661         * reflection.c: avoid unaligned stores (bug spotted by
34662         Mark Crichton  <crichton@gimp.org>).
34663
34664 2002-09-25  Martin Baulig  <martin@gnome.org>
34665
34666         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
34667         instead of guint64 for addresses and added prologue/epilogue info.
34668
34669 2002-09-25  Martin Baulig  <martin@gnome.org>
34670
34671         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
34672         store line number info.  For the dynamic symbol file, we only need
34673         to provide the JIT generated dynamic line number info for the dynamic
34674         symbol file.
34675
34676 2002-09-25  Martin Baulig  <martin@gnome.org>
34677
34678         * debug-mono-symfile.h: Incremented version number.
34679
34680 2002-09-24  Martin Baulig  <martin@gnome.org>
34681
34682         * class.c (mono_debugger_class_init_func): New global function
34683         pointer variable.
34684         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
34685         call it.
34686
34687         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
34688         function.  This is called via the mono_debugger_class_init_func
34689         hook to add all types to the dynamic type table.
34690         (ves_icall_MonoDebugger_GetType): New interncall to get a class
34691         from its metadata token.
34692
34693         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
34694         New interncall for the debugger.
34695
34696 2002-09-24  Nick Drochak <ndrochak@gol.com>
34697
34698         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
34699         before using it in case it is null.
34700         
34701 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
34702
34703         * metadata.c: allow custom modifiers in local var signatures
34704         (bug spotted by Zoltan Varga).
34705
34706 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
34707
34708         * class.c: deal with the <Module> class that may have a NULL vtable.
34709         Eliminate warnings.
34710
34711 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34712
34713         * image.c, image.h: more strong name helpers.
34714         * monosn.c: more work: convert pem keys to cryptoapi format.
34715
34716 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
34717
34718         * string-icalls.c: speedup IndexOf.
34719
34720 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34721
34722         * icall.c: updates from Zoltan.2.Varga@nokia.com.
34723
34724 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
34725
34726         * icall.c: cleanup: use mono_object_domain ().
34727
34728 2002-09-23  Martin Baulig  <martin@gnome.org>
34729
34730         * debug-mono-symfile.c: Improved type support.
34731
34732 2002-09-22  Martin Baulig  <martin@gnome.org>
34733
34734         * debug-mono-symfile.c: Added support for reference types and strings.
34735
34736 2002-09-22  Martin Baulig  <martin@gnome.org>
34737
34738         * debug-mono-symfile.c: Started to work on the type table.
34739
34740 2002-09-21  Martin Baulig  <martin@gnome.org>
34741
34742         * debug-mono-symfile.c: Largely reworked the symbol table format.
34743         The symbol table is now incrementally updated each time a new
34744         method is added.  We're now also using our own magic and version
34745         so that you don't need to recompile all your classes if the
34746         dynamic table changes.
34747         (mono_debug_update_mono_symbol_file): Removed.
34748         (mono_debug_symfile_add_method): New function to add a method.
34749
34750 2002-09-21  Martin Baulig  <martin@gnome.org>
34751
34752         * icall.c
34753         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
34754         New interncall.
34755
34756         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
34757         New interncall to get a method from its metadata token.
34758
34759 2002-09-21  Martin Baulig  <martin@gnome.org>
34760
34761         * debug-mono-symfile.c: Create type table.
34762
34763 2002-09-20  Martin Baulig  <martin@gnome.org>
34764
34765         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
34766
34767 2002-09-20  Martin Baulig  <martin@gnome.org>
34768
34769         * debug-mono-symfile.c: Provide information about params and locals.
34770
34771 2002-09-20  Martin Baulig  <martin@gnome.org>
34772
34773         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
34774         New interncall.
34775
34776         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
34777         interncall to get a method from its metadata token.
34778
34779 2002-09-20  Martin Baulig  <martin@gnome.org>
34780
34781         * debug-mono-symfile.c: Added a few checks for method->header
34782         being non-NULL.  This should never happen, but for the moment
34783         let's use a g_warning() rather than a g_assert().
34784
34785 2002-09-19  Mark Crichton  <crichton@gimp.org>
34786
34787         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
34788         even if support for it isn't present.  Added an #ifdef to fix this.
34789
34790         * socket-io.c: Added checks back for Solaris support.
34791
34792 2002-09-19  Martin Baulig  <martin@gnome.org>
34793
34794         * debug-mono-symfile.c (read_string, write_string): Reflect latest
34795         changes in the symbol file format.
34796
34797 2002-09-18  Martin Baulig  <martin@gnome.org>
34798
34799         * debug-mono-symfile.c: Set version number to 21.
34800
34801 2002-09-18  Dick Porter  <dick@ximian.com>
34802
34803         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
34804         on netbsd.  Fixes bug 30051.
34805
34806 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34807
34808         * reflection.c:
34809         (set_version_from_string): little fix.
34810
34811 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34812
34813         * monosn.c, Makefile.am: added strong name utility.
34814         * reflection.h, reflection.c: implemented delayed signing,
34815         locale, version and hash id assembly attributes.
34816
34817 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
34818
34819         * loader.c, metadata.c: load param attributes in signatures.
34820
34821 2002-09-16  Martin Baulig  <martin@gnome.org>
34822
34823         * debug-mono-symfile.c: Added string table with all method names.
34824
34825 2002-09-14  Martin Baulig  <martin@gnome.org>
34826
34827         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
34828         fast method lookup.
34829
34830 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34831
34832         * reflection.c: record the public key token of referenced assemblies.
34833
34834 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
34835
34836         * image.c, image.h: added functions to get the strong name and the
34837         public key of an assembly.
34838         * pedump.c: use them.
34839
34840 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
34841
34842         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
34843
34844 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
34845
34846         * marshal.c (mono_marshal_get_managed_wrapper): Added
34847         MONO_TYPE_BOOLEAN 
34848
34849 2002-09-11  Martin Baulig  <martin@gnome.org>
34850
34851         * gc.c: Call GC_unregister_disappearing_link() on all links when
34852         finalizing them, this is necessary to aviod a crash in boehm's
34853         finalize handler.
34854
34855 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
34856
34857         * gc.c: handle GetTarget for finalized objects spotted and fixed by
34858         nick@chemlab.org.
34859
34860 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
34861
34862         * icall.c: implemented MonoType::Module.
34863         * reflection.c, reflection.h: mono_module_get_object () from
34864         Tomi Pakarinen <tomi.pakarinen@welho.com>.
34865
34866 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
34867
34868         * icall.c: ignore overridden methods in GetMethods ().
34869         Fix for FieldInfo::SetValue().
34870         * object.c: handle float/double in runtime invoke.
34871
34872 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34873
34874         * object.c: allow a constructor to be called again on an object.
34875
34876 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34877
34878         * class.h, class.c: move field layout code to it's own function and
34879         export it. Get an interface id earlier. Move fields in MonoClass
34880         so they are more cache friendly and align the bitfields.
34881         * loader.c: temporary handle get_param_names() for a runtime method.
34882         * reflection.c, reflection.h: more code to handle runtime creation of
34883         types.
34884
34885 2002-09-09  Martin Baulig  <martin@gnome.org>
34886
34887         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
34888         signature with the pinvoke field being set for the actual call.
34889
34890 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
34891
34892         * icall.c: removed some unused icalls. Start of map of glib charsets
34893         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
34894
34895 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
34896
34897         * debug-helpers.c: break infinite loop (found and fixed by
34898         Holger Arnold <harnold@gmx.de>).
34899
34900 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
34901
34902         * icall.c: target may be null in create_delegate.
34903
34904 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
34905
34906         * marshal.c: handle a boolean return type.
34907
34908 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
34909
34910         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
34911
34912 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
34913
34914         * gc.c: fix weakreferences.
34915
34916 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
34917
34918         * icall.c: added icall to get default codepage.
34919
34920 2002-09-03  Dick Porter  <dick@ximian.com>
34921
34922         * threads.h: 
34923         * threads.c: Use MonoThread instead of MonoObject where
34924         apropriate.
34925
34926         Store running thread objects in a hash table, so that we have all
34927         the info to hand when waiting for them to finish
34928         (means we don't need OpenThread() any more, so mingw builds should
34929         be fully functional again.)
34930
34931         * verify.c:
34932         * object.h: Added thread ID to MonoThread
34933
34934 2002-09-03  Martin Baulig  <martin@gnome.org>
34935
34936         * icall.c (System.Reflection.Assembly::get_location): New interncall.
34937
34938 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34939
34940         * icall.c: fixed leak in get_temp_path. Thanks lupus.
34941
34942 2002-09-03  Martin Baulig  <martin@gnome.org>
34943
34944         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
34945         argument to store the end address of the disassembled instruction.
34946
34947         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
34948         here from debug-symfile.h.
34949         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
34950         JIT into this struct.
34951         (MonoSymbolFile): Added `char *image_file' field.
34952         (MonoDebugGetMethodFunc): Removed.
34953         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
34954         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
34955         (mono_debug_find_method): New method.
34956
34957         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
34958         create a full symbol file.
34959         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
34960         and static symbol files.
34961         (mono_debug_find_method): The symbol file keeps an internal method hash,
34962         call this to get a MonoDebugMethodInfo from a MonoMethod.
34963
34964         * debug-symfile.[ch]: Removed.
34965
34966 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
34967
34968         * image.c (do_mono_image_open): Remove linker version check.
34969
34970 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
34971
34972         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
34973         wrappers for instance methods.
34974         
34975 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
34976
34977         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
34978
34979 2002-08-28  Dick Porter  <dick@ximian.com>
34980
34981         * Makefile.am: Export HOST_CC for w32 builds
34982
34983 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
34984
34985         * file-io.c process.c: MonoString are null terminated, no
34986         need for mono_string_to_utf16() anymore.
34987
34988 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
34989
34990         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
34991
34992 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
34993
34994         * icall.c, reflection.h: speedup System.MonoType.
34995
34996 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
34997
34998         * reflection.c: allow null as the value of a string argument in
34999         custom attributes constructors.
35000
35001 2002-08-27  Martin Baulig  <martin@gnome.org>
35002
35003         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
35004         `trampoline_address' field.
35005
35006 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
35007
35008         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
35009         check (fixes bug #29486) 
35010
35011 2002-08-27  Martin Baulig  <martin@gnome.org>
35012
35013         * debug-mono-symfile.c: Changed the file format in a way that allows us
35014         open it read-only and to use a specially malloced area for all the
35015         dynamic data.  We can now also generate a symbol file on-the-fly if we're
35016         debugging IL code and there is no MCS generated symbol file for it.
35017
35018 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35019
35020         * object.c: added a define for a good string and array
35021         creation speedup (not enabled by default because we need to deal with
35022         the synch stuff).
35023
35024 2002-08-26  Martin Baulig  <martin@gnome.org>
35025
35026         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
35027         function to create a dynamic symbol file.  This is used by the
35028         debugger to create a symbol file for IL code on-the-fly.
35029
35030 2002-08-26  Martin Baulig  <martin@gnome.org>
35031
35032         * loader.c (mono_lookup_pinvoke_call): Include the error message
35033         from g_module_error() in the error message.
35034
35035 2002-08-24  Martin Baulig  <martin@gnome.org>
35036
35037         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
35038         function to update the symbol file.  The symbol file is mmap()ed
35039         writable, but private.  This allows us to install the symbol file
35040         together with the assembly.
35041
35042 2002-08-24  Martin Baulig  <martin@gnome.org>
35043
35044         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
35045         but they can read the new symbol file format which mcs is now creating.
35046
35047         * debug-symfile.c (mono_debug_find_source_location): Moved to
35048         debug-mono-symfile.c; this is now operating on the new symbol file.
35049
35050 2002-08-23  Martin Baulig  <martin@gnome.org>
35051
35052         * debug-helpers.c (mono_method_desc_from_method): New function to get
35053         a MonoMethodDesc from a MonoMethod.
35054
35055 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
35056
35057         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
35058         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
35059
35060 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35061
35062         * string-icalls.[ch]: make helper methods static.
35063
35064 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35065
35066         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
35067         types to it and to SetValueInternal.
35068
35069         * object.c: Moved handle_enum label to its proper place. This was the
35070         f... bug! ;-)
35071
35072         This time i compiled mcs and gtk-sharp and they both work.
35073
35074 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35075
35076         * icall.c: reverted partially my previous patch until 
35077         object.c:set_value handles enums correcly.
35078
35079 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35080
35081         * icall.c:
35082         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
35083         (ves_icall_System_Environment_get_MachineName): removed warning when
35084         compiling under cygwin.
35085
35086 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35087
35088         * object.c: fixed field_get_value() for reference types.
35089
35090 2002-08-22  Dick Porter  <dick@ximian.com>
35091
35092         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
35093         Don't free a buffer while it's still needed.  Patch from Jonathan
35094         Liger <Jonathan.liger@wanadoo.fr>
35095
35096 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
35097
35098         * icall.c (ves_icall_System_Environment_get_Platform): Add new
35099         internal call.
35100
35101 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
35102
35103         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
35104         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
35105
35106         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
35107         we call unmanaged code which throws exceptions.
35108
35109 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35110
35111         * appdomain.h: added per-domain entry_assembly.
35112         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
35113         arguments.
35114         * icall.c: Assembly::GetEntryAssembly icall.
35115         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
35116         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
35117
35118 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35119
35120         * appdomain.h, gc.c: added mono_domain_finalize ().
35121
35122 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35123
35124         * object.c:
35125         (mono_print_unhandled_exception): changed g_warning by g_printerr
35126         because g_log has a 1024 characters limit (yeah, i got a big stack
35127         trace). Don't print exception name, that should be in ToString 
35128         returned string.
35129
35130 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35131
35132         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
35133         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
35134
35135 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35136
35137         * object.c:
35138         (mono_print_unhandled_exception): after previous commit, i realized
35139         that MS calls ToString on the exception. I changed this function to
35140         do that. This way we get stack_trace for free.
35141
35142 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35143
35144         * object.c:
35145         (mono_print_unhandled_exception): invoke Message property instead of
35146         getting 'message' field from Exception. Don't allocate memory for
35147         'trace' and 'message' if not needed.
35148
35149 2002-08-18  Dick Porter  <dick@ximian.com>
35150
35151         * unicode.c: Fix asserts to match Encoder.cs checks
35152
35153 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35154
35155         * marshal.c: fix unaligned store issue and a few wrong
35156         opcode argument types.
35157
35158 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35159
35160         * icall.c: added GetUninitializedObjectInternal internal call.
35161
35162 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
35163
35164         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
35165         to the right domain.
35166
35167 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
35168
35169         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
35170
35171         * class.c (class_compute_field_layout): set blittable to false for Strings
35172
35173         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
35174
35175 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35176
35177         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
35178         first chunk of code to create types at runtime. Code to
35179         handle ReflectedType/DeclaringType. Make reflection handles
35180         domain specific.
35181
35182 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
35183
35184         * class.c: set correct name in arrays.
35185
35186 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
35187
35188         * appdomain.c (mono_domain_transfer_object): make it work with
35189         valuetypes. bug fixes.
35190
35191 2002-08-12  Dick Porter  <dick@ximian.com>
35192
35193         * object.h: Rename some parameters to avoid c++ keywords (Patch
35194         from Joseph Wenninger <kde@jowenn.at>)
35195
35196 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
35197
35198         * icall.c: added icall to implement Assembly.GetFile*.
35199
35200 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35201
35202         * reflection.h, reflection.c: code to embed managed resources.
35203
35204 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
35205
35206         * class.c: move all the type size stuff into
35207         class_compute_field_layout().
35208
35209 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
35210
35211         * class.c: ensure enums have always the correct instance size.
35212         * unicode.c: remove wrong assert.
35213
35214 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35215
35216         * assembly.c: fix mem corruption issue.
35217         * image.h, image.c: added mono_image_get_resource () to access
35218         managed resources.
35219         * icall.c: implemented Assembly.EntryPoint property and some
35220         Managed Resources related internalcalls.
35221
35222
35223 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35224
35225         * image.c, image.h: impemented mono_image_get_entry_point ().
35226         * appdomain.c: use mono_image_get_entry_point.
35227
35228 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35229
35230         * reflection.c: support the object type argument when loading
35231         custom attributes.
35232
35233 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
35234
35235         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
35236         String as return type.
35237
35238 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
35239
35240         * reflection.c: fix encoding of named args for custom attrs to match
35241         the ms implementation. Read them back when instantiating custom
35242         attributes.
35243
35244 2002-08-02  Radek Doulik  <rodo@ximian.com>
35245
35246         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
35247         by Dietmar as quick fix
35248         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
35249         16 as stack size, used on more places as quick fix before Dietmar
35250         will fix it properly
35251
35252 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
35253
35254         * object.h, object.c: added accessors for fields and properties.
35255
35256 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
35257
35258         * class.c, class.h: made mono_class_get_field_from_name ()
35259         loop on parent types.
35260         Added mono_class_get_property_from_name ().
35261
35262 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35263
35264         * class.c, class.h: move the code to setup the type vtable in its own
35265         function so that it can be reused also for types created at runtime.
35266         Eliminate the "class" identifier from the header file.
35267         * reflection.c: setup the vtable for enums so that we can create
35268         objects for use in SetConstant ().
35269
35270 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
35271
35272         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
35273         instead of the delegate itself as this pointer (bug #28383)
35274
35275 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
35276
35277         * marshal.c (mono_marshal_get_managed_wrapper): added return type
35278         conversions.
35279
35280 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35281
35282         * loader.c: don't set the pinvoke bit on icalls.
35283
35284 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
35285
35286         * debug-helpers.c (mono_method_full_name): only print a number to
35287         indicate wrapper type (so that the output is more readable in traces).
35288
35289 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
35290
35291         * class.c (mono_class_init): include method override patch from Paolo
35292
35293 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
35294
35295         * icall.c: fixed GetTypeCode().
35296
35297 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
35298
35299         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
35300         use real delegate invoke function to make it work with multicast
35301         delegates (fix bug# 28291).
35302
35303 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35304
35305         * object.c: load constant strings.
35306
35307 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35308
35309         * reflection.c: no magic numbers.
35310         * tabledefs.h: security action enum.
35311
35312 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35313
35314         * assembly.c: fix possible memory corruption.
35315
35316 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35317
35318         * reflection.h, reflection.c: added support for linking resources.
35319         * verify.c: check we have an updated corlib.
35320
35321 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
35322
35323         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
35324         string arrays.
35325         (mono_marshal_string_array): null terminate unmanaged string arrays.
35326         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
35327
35328 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35329
35330         * icall.c: Type.GetType () can now return also types from the
35331         calling assembly.
35332
35333 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35334
35335         * loader.h, loader.c: stack walking support.
35336         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
35337         GetCallingAssembly.
35338
35339 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
35340
35341         * marshal.c: added optimisations for blittable types 
35342
35343         * class.c (mono_array_class_get): do not set blittable attribute on arrays
35344         (mono_class_setup_mono_type): set blittable attribute for single
35345         and double.
35346
35347         * marshal.c (mono_string_utf8_to_builder): impl.
35348         (mono_string_builder_to_utf8): impl.
35349         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
35350
35351 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
35352
35353         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
35354         (mono_marshal_get_managed_wrapper): impl. byref types
35355
35356 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35357
35358         * icall.c:
35359         (search_method): don't display debug message. 
35360
35361 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35362
35363         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
35364
35365 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
35366
35367         * appdomain.c: set the missing filename when throwing exception.
35368
35369 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
35370
35371         * metadata.c (mono_type_size): code cleanup
35372         (mono_type_stack_size): removed some test code
35373
35374 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
35375
35376         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
35377         mono_get_exception_file_not_found now.
35378
35379         * exception.c (mono_exception_from_name_two_strings): New version
35380         that will call a constructor with two string arguments. 
35381         (mono_get_exception_file_not_found): New helper routine, used to
35382         report file-not-found errors.
35383
35384 2002-07-20  Dick Porter  <dick@ximian.com>
35385
35386         * process.h:
35387         * process.c: Pass file handles to CreateProcess
35388         
35389         * icall.c:
35390         * file-io.h:
35391         * file-io.c: Implemented CreatePipe
35392
35393 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35394
35395         * metadata.c (mono_get_param_info): set alignment for value types
35396
35397 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
35398
35399         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
35400         Constify mono_domain_assembly_open().
35401         * loader.c: handle null namespace in icalls.
35402
35403 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
35404
35405         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
35406         (emit_str_to_ptr_conv): marshal object as structs
35407
35408         * metadata.c (mono_type_to_unmanaged): marshal object as structs
35409
35410         * marshal.c (mono_marshal_get_runtime_invoke): support value types
35411
35412 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
35413
35414         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
35415         (mono_marshal_get_native_wrapper): we an now return value types
35416
35417 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35418
35419         * verify.c: more checks implemented.
35420
35421 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
35422
35423         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
35424         (fix bug #27695)
35425         (mono_marshal_get_native_wrapper): allow byref arguments
35426         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
35427         impl. PtrToStringXXX methods
35428         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
35429         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
35430         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
35431         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
35432         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
35433
35434 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35435
35436         * reflection.c: fix buglet in parsing an assembly name.
35437
35438 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35439
35440         * marshal.c (emit_ptr_to_str_conv): first impl.
35441
35442 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35443
35444         * object.c, class.h: cache the vtable in the class as suggested by
35445         vargaz@freemail.hu (Zoltan Varga).
35446
35447 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35448
35449         * class.h, loader.c: added mono_field_from_token().
35450         * verify.c: first cut of type checking code.
35451
35452 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
35453
35454         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
35455
35456 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
35457
35458         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
35459         (fix bug #27782)
35460         (mono_marshal_get_remoting_invoke): impl.
35461         (mono_delegate_begin_invoke): impl.
35462         (mono_mb_emit_save_args): impl.
35463         (mono_delegate_end_invoke): impl.
35464         (mono_marshal_get_delegate_begin_invoke):
35465         (mono_marshal_get_delegate_end_invoke):
35466         (mono_marshal_get_delegate_invoke): generate a special name for
35467         those methods (including the signature) and associate them whith
35468         the delegate class. 
35469
35470 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
35471
35472         * reflection.[ch]: 
35473         (mono_reflection_type_from_name): now it has a MonoImage parameter
35474         which is used as the default image to search the type in. If the image
35475         is NULL or getting the type from it fails, it defaults to corlib.
35476
35477         * icall.c: changed 1 call to mono_reflection_type_from_name to match
35478         new parameter.
35479
35480 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35481
35482         * reflection.c: update the parameter table index.
35483
35484 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35485
35486         * domain.c: don't include the mark byte in the string hash.
35487
35488 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35489
35490         * icall.cs: icall for Type.GetTypeCode ().
35491         * verify: a couple of fixes and disabled local initialization checks.
35492
35493 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
35494
35495         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
35496
35497         * debug-helpers.c (mono_method_full_name): print the type of the
35498         runtime wrapper
35499
35500         * metadata.c (mono_signature_hash): a hash function for signatures
35501         (mono_signature_hash): better hash algorithm
35502
35503         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
35504
35505         * debug-helpers.c (mono_method_full_name): this can now generate
35506         method names with signatures
35507
35508         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
35509         method dont have this pointers.
35510
35511 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
35512
35513         * reflection.c: fixup typebuilder tokens.
35514         * image.c: fix buglet.
35515         * marshal.h: remove whitespace.
35516         * metadata.h, metadata.c: reinstate code that was removed.
35517         * verify.c: handle catch directives and fix another couple of bugs.
35518
35519 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
35520
35521         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
35522         (mono_marshal_get_native_wrapper): make it comp. with the old code
35523         (mono_marshal_get_native_wrapper): support boolean
35524         (mono_marshal_get_managed_wrapper): support more types
35525
35526 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
35527
35528         * class.c (class_compute_field_layout): compute class->blittable attribute.
35529
35530 2002-07-09  Dick Porter  <dick@ximian.com>
35531
35532         * threads.c: Make the thread cleaning up cope with threads that
35533         call ExitThread()
35534
35535 2002-07-08  Radek Doulik  <rodo@ximian.com>
35536
35537         * reflection.c (method_encode_code): use non-translated values to
35538         compute finally_start, this fixes exception handling on ppc, yay!
35539
35540         * decimal.h (struct signscale): fix endianess
35541
35542 2002-07-07  Radek Doulik  <rodo@ximian.com>
35543
35544         * reflection.c: swap box_val and not val
35545
35546 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35547
35548         * reflection.c, reflection.h: handle full assembly info in type name.
35549         Handle Type arguments when loading custom attributes.
35550         * icall.c: updated to use new mono_reflection_type_from_name () method.
35551
35552 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35553
35554         * loader.c:
35555         (method_from_memberref): also print assembly name when method not found.
35556
35557 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35558
35559         * icall.c:
35560         (ves_icall_TypeGetProperties): fixed bug #27473. 
35561
35562 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35563
35564         * reflection.c: display image name and token when cannot find the
35565         .ctor for an attribute.
35566
35567 2002-07-05  Martin Baulig  <martin@gnome.org>
35568
35569         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35570
35571 2002-07-04  Dick Porter  <dick@ximian.com>
35572
35573         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
35574         compile on mingw.  This will cause mingw builds to not wait for
35575         subthreads to terminate after the main thread does.  I've lodged a
35576         bug with the mingw developers for them to wrap OpenThread().
35577
35578 2002-07-03  Dick Porter  <dick@ximian.com>
35579
35580         * threads.c: Store thread IDs instead of handles, because
35581         GetCurrentThread() returns a pseudohandle and therefore stores
35582         useless values.  mono_thread_cleanup() continues checking the
35583         array of threads until it is empty, to cope with subthreads
35584         spawning new threads after the main thread has finished.
35585
35586         * profiler.h:
35587         * profiler.c:
35588         * profiler-private.h: Pass the thread ID to thread profiler
35589         functions, instead of a handle
35590
35591 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
35592
35593         * verify.c: fixes to make it more usable.
35594         * pedump.c: added --verify code to verify IL code in an assembly.
35595
35596 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35597
35598         * reflection.c: turn errors into warnings to allow compiling corlib.
35599
35600 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
35601
35602         * reflection.c: add special cases to compile corlib.
35603
35604 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35605
35606         * reflection.c: handle properties with only a set method.
35607
35608 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
35609
35610         * opcodes.h: add enum with opcodes in opval order.
35611
35612 2002-07-01  Dick Porter  <dick@ximian.com>
35613         
35614         * object.h:
35615         * object.c (mono_runtime_run_main): Removed unneeded argument
35616
35617 2002-06-28  Martin Baulig  <martin@gnome.org>
35618
35619         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
35620
35621 2002-06-27  Dick Porter  <dick@ximian.com>
35622
35623         * threads.c: Store the handle in both the parent thread and in the
35624         subthread, to minimise the time between starting a new thread and
35625         storing its ID.
35626
35627 2002-06-26  Dick Porter  <dick@ximian.com>
35628
35629         * appdomain.c (mono_runtime_cleanup): Close the socket library
35630         after all the threads have finished, not before
35631
35632 2002-06-26  Martin Baulig  <martin@gnome.org>
35633
35634         * debug-symfile.c (mono_debug_find_source_location): Added
35635         `guint32 *line_number' argument.  If it's not NULL, store the line number
35636         there and return the file name without the line number.
35637
35638 2002-06-25  Dick Porter  <dick@ximian.com>
35639
35640         * icall.c:
35641         * process.h:
35642         * process.c: Process forking and other support functions
35643
35644 2002-06-25  Dick Porter  <dick@ximian.com>
35645
35646         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
35647         things dont happen when the image is closed.
35648         (mono_image_lookup_resource): Walk the resource section looking
35649         for a particular entry
35650
35651         * cil-coff.h: PE resource section decoding
35652
35653 2002-06-25  Dick Porter  <dick@ximian.com>
35654         
35655         * assembly.h:
35656         * assembly.c: 
35657         (mono_assembly_foreach): Accessor functions to walk the list of
35658         loaded assemblies
35659         (mono_assembly_set_main):
35660         (mono_assembly_get_main): Process methods need to know which
35661         assembly is the "main" one
35662
35663         * object.c (mono_runtime_run_main): Record the main assembly
35664
35665         * debug-helpers.c: Fix typo
35666
35667 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
35668
35669         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
35670         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
35671
35672 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35673
35674         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
35675
35676 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
35677
35678         * image.c (do_mono_image_open): Initialize reference count,
35679         otherwise we leak the MonoImage.
35680
35681 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35682
35683         * reflection.c: small tweak to handle self-hosting.
35684
35685 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
35686
35687         * reflection.c: fix type name parse code.
35688
35689 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35690
35691         * reflection.c: break out of the loop.
35692         * image.c: special case corlib.
35693
35694 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35695
35696         * reflection.c: add all the custom attrs at the end to ensure the
35697         ctors have been properly initialized when the attributes are defined
35698         in the current assembly.
35699
35700 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35701
35702         * reflection.c: handle correctly multiple-nested types.
35703
35704 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
35705
35706         * row-indexes.h: fix typos.
35707         * reflection.c: adjust for typos and fix method_def_or_ref
35708         encoding in MethodImpl table.
35709
35710 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35711
35712         * reflection.c: fix entry point patching (thanks Serge!).
35713
35714 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
35715
35716         * verify.c: add check for System.Exception
35717
35718 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
35719
35720         * image.c, class.c: minifix for code just c&p'ed.
35721         * reflection.c: warning fix.
35722         * object.h, loader.h, domain.c: load also StringBuilder.
35723
35724 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
35725
35726         * marshal.h, marshal.c: some support code to handle complex marshaling.
35727
35728 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35729
35730         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
35731         Better signatures with vtable error dump.
35732
35733 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
35734
35735         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
35736
35737 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
35738
35739         * icall.c (ves_icall_Type_GetField): impl.
35740
35741 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35742
35743         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
35744         to retrieve a marshal description blob for a field or param.
35745
35746 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
35747
35748         * reflection.h, reflection.c: change order of nested type emission
35749         to avoid table corruption. The NestedTypes table is sorted.
35750         * icall.c: change order of GetConstructor results to workaround mcs bug.
35751
35752 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
35753
35754         * reflection.h, reflection.c: handle field and param marshal
35755         information.
35756
35757 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
35758
35759         * icall.c, marshal.c marshal.h: more Marshal class implementation.
35760
35761 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35762
35763         * reflection.c: fix call convention.
35764
35765 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35766
35767         * reflection.h, reflection.c: mono_image_get_memberref_token()
35768         takes a type instead of a class, now. Added
35769         mono_image_get_array_token() to create tokens for the special
35770         multi-dim array methods.
35771
35772 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
35773
35774         * assembly.c: handle modules (no assembly table). Split
35775         loading references in its own function.
35776         * class.c: handle moduleref resolution scope.
35777         * image.c, image.h: cache module name in image.
35778
35779 2002-06-07  Martin Baulig  <martin@gnome.org>
35780
35781         * reflection.c (mono_image_get_type_info): Only add a class layout entry
35782         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
35783
35784 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35785
35786         * icall.c: more signature fixes that used uint instead of int.
35787
35788 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35789
35790         * reflection.c: fixed signature of field refs.
35791
35792 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
35793
35794         * class.c, reflection.c: handle typerefs of nested types
35795         (both on read and when writing files).
35796
35797 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
35798
35799         * icall.c: fix method signatures that tried to workaround the previous
35800         typo, d'oh!
35801
35802 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
35803
35804         * debug-helpers.c: fix typo.
35805
35806 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
35807
35808         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
35809         rewrote the PE/COFF writing code (our programs are understood by the
35810         ms runtime, now).
35811
35812 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
35813
35814         * gc.c, gc.h, icall.c: weakreference support.
35815
35816 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
35817
35818         * Makefile.am, mono-config.c: use $(sysconfdir).
35819
35820 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
35821
35822         * icall.c: changed default precision of Double.ToString() to 15.
35823         Fixed memory leak. Unified with Single.ToString.
35824
35825 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
35826
35827         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
35828
35829 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
35830
35831         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
35832         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
35833         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
35834         and myself.
35835
35836 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35837
35838         * debug-symfile.c, sysmath.c: yet more compilation fixes.
35839
35840 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
35841
35842         * reflection.c, socket-io.c: more compilation fixes.
35843
35844 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35845
35846         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
35847         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
35848         unicode.c: warning and compiler compatibility fixes.
35849
35850 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35851
35852         * class.h, metadata.c: fixed warnings/compilation errors.
35853
35854 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
35855
35856         * Makefile.am, mono-config.c, mono-config.h: configuration file
35857         support routines.
35858         * loader.c, loader.h: make Dll mapping configurable at runtime in the
35859         config file. Export methods to insert and lookup mappings.
35860
35861 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
35862
35863         * reflection.c: handle types and boxed objects in custom attr
35864         constructors.
35865
35866 2002-05-30  Martin Baulig  <martin@gnome.org>
35867
35868         * debug-symfile.c
35869         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
35870
35871 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
35872
35873         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
35874         to lookup the implmap row for a P/Invoke method.
35875         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
35876         P/Invoke method from the runtime on an as needed basis.
35877
35878 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
35879
35880         * metadata.c (mono_metadata_parse_signature): impl.
35881
35882 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
35883
35884         * class.c: handle .pack directive.
35885
35886 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
35887
35888         * object.c: initialize static fields with RVA data.
35889
35890 2002-05-25  Martin Baulig  <martin@gnome.org>
35891
35892         * debug-symfile.c
35893         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
35894
35895 2002-05-24  Martin Baulig  <martin@gnome.org>
35896
35897         * debug-symfile.c
35898         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
35899         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
35900         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
35901
35902 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
35903
35904         * object.c: special case string ctros in invoke.
35905         * gc.c: silly whitespace changes.
35906
35907 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
35908
35909         * threadpool.[ch]: impl. a threadpool that can
35910         be used by mint and mono.
35911
35912 2002-05-22  Martin Baulig  <martin@gnome.org>
35913
35914         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
35915         The first argument is now a `MonoReflectionModuleBuilder *', the return
35916         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
35917         `methods' field to get the method builder.  The `token' argument is the
35918         unfixed token.
35919
35920         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
35921         invalid characters instead of g_assert_not_reached()ing.  This seems
35922         to be the behaviour of mscorlib.
35923
35924 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
35925
35926         * object.c (mono_runtime_invoke_array): applied patch from Rachel
35927         Hestilow to fix bug #25104
35928
35929 2002-05-21  Martin Baulig  <martin@gnome.org>
35930
35931         * debug-symfile.c (mono_debug_find_source_location): New function.
35932         Looks up an IL offset in the line number table and returns the source
35933         location as a string.
35934
35935 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
35936
35937         * icall.c:
35938         (mono_double_ToStringImpl): changed %f by %g until we have something
35939         better.
35940
35941 2002-05-21  Nick Drochak  <ndrochak@gol.com>
35942
35943         * icall.c : Use different name for Math.Pow's icall.  Needed to check
35944         parameters first in C#.
35945
35946 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
35947
35948         * icall.c, reflection.h: added icall to get info about an event.
35949
35950 2002-05-20  Radek Doulik  <rodo@ximian.com>
35951
35952         * object.c (mono_value_box): don't use memcpy for boxing on BIG
35953         endian
35954         (mono_value_box): don't use memcpy for small sizes on
35955         architectures with unaligned access
35956
35957 2002-05-20  Martin Baulig  <martin@gnome.org>
35958
35959         * reflection.c (mono_reflection_setup_internal_class): Don't crash
35960         if `tb->parent == NULL'.
35961         (mono_reflection_create_internal_class): New function.  This is
35962         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
35963         for enum types.
35964
35965         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
35966         New interncall.
35967
35968 2002-05-19  Martin Baulig  <martin@gnome.org>
35969
35970         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
35971         argument to get the length, don't default to the array length.
35972
35973 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
35974
35975         * assembly.c (mono_assembly_setrootdir): New function used to
35976         override the MONO_ASSEMBLIES directory.
35977
35978 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
35979
35980         * icall.c: ValueType_GetHashCode() initialize local var.
35981
35982 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
35983
35984         * reflection.c: sort custom attributes table.
35985
35986 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
35987
35988         * reflection.c: support named args in custom attributes (write support).
35989
35990 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
35991
35992         * reflection.c: fix finally position calculation.
35993
35994 2002-05-15  Radek Doulik  <rodo@ximian.com>
35995
35996         * reflection.c: fixed endianess at many places
35997
35998         * icall.c (ves_icall_InitializeArray): comment out debug msg
35999
36000 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
36001
36002         * object.c (mono_unhandled_exception): new function to handle
36003         unhandled exceptions.
36004         (mono_unhandled_exception): call the UnhandledException event.
36005         (mono_runtime_delegate_invoke): impl.
36006
36007 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
36008
36009         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
36010         returns the RVA, not the direct pointer to the data. Handle the case
36011         when the class size is fixed.
36012
36013 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
36014
36015         * reflection.c: fix some endianess issues.
36016
36017 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
36018
36019         * object.c (mono_runtime_invoke): is now able to catch exceptions.
36020
36021         * threads.c (mono_thread_init): added a callback which is invoked
36022         at thread start.
36023
36024 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
36025         
36026         * icall.c: make GetHashCode return non-negative values.
36027
36028 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
36029
36030         * object.c, icall.c, gc.c: revert to address-based hashcode.
36031
36032 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
36033
36034         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
36035
36036 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36037
36038         * icall.c, class.c: special case <Module>.
36039
36040 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
36041
36042         * icall.c: fix bug in GetNow().
36043
36044 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
36045
36046         * object.c (mono_runtime_class_init): make sure that we call all
36047         static class constructors.
36048
36049 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
36050
36051         * reflection.c: sort methodsemantics table.
36052
36053 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
36054
36055         * reflection.h, reflection.c: honour init locals setting.
36056
36057 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
36058
36059         * icall.c: copied Double ToStringImpl for Single ToStringImpl
36060
36061 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36062
36063         * reflection.c: support ContructorBuilders in attribute blob creation.
36064
36065 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36066
36067         * reflection.c: some changes to build a binary that can be run
36068         directly in windows.
36069
36070 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36071
36072         * loader.c: print a big message when an icall can't be found.
36073
36074 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36075
36076         * string-icalls.c: fix bug 24248.
36077
36078 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
36079
36080         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
36081         icall.c, reflection.h: separate assembly loading by pathname and by
36082         assembly name. Use the MONO_PATH env var to search for assemblies.
36083
36084 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36085
36086         * assembly.c, image.h: add some support for assemblies
36087         with multiple modules.
36088         * class.c, class.h: export mono_class_from_typeref().
36089         * loader.c: remove duplicated code and use mono_class_from_typeref(),
36090         instead.
36091
36092 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36093
36094         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
36095         documentation says (the ECMA one is correct).
36096
36097 2002-05-02  Dick Porter  <dick@ximian.com>
36098
36099         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
36100         Don't name the synchronisation mutex.
36101
36102 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
36103
36104         * rand.c
36105         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
36106         Make the prototypes match.
36107         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
36108         Same.
36109
36110         * icall.c
36111         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
36112         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
36113         all systems have tm.tm_zone, so use strftime() with %Z to print
36114         the timezone abreviation into a temp string.
36115
36116         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
36117         rather than mono_array_addr() on a MonoString on Big Endian
36118         machines.
36119
36120 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
36121
36122         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
36123         fix bug 24041
36124
36125 2002-04-30  Dick Porter  <dick@ximian.com>
36126
36127         * socket-io.c: Cope with SOCKET being an integer rather than a
36128         pointer now.
36129
36130         * threads.c: Added Thread_free_internal, to deal with thread
36131         handle cleanup.  Moved calls to handle_store() and handle_remove()
36132         to start_wrapper(), so each can only be called once.  Allocate
36133         synchronisation blocks with GC_malloc(), and use GC finalisation
36134         to close the handles.
36135
36136         * icall.c: added System.Threading.Thread::Thread_free_internal
36137
36138 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36139
36140         * icall.c: support Environment.Exit, CommandLineArgs().
36141
36142 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
36143
36144         * object.c, object.h: added mono_runtime_run_main () and
36145         mono_runtime_get_main_args () for use in System.Environment.
36146
36147 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
36148
36149         * gc.c: fix thinko, enable actual finalization since the jit is now
36150         fixed.
36151
36152 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36153
36154         * gc.c, object.c: take into account that an object may be offset wrt the address
36155         returned by GC_malloc().
36156
36157 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
36158
36159         * image.c: handle files without entries in the assembly table (modules).
36160
36161 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
36162
36163         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
36164         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
36165         allowed to be null when it's System.Object class setup.
36166
36167 2002-04-27  Martin Baulig  <martin@gnome.org>
36168
36169         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
36170         if `tb->parent == NULL' rather than crashing.
36171
36172 2002-04-28  Nick Drochak  <ndrochak@gol.com>
36173
36174         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
36175         calling acos() where asin() should have been called.
36176
36177 2002-04-26  Martin Baulig  <martin@gnome.org>
36178
36179         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
36180         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
36181         there's a subdirectory called `System', but we don't want to read that
36182         subdirectory as an assembly.
36183
36184 2002-04-25  Martin Baulig  <martin@gnome.org>
36185
36186         * debug-symfile.c: Reflect latest MonoString changes.
36187
36188 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
36189
36190         * rand.c, rand.h: instance method icalls need to have an explicit
36191         this pointer as first argument in the C implementation.
36192
36193 2002-04-25  Nick Drochak <ndrochak@gol.com>
36194
36195         * icall.c: Fix typo in map for GetNonZeroBytes
36196
36197 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36198
36199         * string-icalls.c : String does now passes unit tests without any 
36200         errors, the following changes has been made:
36201         
36202         Implemented replace methods.
36203         Renaming of methods to (try) follow the standard.
36204         Fixed compare ordinal
36205         Made all memory allocated directly to function instead of via icall function.
36206         Small performance fix in is_in_array function
36207                         
36208  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
36209
36210         c (mono_string_Internal_ctor_charp_int_int):
36211         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
36212         sindex < 0, throw ArgumentOutOfRangeException instead of
36213         ArgumentNullException.
36214
36215         Added new check for length == 0, however
36216         I need to make it return String.Empty from the C code.
36217         
36218         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
36219         that calculate the length for us here.
36220         
36221         (mono_string_Internal_ctor_sbytep_int_int): Replaced
36222         mono_string_new_utf16 with mono_string_new, since value is utf8.
36223
36224 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36225
36226         * object.c: register the object for finalization if needed.
36227         Allocate one more char in the string for the terminating 0 char.
36228
36229 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
36230
36231         * class.c, class.h, image.c: check if a type implemenst a destructor.
36232         Use the proper key for array class lookups.
36233         * icall.c: register the icalls in the System.GC class.
36234         * gc.c, gc.h: GC-related functions and icalls.
36235
36236 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36237
36238         * icall.c:
36239         * socket-io.c:
36240         * unicode.c: free some strings gotten from mono_string_to_utf8 and
36241         changed a couple of free () by g_free ().
36242
36243         * decimal.c: one-liner in the comments for decimal2string ().
36244
36245 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36246
36247         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
36248
36249 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
36250
36251         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
36252         * object.c (mono_runtime_invoke_array) : handle null in params
36253
36254 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36255
36256         * string-icalls.c: fixed bug in split (one off bug)
36257
36258 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36259
36260         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
36261         * icalls.c: added String::Equals as internal method
36262
36263 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
36264
36265         * threads.c: fixed bug in the double interlocked functions
36266
36267 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
36268
36269         * threads.c: implemented all of the new interlocked icalls.
36270         * string-icalls.c: fix a bug in insert.
36271         * icalls.c: added the icalls for interlocked, removed old string functions.
36272         
36273 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36274
36275         * loader.c: fix off-by-one error when reading argument names.
36276
36277 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36278
36279         * profiler.c: win32 counter implementation (untested).
36280         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
36281         (the latter needs testing and more complete impl. from win32 folks).
36282
36283 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
36284
36285         * object.c: mono_array_new_full workaround mono_array_class_get
36286         problem.
36287
36288 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36289
36290         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
36291         * object.h (mono_string_chars): Changed casting type.
36292
36293 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36294
36295         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
36296                            method signatures to use gunichar2 instead of gint16.
36297
36298 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
36299
36300         * object.h, object.c: domain-specific versions of mono_object_new and
36301         mono_array_new.
36302
36303 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
36304
36305         * object.c: changed String layout
36306
36307         * string-icalls.c (mono_string_Internal_ctor_chara): added
36308         internal string constructors.
36309
36310 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
36311
36312         * threads.c: pass 'this' to the thread start routine.
36313
36314 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36315
36316         * string-icalls.c: fix IndexOf and LastIndexOf. Now
36317         InternalCompareStr don't call twice mono_string_cmp_char for the last
36318         character. Improved performance in mono_string_cmp_char.
36319
36320 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
36321
36322         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
36323         code into its own library: libmonoruntime.
36324
36325 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
36326
36327         * object.h, object.c: changed array format so that szarrays do not
36328         require a bounds structure.
36329         * icall.c, appdomain.c: support for new szarray format.
36330
36331 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
36332
36333         * metadata.c: compare also the retuns type when comparing signatures:
36334         we didn't do this as an optimization since really overloaded methods
36335         must differ also in the arguments, but this doesn't work with
36336         low-level IL code (or when using explicit conversion operators: see
36337         bug#23498 for an example).
36338
36339 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
36340
36341         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
36342
36343 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
36344
36345         * icall.c: make MonoType::GetElementType its own icall.
36346
36347 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
36348
36349         * icall.c: remove MonoMethod_get_Name().
36350         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
36351         object.
36352
36353 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36354
36355         * string-icalls.c: optimized a few methods.
36356
36357 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
36358
36359         * icall.c: added all new string internal calls
36360         * string-icalls.c: added, new string internal call implementation.
36361         * object.c: added mono_string_new_size for allocating a string a size
36362
36363 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
36364
36365         * object.c (mono_object_isinst): use the same code as in the
36366         optimized x86 version.
36367
36368 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
36369
36370         * profiler.c: TSC-based timer code (faster and more accurate).
36371         Not hooked up in configure, yet (set USE_X86TSC to 1).
36372
36373 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
36374
36375         * profiler.c, profiler.h: track time spent compiling methods.
36376         * threads.c: track thread creation/destruction.
36377
36378 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
36379
36380         * profiler.c, profiler.h, profiler-private.h: profiling interface
36381         and sample implementation. Moved here so that it can be used also by
36382         the jit.
36383
36384 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
36385
36386         * reflection.c, reflection.h: keep types and other handles separate in
36387         the hash tables for referred tokens. Add guid for modules.
36388
36389 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
36390
36391         * assembly.c: fix bugs found with valgrind.
36392         * metadata.h, metadata.c: added mono_metadata_guid_heap().
36393
36394 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
36395
36396         * threads: added icall support for getting current domain for
36397                    the thread.
36398  
36399 2002-04-13  Martin Baulig  <martin@gnome.org>
36400
36401         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
36402         (MonoDebugVarInfo): Added `index' field for register based addresses.
36403         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
36404         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
36405         `MonoDebugVarInfo *params' and `guint32 this_offset' with
36406         `MonoDebugVarInfo *this_var'.
36407
36408         * debug-symfile.c (relocate_variable): New static function to write
36409         a location description for a local variable or method parameter.
36410
36411 2002-04-12  Martin Baulig  <martin@gnome.org>
36412
36413         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
36414         stack offset and begin/end scope address of a local variable.
36415         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
36416         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
36417         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
36418
36419         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
36420         Added new relocation types for start/end scope of a local variable.
36421
36422 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
36423
36424         * object.h: add mono_object_domain() macro.
36425         * reflection.c: handle typespecs.
36426         * icall.c: MonoMethod::get_Name() implementation.
36427
36428 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36429
36430         * icall.c: String::GetHashCode() icall implementation.
36431
36432 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36433
36434         * icall.c: String::IndexOfAny icall.
36435         * object.c, object.h: make array->max_length more useful.
36436         Intrduced mono_object_class() and mono_string_length() macros.
36437
36438 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
36439
36440         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
36441         instead of g_unichar_isdigit.
36442
36443 2002-04-11  Nick Drochak  <ndrochak@gol.com>
36444
36445         * icall.c: Implement a simple Double.ToString().
36446
36447 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
36448
36449         * appdomain.h: only io-layer.h is supposed to be included.
36450         * icall.c: explicitly import environ. Fix warning.
36451
36452 2002-04-10  Nick Drochak  <ndrochak@gol.com>
36453
36454         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
36455                 return true even if it's not Daylight Savings time.
36456                 Only return false for the case where the function isn't
36457                 implemented for a plaform (read Windows).
36458
36459 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
36460
36461         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
36462         data with a mutex.
36463
36464 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
36465
36466         * mempool.c (mono_mempool_alloc): only use g_malloc when
36467         absolutely necessary.
36468
36469 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36470
36471         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
36472
36473         * class.c (mono_class_vtable): use domain mempool to allocate vtable
36474         (mono_class_proxy_vtable): use domain mempool
36475
36476 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
36477
36478         * appdomain.h, appdomain.c: split initialization that requires the
36479         execution engine support into mono_runtime_init().
36480
36481 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
36482
36483         * class.c (mono_class_init): don't include vtable inside MonoClass
36484         to save some memory, gather some statistics.
36485         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
36486
36487 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36488
36489         * icall.c: internalcall implementation for ValueType.Equals().
36490
36491 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
36492
36493         * object.c (mono_message_init): moved 
36494         (mono_runtime_exec_main): new arch. independent impl.
36495         (mono_runtime_invoke_array): new method - like
36496         mono_runtime_invoke, but you can pass an array of objects.
36497         (mono_remoting_invoke): new arch. independent impl.
36498         (mono_message_invoke): new arch. independent impl.
36499         (mono_runtime_class_init): new arch. independent impl.
36500         (mono_runtime_object_init): new arch. independent impl.
36501
36502 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
36503
36504         * metadata.c, object.c, reflection.c: documented the exported
36505         functions.
36506
36507 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
36508
36509         * icall.c: simpler code to pass the assembly builder data to corlib.
36510         Implement GetNestedTypes() internalcall.
36511
36512 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
36513
36514         * class.c: warn if a type can't be loaded.
36515
36516 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
36517
36518         * image.h: typedef MonoImageOpenStatus
36519         * types.h: removed unused file
36520         
36521 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
36522
36523         * icall.c: Enum_ToObject accepts enum value arguments.
36524
36525 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
36526
36527         * class.c: move initialization of properties, events and nested
36528         classes, so that they happen for interfaces, too.
36529
36530 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
36531
36532         * icall.c: cleanup some ugly casts in Array_SetValue*.
36533
36534 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
36535
36536         * icall.c: the values array fro enums is of the correct type, now.
36537         Implement (correctly) getFullName instead of assQualifiedName for
36538         MonoType.
36539         * reflection.h, reflection.c: added mono_type_get_name ().
36540
36541 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
36542
36543         * assembly.c, image.h: for each MonoImage, record from wich assembly
36544         it was loaded.
36545         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
36546         Make Type.Assembly work.
36547
36548 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
36549
36550         * debug-symfile.h: use char* instead of gpointer to avoid
36551         unnecessary casts.
36552
36553         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
36554
36555         * icall.c (ves_icall_InternalExecute): impl. FielSetter
36556         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
36557
36558 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
36559
36560         * icall.c (mono_message_init): impl. (code cleanup)
36561         (ves_icall_InternalExecute): impl. FieldGetter
36562
36563         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
36564         defined we call all (non-static)methods through the vtable. 
36565
36566 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
36567
36568         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
36569         finalizer even though the memory is still referenced (and the chunk of
36570         memory is not freed).
36571
36572 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
36573
36574         * assembly.c: fix brokeness.
36575
36576 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
36577
36578         * class.c: kill some warnings. Check explicit interface method
36579         implementation also without considering the namespace.
36580         Load also literal strings in static class data.
36581
36582 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
36583
36584         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
36585         (default_assembly_name_resolver): Make the resolver take the
36586         "base" directory where the assembly was originally defined, so we
36587         can load DLLs that are in the same directory as the assembly that
36588         is being referenced.
36589
36590 2002-03-28  Dick Porter  <dick@ximian.com>
36591
36592         * file-io.h: 
36593         * file-io.c:
36594         * socket-io.c: 
36595         * unicode.h: 
36596         * unicode.c: Warning cleanups
36597
36598 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
36599
36600         * object.h, reflection.h: use the correct type instead of MonoObject.
36601
36602 2002-03-28  Martin Baulig  <martin@gnome.org>
36603
36604         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
36605         (mono_debug_update_symbol_file): Initialize classes if necessary.
36606
36607 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36608
36609         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
36610         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
36611
36612 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
36613
36614         * assembly.h: fix function prototype.
36615         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
36616         * mono-endian.h: use const cast.
36617
36618 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36619
36620         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
36621
36622 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36623
36624         * loader.c: don't assert when a typeref can't be loaded, give
36625         a chance to the runtime to trow an exception instead.
36626         * loader.h: fix warning.
36627
36628 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
36629
36630         * class.c (mono_class_proxy_vtable): added proxy support
36631
36632 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
36633
36634         * icall.c: removed last of PAL calls, added System.Environment
36635         * file-io.h, file-io.c: MonoIO implementation
36636         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
36637
36638 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36639
36640         * appdomain.c: do not use the byte marker in ldstr table lookup.
36641         * debug-helpers.c: allow two ':' to separate class and method name.
36642         * object.c: allocate arrays bounds with the GC, too.
36643         * verify: add a few more checks.
36644
36645 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
36646
36647         * reflection.c: output also literal strings. Allocate parameter data
36648         with GC_malloc() (thanks, Martin, for catching this!).
36649
36650 2002-03-26  Martin Baulig  <martin@gnome.org>
36651
36652         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
36653         include the `this' offset in the `param_offsets'.
36654
36655 2002-03-25  Martin Baulig  <martin@gnome.org>
36656
36657         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
36658         mono_debug_get_class() function to get the classes. Added new
36659         relocation types for arrays and strings.
36660         (mono_debug_get_class): New static function to search in all
36661         referenced assemblies for a metadata token.
36662
36663         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
36664
36665 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
36666
36667         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
36668         hold gc-allocated objects. Make the string heap a stream like the
36669         others. Removed duplicated code when writing stream info.
36670         Added asserts to catch possible buffer overflows. Set the sorted map
36671         for tables that need sorting. Added some documentation.
36672
36673 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
36674
36675         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
36676         for interned strings and vtables.
36677
36678 2002-03-24  Martin Baulig  <martin@gnome.org>
36679
36680         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
36681         it in the array since it was created with g_slist_prepend().
36682
36683 2002-03-24  Martin Baulig  <martin@gnome.org>
36684
36685         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
36686         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
36687         (mono_debug_method_from_token): Renamed to
36688         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
36689         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
36690
36691         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
36692         relocation types.
36693
36694         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
36695
36696 2002-03-24  Martin Baulig  <martin@gnome.org>
36697
36698         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
36699         (mono_debug_method_from_token): New func.
36700
36701         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
36702         New interncall, calls mono_debug_local_type_from_signature().
36703         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
36704         calls mono_debug_method_from_token().
36705
36706 2002-03-23  Martin Baulig  <martin@gnome.org>
36707
36708         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
36709         specifies the number of bytes to be converted, not the array size.
36710         Return the number of chars, not the number of bytes.
36711         (ves_icall_iconv_get_chars): The `byteCount' argument
36712         specifies the number of bytes to be converted, not the array size.
36713
36714 2002-03-23  Martin Baulig  <martin@gnome.org>
36715
36716         * reflection.h (MonoReflectionSigHelper): New type.
36717
36718         * reflection.c (mono_reflection_sighelper_get_signature_local),
36719         (mono_reflection_sighelper_get_signature_local): New functions.
36720
36721         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
36722         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
36723         interncalls.
36724
36725 2002-03-23  Martin Baulig  <martin@gnome.org>
36726
36727         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
36728         is_writeable is set.
36729         (mono_raw_buffer_update): New function to write the modified map
36730         back to disk.
36731
36732         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
36733
36734         * debug-symfile.c (mono_debug_update_symbol_file): Call
36735         mono_raw_buffer_update() when done writing.
36736
36737 2002-03-23  Martin Baulig  <martin@gnome.org>
36738
36739         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
36740
36741         * debug-symfile.c: Added support for arguments and local variables.
36742
36743 2002-03-23  Dick Porter  <dick@ximian.com>
36744
36745         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
36746         protected by ifdefs, hence breaking the w32 build.
36747
36748 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36749
36750         * object.c: implement is_interned() the right way.
36751
36752 2002-03-21  Martin Baulig  <martin@gnome.org>
36753
36754         * debug-symfile.[ch]: New files to handle debugging information
36755         files. There's also support to dynamically update these symbol
36756         files to include machine dependent information.
36757
36758 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
36759
36760         * threads.c (mono_thread_create): new function to create thread
36761         from C
36762
36763 2002-03-20  Martin Baulig  <martin@gnome.org>
36764
36765         * icall.c (ves_icall_InternalInvoke): Create a new object if the
36766         method is a constructor.
36767         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
36768         points to ves_icall_InternalInvoke().
36769
36770 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
36771
36772         * file-io.c: Flush shouldn't throw exceptions.
36773
36774 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
36775
36776         * file-io.c: FileStream flush support; FileSetLength now
36777         restores file pointer.
36778
36779 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
36780
36781         * class.c: set image for pointer classes.
36782
36783 2002/03/19  Nick Drochak <ndrochak@gol.com>
36784
36785         * sysmath.c: Forgot one.
36786
36787 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
36788
36789         * sysmath.c: Avoid redefining existing names.
36790
36791 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
36792
36793         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
36794         handled by runtime as icall rather than dllimport from libm.so
36795         * file-io.c, file-io.h: fixed handle argument type.
36796
36797 2002-03-18  Dick Porter  <dick@ximian.com>
36798
36799         * reflection.c (mono_image_get_type_info): rename interface to
36800         iface, because of "#define interface struct" on windows.
36801
36802 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
36803
36804         * class.c, class.h: rename and export mono_ptr_class_get().
36805         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
36806         * reflection.c, reflection.h, icall.c: better/saner type name
36807         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
36808         method signatures.
36809
36810 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
36811
36812         * class.c (mono_class_init): removed hardcoded GHC_SLOT
36813
36814         * icall.c (ves_icall_InternalInvoke): impl.
36815
36816 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
36817
36818         * reflection.c: output the interface map table, too.
36819
36820 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36821
36822         * class.c (class_compute_field_layout): separate computation of 
36823         static field layout
36824
36825 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
36826
36827         * icall.c: added System.Buffer support.
36828         * file-io.c: moved file icalls from PAL to FileStream.
36829
36830 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
36831
36832         * icall.c (ves_icall_System_Object_GetHashCode): impl.
36833
36834 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
36835
36836         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
36837
36838 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
36839
36840         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
36841
36842 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
36843
36844         * debug-helpers.{c,h}: moved here from monograph some useful functions
36845         to locate a method by name/signature in a class or image. Included
36846         also a small and flexible IL disassembler.
36847
36848 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
36849
36850         * reflection.c: fixup tokens in methods with small header size, too.
36851
36852 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
36853
36854         * object.c (mono_string_to_utf8): remove assert(!error), instead
36855         print a warning. 
36856
36857 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
36858
36859         * icall.c: update to the new mono_Array_class_get interface.
36860
36861 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36862
36863         * appdomain.c, object.c: Boehm-GC enable.
36864         * icall.c: make get_data_chunk() support split data requests.
36865         Ensure a class is initialized in more cases. Return only the first
36866         property found in GetProperties() or the compiler gets confused. 
36867         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
36868         * reflection.h, reflection.c: add fixup mechanism for field and method
36869         tokens. Initialize assembly->typeref in a single place. Output
36870         properties after events. Support custom attributes for events, too.
36871         Typo fix for paramter custom attrs.
36872
36873 2002-03-07  Martin Baulig  <martin@gnome.org>
36874
36875         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
36876
36877 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
36878
36879         * class.c (mono_array_class_get): fix. for multi. dim. arrays
36880
36881 2002-03-06  Martin Baulig  <martin@gnome.org>
36882
36883         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
36884         non-zero lower bounds. See testcases #F10-#F13.
36885
36886 2002-03-05  Martin Baulig  <martin@gnome.org>
36887
36888         * exception.c (mono_get_exception_argument_out_of_range): New exception.
36889
36890         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
36891         ves_icall_System_Array_GetValue(), only calculate the absolute array position
36892         here.
36893         (ves_icall_System_Array_SetValue): Likewise.
36894         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
36895         as argument and does the actual work. This function is used when copying a
36896         multi-dimensional array.
36897         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
36898         now do all the widening conversions of value types.
36899         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
36900
36901 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
36902
36903         * class.c: remove some magic numbers and use the smbolic names,
36904         instead. Added init_events() to load event info at class init time.
36905         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
36906         and mono_metadata_methods_from_event().
36907         * reflection.h, reflection.c: added support for writing out the evnets
36908         related information.
36909
36910 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
36911
36912         * reflection.h, icall.c: use a different method (GetInterfaces)
36913         to gather interface info and add isbyref, isprimitive and
36914         ispointer to the ves_icall_get_type_info() return value.
36915
36916 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
36917
36918         * class.h: stared adding support for events.
36919         * icall.c: split find_members implementation. Added debug icall to get
36920         the address of an object.
36921         * reflection.c: handle TypeBuilders in mono_type_get_object().
36922
36923 2002-03-01  Martin Baulig  <martin@gnome.org>
36924
36925         * icall.c (ves_icall_System_Array_GetLength): This must throw an
36926         ArgumentOutOfRangeException(), not an ArgumentException().
36927         (ves_icall_System_Array_GetLowerBound): Likewise.
36928         (ves_icall_System_Array_GetValue): Improved argument checking.
36929         (ves_icall_System_Array_SetValue): Improved argument checking.
36930
36931 2002-03-01  Martin Baulig  <martin@gnome.org>
36932
36933         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
36934         called with invalid arguments rather than just dying with g_assert().
36935         (ves_icall_System_Array_SetValue): Likewise.
36936         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
36937         raise a NotImplementedException instead.
36938         (ves_icall_System_Array_GetLength): Added argument checking.
36939         (ves_icall_System_Array_GetLowerBound): Added argument checking.
36940
36941 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
36942
36943         * object.h (mono_assert): new macros mono_assert and
36944         mono_assert_not_reached
36945
36946 2002-02-28  Martin Baulig  <martin@gnome.org>
36947
36948         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
36949         and "System::String::IsInterned" to "System::String::_IsInterned".
36950
36951 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
36952
36953         * icall.c: remove hacks for typebuilder. Added icall to create a
36954         modified type from a tybebuilder.
36955         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
36956         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
36957         to create a backing MonoClass for a TypeBuilder.
36958
36959 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
36960
36961         * class.c, class.h: more refactoring of class init.
36962         Export mono_class_setup_mono_type() and mono_class_setup_parent().
36963
36964 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
36965
36966         * marshal.c, marshal.h: start of marshaling interface.
36967
36968 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
36969
36970         * icall.c: fix order in assembly qualified name icall.
36971
36972 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
36973
36974         * class.c: do not free str, since we store it in the hash table.
36975         * reflection.h: add label field to MonoILExceptionInfo.
36976         * reflection.c: handle references to more than one assembly. Handle
36977         case when there isn't a module created in the assembly.
36978
36979 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
36980
36981         * class.c: Fix typo. Start refactoring of class init code.
36982
36983 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
36984
36985         * appdomain.c: exit with 1 on error.
36986         * class.c: we already have the name in MonoClassField.
36987         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
36988         MonoStreamHeader instead of an offset of image->raw_metadata.
36989
36990 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
36991
36992         * appdomain.c (mono_init): Be even more descriptive about the error.
36993
36994 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
36995
36996         * appdomain.c: give the user an informative message when corlib can't
36997         be loaded.
36998
36999 2002-02-26  Martin Baulig  <martin@gnome.org>
37000
37001         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
37002         New icall to get the time zone data.
37003
37004 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37005
37006         * reflection.c: set virtual and raw size of section correctly.
37007         * threads.c: transfer domain information to newly created threads.
37008
37009 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37010
37011         * class.c: when instancing a class in a domain, load the default
37012         vaules for static fields from the constant table. Fix System.Enum to
37013         not be an enum.
37014         * icall.c: implement Object::GetType() internalcall. Implemented
37015         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
37016         Fixed checking of binding flags in find_members().
37017         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
37018         * reflection.c: handle enumerations when writing to the constant
37019         table. Use a different object cache for types.
37020
37021
37022 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
37023
37024         * object.c (mono_object_isinst): fix for arrays
37025
37026         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
37027
37028 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37029
37030         * object.c: don't use mprotect ()  and fix intern pool hash table
37031         lookup for big endian systems.
37032
37033 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
37034
37035         * icall.c: change type_is_subtype_of () signature.
37036
37037 2002-02-21  Mark Crichton  <crichton@gimp.org>
37038
37039         * rand.c, rand.h: Added random number generator for
37040         System.Security.Cryptography classes.
37041
37042         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
37043
37044         * icall.c: Added System.Security.Cryptography calls.
37045
37046 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
37047
37048         * class.c, icall.c, metadata.c: better support for pointer types.
37049         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
37050         * reflection.c: Add support for getting custom attrs for properties
37051         and simplify some code.
37052
37053 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
37054
37055         * icall.c: change getToken () and add custom attribute GetBlob()helper
37056         method.
37057         * reflection.h: add custom attrs array to the reflection builder structures.
37058         * reflection.c: encode and emit custom attributes for all the relevant
37059         reflection objects. Cache fieldref and methodref tokens. Change
37060         mono_image_create_token() interface to take a MonoDynamicAssembly.
37061         More complete custom attributes decoder. Load custom attributes for
37062         Assembly, Field, Method and Constructor objects, too. Make the
37063         returned array an Attribute[] one, not object[]. Added
37064         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
37065         custom attribute constructor.
37066
37067 2002-02-20  Dick Porter  <dick@ximian.com>
37068
37069         * icall.c:
37070         * rawbuffer.c:
37071         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
37072         problem code out for now).
37073
37074 2002-02-19  Radek Doulik  <rodo@ximian.com>
37075
37076         * object.c (mono_ldstr): use hash table to avoid multiple swapping
37077
37078 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
37079
37080         * icall.c: register the GetCustomAttributes method.
37081         * object.c, object.h: add mono_string_new_len ().
37082         * reflection.h, reflection.c: added mono_runtime_invoke(),
37083         mono_install_runtime_invoke(). Added
37084         mono_reflection_get_custom_attrs () to load custom attributes and
37085         create the attribute objects.
37086
37087 2002-02-19  Dick Porter  <dick@ximian.com>
37088         * threads-dummy-types.c:
37089         * threads-dummy-types.h:
37090         * threads-dummy.c:
37091         * threads-dummy.h:
37092         * threads-pthread-types.c:
37093         * threads-pthread-types.h:
37094         * threads-pthread.c:
37095         * threads-pthread.h:  Deleted obsolete files
37096
37097 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
37098
37099         * class.c (mono_class_vtable): runtime init the class when we
37100         allocate static class data.
37101
37102         * icall.c (ves_icall_System_Array_SetValue): check for null values.
37103
37104         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
37105         and String - but we will need generic marshalling support in the
37106         future. 
37107         (mono_init): set the domain name in a ms compatible way
37108
37109         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
37110         String[].
37111
37112 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
37113
37114         * object.c (mono_array_clone): use alloca() instead of g_malloc  
37115         for sizes
37116
37117         * appdomain.c (mono_domain_unload): impl.
37118
37119 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37120
37121         * appdomain.c, object.c: fix intern pool implementation.
37122         * class.c: fix alignment code.
37123
37124 2002-02-16  Radek Doulik  <rodo@ximian.com>
37125
37126         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
37127         and s2 > s1, just copy lower bytes to be compatible with little
37128         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
37129         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
37130
37131         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
37132         force big_endian to be 1 for big endian machines 
37133         (ves_icall_iconv_new_decoder): ditto
37134
37135 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
37136
37137         * socket-io.c (convert_sockopt_level_and_name): If the system
37138         doesn't define SOL_IP or SOL_TCP, get them by hand using
37139         getprotobyname() and caching the values (because this could be a
37140         slow operation).
37141         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
37142         Use the appropriate struct when the system does support it. Ie,
37143         not all systems have struct ip_mreqn so use struct ip_mreq when
37144         appropriate.
37145
37146 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
37147
37148         * reflection.c: handle finally clauses.
37149
37150 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
37151
37152         * socket-io.c: use g_snprintf() instead of snprintf.
37153
37154 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37155
37156         * reflection.c (mono_param_get_objects): Cast second argument to
37157         mono_method_get_param_names to a const char** to silence the
37158         compiler warning.
37159
37160         * appdomain.c (mono_domain_assembly_open): Put parens around the
37161         truth statement in the for-loop.
37162
37163         * unicode.c (iconv_convert): Got rid of a compiler warning about
37164         int i being unused when the system has a new iconv.
37165         (iconv_get_length): Same.
37166
37167         * image.c (load_class_names): Cast the second argument to
37168         g_hash_table_insert() to char* to hush compiler warnings about the
37169         arg being a const.
37170         (mono_image_open): Same here.
37171
37172         * socket-io.c: Don't conditionally include sys/filio.h or
37173         sys/sockio.h here anymore since we now get them from
37174         io-layer/io-layer.h
37175         (inet_pton): If the system doesn't support inet_aton, implement
37176         using inet_addr and also #define INADDR_NONE if it isn't defined
37177         by the system.
37178
37179 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
37180
37181         * metadata.c, metadata.h: added function to get packing and size info
37182         of a typedef.
37183         * reflection.h, reflection.c: handle field RVA data. Save info about
37184         the table layout if needed. Assign typedef indexes to all the types
37185         before dumping the info about them to avoid forward reference problems.
37186
37187 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
37188
37189         * socket-io.c (convert_sockopt_level_and_name): ifdef
37190         SO_ACCEPTCONN because it is not defined on my system (old debian)
37191
37192 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
37193
37194         * opcode.c: use stddef.h to get NULL.
37195
37196 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
37197
37198         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
37199         for FIONBIO, FIONREAD and SIOCATMARK.
37200         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
37201         define INADDR_NONE and besides, inet_addr() is deprecated and
37202         should not be used. Use inet_pton() instead - it also has the
37203         added bonus that it can easily handle IPv6 addresses as well.
37204         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
37205
37206 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
37207
37208         * decimal.c: remove _MSC_VER conditional.
37209
37210 2002-02-13  Dick Porter  <dick@ximian.com>
37211
37212         * socket-io.c: 
37213         * icall.c: Internal calls for Blocking, Select, Shutdown,
37214         GetSocketOption and SetSocketOption
37215
37216 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37217
37218         * assembly.cs: better resolver: use it instead of some kludgy
37219         code.
37220
37221 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
37222
37223         * reflection.c: the best way to speed-up the compiler is to avoid
37224         infinite loops.
37225
37226 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
37227
37228         * class.c (mono_class_vtable): changed the object layout
37229         (obj->vtable->class). 
37230         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
37231
37232 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
37233
37234         * assembly.c: look for assemblies in the assembly dir, too.
37235
37236 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37237
37238         * class.c: fix thinko in mono_class_from_type().
37239
37240 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
37241
37242         * exception.h, exception.c: added TypeLoadException.
37243         * object.h, object.c: added mono_array_clone ().
37244         * icall.c: handle throwOnError in AssemblyGetType().
37245         Added Array.Clone().
37246         * opcode.h, opcode.c: use a single value for the opcode val.
37247         Compile fix for non-gcc compilers.
37248
37249 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
37250
37251         * opcodes.c, opcodes.h: export interesting info about opcodes.
37252
37253 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
37254
37255         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
37256         icalls. 
37257
37258         * class.c (class_compute_field_layout): set element_class for enums
37259         (mono_class_create_from_typedef): set element_class for normal classes
37260
37261         * icall.c (ves_icall_System_Enum_get_value): impl.
37262
37263         * class.c (mono_class_create_from_typedef): do not set valuetype
37264         flag for System.ValueType and System.Enum
37265
37266 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
37267
37268         * unicode.c (iconv_convert): fix big endian problem.
37269
37270 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
37271
37272         * class.c: add asserts if we are ever going to scribble over memory.
37273         * socket-io.c: not all systems have AF_IRDA defined.
37274
37275 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
37276
37277         * class.c (class_compute_field_layout): do not consider static
37278         fields to compute alignment
37279
37280 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
37281
37282         * appdomain.c (mono_appdomain_get): impl.
37283         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
37284
37285 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
37286
37287         * icall.c: ignore "file://" prefix when loading an assembly.
37288
37289 2002-01-23  Dick Porter  <dick@ximian.com>
37290
37291         * socket-io.c:
37292         * icall.c:
37293         * Makefile.am: Added socket support
37294
37295 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37296
37297         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
37298         code back.  This should return the assemblies that are loaded by
37299         the runtime on behalf of an application domain. 
37300
37301         The current implementation is still broken, it just returns every
37302         assembly loaded, but until we get real applications domain this
37303         will do.
37304
37305 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
37306
37307         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
37308         AppDomain object.
37309
37310 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
37311
37312         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
37313         the mono_class_from_name lookup.
37314         (ves_icall_get_parameter_info): ditto.
37315         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
37316         method.
37317         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
37318
37319 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
37320
37321         * class.c: load also nested classes on class init.
37322         System.ValueType instance methods gets passed boxed
37323         values, unless methods in derived classed that get a pointer to the
37324         data.
37325         * icall.c: use better name parsing code in GetType().
37326         * image.c, image.h: add mono_image_loaded ().
37327         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
37328         * reflection.c, reflection.h: added mono_reflection_parse_type().
37329
37330 2002-01-22  Veronica De Santis <veron78@interfree.it>
37331
37332         * icall.c : Added mapping of internal calls for Manual and Auto reset events
37333         * threads.c : Added the implementation of internal calls for events
37334         * threads.h : Added prototypes of internal calls for events
37335         
37336 2002-01-21  Radek Doulik  <rodo@ximian.com>
37337
37338         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
37339
37340 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
37341
37342         * class.c (mono_class_init): set min_align to 1 (instead of 0)
37343         (mono_class_value_size): use min_align
37344
37345 2002-01-20  Dick Porter  <dick@ximian.com>
37346
37347         * threads.h:
37348         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
37349         so it compiles on w32.
37350
37351 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
37352
37353         * metadata.c (mono_type_stack_size): impl.
37354
37355         * class.c (mono_class_get_field): impl. memberref token
37356
37357 2002-01-16 Veronica De Santis <veron78@@interfree.it>
37358
37359         * icall.h : Added the internal calls mapping for CreateMutex_internal
37360                     and ReleaseMutex_internal.
37361         * threads.h : Added the prototype of mutexes internal calls.
37362         * threads.c : Added the implementations of mutexes internal calls.
37363
37364 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
37365
37366         * metaparse.h: removed unused file.
37367         * reflection.c, reflection.h: added stream_data_align () function 
37368         to align data in streams and keep stream aligned. Add support for
37369         exception support in method headers.
37370
37371 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
37372
37373         * unicode.c: make iconv_convert () return the number of bytess written
37374         in the output buffer.
37375
37376 2002-01-15  Dick Porter  <dick@ximian.com>
37377         * threads.c: Make the runtime's idea of infinite timeouts coincide
37378         with the class library's
37379
37380         Fix a particularly egregious bug in mono_thread_cleanup(). That
37381         code was so utterly bogus it must have been written on a Monday.
37382
37383 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
37384
37385         * reflection.h: add subtypes field to TypeBuilder.
37386         * reflection.c: encode constants for literal fields.
37387         Handle subtypes. Fix user string token (and add a zero byte)
37388         at the end.
37389         
37390 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
37391
37392         * class.c (mono_class_init): bug fix: assign slot numbers for
37393         abstract methods.
37394
37395 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
37396
37397         * reflection.c: don't try to output a code RVA for abstract methods.
37398         Small fixes for method header format. Output parameter info to the
37399         ParamDef table. Save method overriding info to MethodImpl table.
37400         Fix property support. Allow typedef.extends to be a type in the
37401         building assembly.
37402         * verify.c: fix off-by-one error.
37403
37404 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
37405
37406         * class.c: fix mono_class_from_mono_type () for szarray types.
37407         Remove unused cache check in mono_class_from_type_spec().
37408         * icall.c: *type_from_name () functions handle simple arrays and byref.
37409         * reflection.c: handle byref and szarray types. Handle methods without
37410         body (gets P/Invoke compilation working). Handle types and fields in
37411         get_token ().
37412         * reflection.h: add rank to MonoTypeInfo.
37413
37414 2002-01-10  Dick Porter  <dick@ximian.com>
37415
37416         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
37417         internal calls
37418
37419 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
37420
37421         * icall.c: initialize class in type_from_handle ().
37422         Loop also in parent classes for get_method ().
37423         * reflection.c: properly encode class and valuetype types.
37424         Start on encoding TypeBuilder types. Handle fieldrefs.
37425         Use correct length when registering a user string.
37426         Handle ConstructorBuilder and MonoMethod in get_token ().
37427         Make mono_type_get_object () aware of cached types.
37428         * object.c: back out change to mono_string_new ().
37429
37430 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
37431         * object.c: mono_string_new should return a NULL when the string 
37432         passed in is NULL -- not try to deference it.
37433         
37434 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
37435
37436         * icall.c: hack to make IsSubType work for TypeBuilders.
37437         * reflection.c: emit constructors before methods.
37438         Retrieve param names in mono_param_get_objects().
37439
37440 2002/01/05  Nick Drochak  <ndrochak@gol.com>
37441
37442         * Makefile.am: fix list of headers and sources so automake 1.5
37443         doesn't complain. Removed \# at end of list.
37444
37445 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
37446
37447         * reflection.c: get token for a method ref. Set return type of
37448         constructor to void.
37449         * loader.c: debug message.
37450         * class.c: typo fix.
37451
37452 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
37453
37454         * icall.c: fix array init with rank > 1. FindMembers
37455         loops in parent class as well.
37456         * image.c: do not insert nested types in name cache.
37457         * reflection.c: warning fix.
37458         * reflection.h: add override method (for interface impl).
37459
37460 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
37461
37462         * metadata.c: fix customattr decoding.
37463
37464 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
37465
37466         * rawbuffer.cs: Added native Win32 implementation, avoids using
37467         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
37468
37469 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
37470
37471         * class.c: make the low-level routines handle the cache.
37472
37473 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
37474
37475         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
37476
37477 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
37478
37479         * class.c: fix mono_array_element_size() for objects.
37480         * class.h, class.c: add properties to MonoClass and load them
37481         at init time.
37482         * icall.c: check with isinst() when assigning a value to an array
37483         instead of requiring the classes to match exactly.
37484         Implemented icall for System.Type::GetType().
37485         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
37486         enums. Handle bindingflags when looking for methods and fields.
37487         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
37488         and mono_metadata_methods_from_property().
37489         * reflection.h, reflection.c: added structures for propreties,
37490         parameters and enums. Implemented mono_property_get_object() and
37491         mono_param_get_objects().
37492
37493 2001-12-18  Dick Porter  <dick@ximian.com>
37494
37495         * file-io.c: Use mono_string_to_utf16() instead of
37496         mono_string_chars()
37497
37498         * object.c: Added mono_string_to_utf16(), which copies the non
37499         NULL-terminated MonoString into a new double-null-terminated
37500         buffer.
37501
37502 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
37503
37504         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
37505
37506 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
37507
37508         * file-io.c: raise exceptions if handle is invalid.
37509
37510 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
37511
37512         * assembly.c: yet another check for mscorlib.
37513         * class.c, class.h: load nesting info for classes.
37514         * icall.c: many new functions to support the Reflection classes.
37515         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
37516         * reflection.h, reflection.c: mono_image_create_token(),
37517         mono_assembly_get_object(), mono_type_get_object(),
37518         mono_method_get_object(), mono_field_get_object(): methods to return
37519         objects that parallel the C representation of assemblies, types,
37520         methods, fields.
37521
37522 2001-12-11  Dick Porter  <dick@ximian.com>
37523
37524         * icall.c:
37525         * file-io.c: Internal calls for file IO.
37526
37527 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
37528
37529         * tabledefs.h: missing FileAttributes.
37530         * verify.h, verify.c: use is_valid_string () to simplify and check for
37531         valid strings more correctly. Fix warnings and speeling.
37532         Check more tables: Filed, File, ModuleRef, StandAloneSig.
37533         Check code: branches, maxstack, method calls.
37534
37535 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
37536
37537         * object.c (mono_object_allocate): removed static, so that the jit
37538         can allocate value types.
37539
37540         * icall.c (ves_icall_System_DateTime_GetNow): impl.
37541
37542 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37543
37544         * class.c: init enum types right away and register the
37545         token->MonoClass map in mono_class_create_from_typedef ().
37546         * verify.h, verify.c: first cut of the verifier.
37547         * pedump.c: add --verify switch to verify metadata tables.
37548         * tabledefs.h: add some missing enums.
37549
37550 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
37551
37552         * class.c (mono_install_runtime_class_init): impl.
37553         (mono_class_init): renamed mono_class_metadata_init to
37554         mono_class_init, also removed the metadata_inited flag
37555
37556         * object.c (mono_object_isinst): use faster algorithm
37557
37558 2001-11-30  Radek Doulik  <rodo@ximian.com>
37559
37560         * mono-endian.h: reverted last change
37561         added function prototypes
37562
37563         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
37564         add mono-endian.c back
37565
37566         * mono-endian.c: returned back, as Paolo pointed out, it's needed
37567         for unaligned access, I've mistaked it with endianess. I am
37568         sorry.
37569         (mono_read16): fix reverted endianess
37570         (mono_read64): ditto
37571         (mono_read32): ditto
37572
37573 2001-11-30  Dick Porter  <dick@ximian.com>
37574
37575         * exception.c: Implement mono_exception_from_name()
37576
37577 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37578
37579         * metadata.h, metadata.c: remove params_size and locals_size and their
37580         calculation from the metadata code: they are only usefult to the
37581         interp.
37582
37583 2001-11-29  Radek Doulik  <rodo@ximian.com>
37584
37585         * object.c (mono_ldstr): swap bytes here, it's probably not the
37586         best place, but works for me now, I'll redo it once I know mono
37587         better, also note that I add PROT_WRITE and don't reset back, also
37588         note that it's only affects big endians, so x86 should be OK
37589
37590         * mono-endian.h (read16): use just glib macros for both endians
37591
37592         * mono-endian.c: removed as glib macros are used in in
37593         mono-endian.h so we don't need to care about endianess for read
37594         macros as glib does that for us already
37595
37596 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
37597
37598         * class.h, class.h: take minimum alignment into consideration so
37599         that the fields of a class remain aligned also when in an array.
37600
37601 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37602
37603         * loader.h, loader.c: add mono_method_get_param_names().
37604         * class.c: 0-init class fields.
37605
37606 2001-11-26  Dick Porter  <dick@ximian.com>
37607
37608         * icall.c:
37609         * threads-types.h:
37610         * threads.c: New file that handles System.Threading on all platforms
37611
37612         * object.c: 
37613         * object.h: Remove the synchronisation struct from MonoObject,
37614         replace it with a pointer that gets initialised on demand
37615
37616         * Makefile.am: Replace all the system-specific threading code with
37617         a single file that uses the new wrapper library
37618
37619 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
37620
37621         * class.c, class.h: add mono_install_trampoline() so that the runtime
37622         can register a function to create a trampoline: removes the ugly
37623         requirement that a runtime needed to export arch_create_jit_trampoline.
37624         * object.h, object.c: added mono_install_handler() so that the runtime
37625         can install an handler for exceptions generated in C code (with
37626         mono_raise_exception()). Added C struct for System.Delegate.
37627         * pedump.c: removed arch_create_jit_trampoline.
37628         * reflection.c: some cleanups to allow registering user strings and
37629         later getting a token for methodrefs and fieldrefs before the assembly
37630         is built.
37631         * row-indexes.h: updates and fixes from the new ECMA specs.
37632
37633 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
37634
37635         * class.h, class.c: add enum_basetype field to MonoClass.
37636         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
37637         to get index in the constant table reated to a field, param or
37638         property.
37639         * reflection.h, reflection.c: handle constructors. Set public-key and
37640         version number of the built assembly to 0.
37641         * row-indexes.h: update from new ECMA spec.
37642
37643 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37644
37645         * class.h, class.c: add a max_interface_id to MonoClass.
37646         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
37647         since it's used to do that. Added mono_type_type_from_obj().
37648         Make GetType() return NULL instead of segfaulting if the type was not
37649         found. Handle simple arrays in assQualifiedName.
37650         * object.h: add a struct to represent an Exception.
37651         * reflection.c: output call convention in method signature.
37652         Add code to support P/Invoke methods and fixed offsets for fields.
37653
37654 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
37655
37656         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
37657         the value.
37658         * icall.c: use mono_array_addr instead of array->vector: fixes the
37659         reflection image writing.
37660         * reflection.c: init call convention byte to 0 in method signature.
37661         Encode the property signature. Don't output property-related methods
37662         twice. Really process the properties for a type (don't cast a field to
37663         a property, my mom always told me that).
37664         Fix 64 bit issues in pointer alignment in a different and more
37665         readable way.
37666
37667 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
37668
37669         * loader.h: Removed type class from MonoDefaults, added monotype
37670
37671         * loader.c: Loaded MonoType, removed loading of Type
37672
37673         * icall.c (my_mono_new_object): Now returns a System.MonoType,
37674         and fills in System.Type._impl with a RuntimeTypeHandle rather
37675         than the actual MonoClass *
37676
37677         (ves_icall_type_from_handle): change from type_class to
37678         monotype_class
37679
37680         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
37681         implemented
37682
37683         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
37684         implemented
37685
37686         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
37687
37688         (ves_icall_System_Reflection_Assembly_GetType): implemented
37689
37690         (ves_icall_System_MonoType_assQualifiedName): implemented
37691
37692         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
37693
37694 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
37695
37696         * assembly.c (mono_assembly_open): Implement a cache for the
37697         assemblies. 
37698
37699         (mono_assembly_close): only destroy the assembly when the last
37700         reference is gone.
37701         
37702 2001-11-09  Dick Porter  <dick@ximian.com>
37703
37704         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
37705
37706 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
37707
37708         * class.c (mono_class_metadata_init): bug fix: compute the right slot
37709
37710 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
37711
37712         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
37713         from Martin Weindel.
37714         * object.h: add mono_string_chars ().
37715
37716 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
37717
37718         * reflection.c (build_compressed_metadata): Eliminates warnings
37719         and uses 64-bit clean code.
37720
37721         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
37722         (mono_type_equal): Change signature to eliminate warnings.
37723
37724 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
37725
37726         * icall.c, loader.c: remove the internalcall array constructors.
37727         Changes to match the new MonoArray structure.
37728         * object.h, object.c: an array object doesn't allocate an extra
37729         vector. Add mono_array_new_full () to create jagged arrays easily.
37730
37731 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
37732
37733         * metadata.h, metadata.c: add mono_metadata_field_info () to
37734         retreive all the info about a field from vairous tables.
37735         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
37736         * class.h, class.c: augment MonoClassField with more info.
37737         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
37738         policy and load a field's RVA if needed.
37739
37740 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
37741
37742         * class.c (mono_class_metadata_init): create a trampoline for all
37743         virtual functions instead of actually compiling them.
37744
37745 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
37746
37747         * class.h, class.c: include name in MonoClassField.
37748         * class.c: fix fundamental type of System.Object and System.String.
37749         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
37750         tokens in ldtoken.
37751         * icall.c: remove internalcalls for the Reflection stuff that is now
37752         done in C# code.
37753         * loader.c: mono_field_from_memberref () implementation.
37754         * mono-endian.c: thinko (s/struct/union/g).
37755         * object.c, object.h: make the mono_string_* prototypes actually use
37756         MonoString instead of MonoObject.
37757         * reflection.c, reflection.h: updates for changes in the reflection
37758         code in corlib: we use C structures that map to the actual C# classes.
37759         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
37760         fat method header if needed and use the info from the ILGenerator for
37761         methods. Handle fields in types. Misc fixes.
37762
37763 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
37764
37765         * class.c (mono_class_metadata_init): bug fix: always allocate
37766         space for static class data
37767
37768 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
37769
37770         * class.c (mono_compute_relative_numbering): use relative
37771         numbering to support fast runtime type checks.
37772
37773 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
37774
37775         * class.c (mono_class_create_from_typeref): added debugging output
37776         to print class name when MonoDummy is returned instead of real class
37777
37778 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
37779
37780         * class.c (mono_class_metadata_init): interface offset table now
37781         contains pointers into the vtable - this is more efficient for the jit
37782
37783 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
37784
37785         * class.c (mono_class_metadata_init): use a temporary vtable (the
37786         old algorithm only worked for the interpreter, but not for the jit)
37787
37788 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
37789
37790         * loader.c (method_from_memberref): use mono_class_get to get the
37791         class of an array instead of using System.Array directly.
37792         (mono_get_method): also add MEMBERREF methods to the method cache
37793         which usefull for arrays.
37794
37795 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
37796
37797         * pedump.c (arch_compile_method): added to compute vtable entry
37798
37799         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
37800         number of interfaces.
37801         
37802         * class.h: merged MonoArrayClass into MonoClass
37803
37804         * class.c (mono_class_create_from_typedef): compute the vtable size and
37805         allocate space to include the vtable inside MonoClass
37806         (mono_class_metadata_init): initialize the vtable
37807
37808 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
37809
37810         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
37811         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
37812         * image.c: endian fixes by Laurent Rioux.
37813         * object.h, object.c: rename MonoStringObject to MonoString and
37814         MonoArrayObject to MonoArray. Change some function names to conform to
37815         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
37816         guint16* as first argument, so don't use char*.
37817         Provide macros to do the interesting things on arrays in a portable way.
37818         * threads-pthread.c: updates for the API changes and #include <sched.h>
37819         (required for sched_yield()).
37820         * icall.c: updates for the API changes above.
37821         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
37822         platforms that need them.
37823
37824 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
37825
37826         * class.c: set the correct type for all the fundamental
37827         type when loading the class.
37828
37829 2001-10-05  Dick Porter  <dick@ximian.com>
37830
37831         * threads-pthread.c (pthread_mutex_timedlock): Simple
37832         compatibility version for C libraries that lack this call.
37833
37834 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37835
37836         * class.c: MonoTypes stored in MonoClass are stored as
37837         fundamental MonoTypes when the class represents a
37838         fundamental type (System.Int32, ...).
37839         The TypeHandle return by ldtoken is a MonoType*.
37840         * icall.c: ves_icall_get_data_chunk () write out all the
37841         PE/COFF stuff. Implement ves_icall_define_method (),
37842         ves_icall_set_method_body (), ves_icall_type_from_handle ().
37843         * image.c: properly skip unknown streams.
37844         * loader.h, loader.c: add type_class to mono_defaults.
37845         * metadata.c, metadata.h: export compute_size () as
37846         mono_metadata_compute_size () with a better interface.
37847         Typo and C&P fixes.
37848         * pedump.c: don't try to print the entry point RVA if there is no entry point.
37849         * reflection.c, reflection.h: many cleanups, fixes, output method
37850         signatures and headers, typedef and typeref info, compress the metadata
37851         tables, output all the heap streams, cli header etc.
37852         * row-indexes.h: typo fixes.
37853
37854 2001-10-04  Dick Porter  <dick@ximian.com>
37855
37856         * object.h: Add a synchronisation mutex struct to MonoObject
37857
37858         * object.c (mono_new_object): Initialise the object
37859         synchronisation mutexes
37860
37861         * icall.c: System.Threading.Monitor internal calls
37862         
37863         * threads-pthread.h:
37864         * threads-pthread.c: System.Threading.Monitor internal calls
37865
37866         * threads-types.h: New file, includes the system-specific thread
37867         structures
37868         
37869         * threads-pthread-types.h:
37870         * threads-pthread-types.c: New files, handle pthread-specific
37871         synchronisation types
37872
37873         * threads-dummy-types.h: 
37874         * threads-dummy-types.c: New files of dummy support for
37875         thread-specific types
37876
37877         * metadata.c:
37878         * image.c:
37879         * pedump.c: include mono-endian.h not endian.h
37880         
37881         * Makefile.am: More threads files.
37882         Name mono-endian.h not endian.h
37883
37884 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
37885
37886         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
37887         stuff and implement a few more bits.
37888         * icall.c: a field needs to be dereferenced twice. Do not use the same
37889         name for two variables in the same scope.
37890         * image.c, image.h: cleanups.
37891
37892 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
37893
37894         * class.c (mono_class_metadata_init): bug fix: compute the right size
37895
37896 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
37897
37898         * icall.c: implemented some of the Reflection internalcalls.
37899         * image.c, image.h: start writing out the PE/COFF image.
37900         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
37901         that does the reverse than decode_blob_size ().
37902         * object.c: use mono_metadata_encode_value (). Move here
37903         temporary implementation of mono_string_to_utf8 ().
37904         * rawbuffer.c: make malloc_map static.
37905
37906 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
37907
37908         * metadata.c: fix type comparison for arrays.
37909         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
37910         Added a couple of new classes to monodefaults.
37911         * icall.c: added a couple of Reflection-related internalcalls.
37912         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
37913         Added a byval_arg MonoType to MonoClass.
37914
37915 2001-09-28  Dick Porter  <dick@ximian.com>
37916
37917         * icall.c:
37918         * threads-pthread.h: 
37919         * threads-pthread.c: Implemented internal calls for
37920         LocalDataStoreSlot operations.  Applied mutexes around all shared
37921         data.  Reworked the thread creation and Start() operations to
37922         avoid a race condition.
37923         
37924         * threads-dummy.h:
37925         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
37926
37927 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
37928
37929         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
37930
37931 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
37932
37933         * class.c, loader.c: warn and return NULL instead of erroring out.
37934         * icall.c: added System.AppDomain::getCurDomain().
37935         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
37936
37937 2001-09-25  Dick Porter  <dick@ximian.com>
37938
37939         * threads-pthread.h:
37940         * threads-pthread.c: Implemented timed thread joining and added
37941         System.Threading.Thread::Join_internal internal call
37942
37943         * icall.c: Added System.Threading.Thread::Join_internal internal call
37944
37945         * threads-dummy.h:
37946         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
37947
37948 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
37949
37950         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
37951         mono_string_intern () to implement the semantics of the ldstr opcode
37952         and the interning of System.Strings.
37953         * icall.c: provide hooks to make String::IsIntern and String::Intern
37954         internalcalls.
37955
37956 2001-09-23  Dick Porter  <dick@ximian.com>
37957
37958         * threads-dummy.c: 
37959         * threads-dummy.h: New files of dummy threading routines
37960
37961         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
37962         support code based on system specifics
37963
37964         Rename PTHREAD_LIBS to THREAD_LIBS
37965         
37966 2001-09-23  Dick Porter  <dick@ximian.com>
37967
37968         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
37969         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
37970         internal calls.
37971         (mono_thread_init): Set up a Thread object instance to return when
37972         the main thread calls Thread.CurrentThread
37973         (mono_thread_cleanup): Wait for all subthreads to exit
37974
37975         * icall.c: New internal calls for System.Threading.Thread::Sleep
37976         (including Schedule) and CurrentThread
37977
37978         * threads.h: New file, to insulate thread-specific stuff from the
37979         rest of the code
37980
37981 2001-09-21  Dick Porter  <dick@ximian.com>
37982
37983         * threads-pthread.h: 
37984         * threads-pthread.c: New file, for handling pthreads-style
37985         threading support.  Start() now starts a new thread and executes
37986         the ThreadStart delegate instance.
37987
37988         * icall.c: Added the internalcall for
37989         System.Threading.Thread::Start_internal
37990
37991         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
37992
37993 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
37994
37995         * loader.c: work around the different signatures for delegates
37996         constructors csc generates in compiled code vs the ones compiled in mscorlib.
37997
37998 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
37999
38000         * class.h, class.c: add mono_class_get_field_from_name ().
38001         * *: Fix C comments and other ANSI C issues.
38002
38003 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
38004
38005         * endian.h, assembly.c: fix some endianness issues.
38006
38007 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
38008
38009         * loader.h, load.c: add delegate_class to mono_defaults.
38010         Handle runtime provided methods in mono_get_method ().
38011
38012 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
38013
38014         * loader.c (mono_get_method): use pinvoke for internal call
38015
38016         * icall.c: use pinvoke for internal call
38017
38018         * loader.c (method_from_memberref): set the method name
38019
38020 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
38021
38022         * metadata.c: help the compiler generate better code for
38023         mono_class_from_mono_type ().
38024
38025 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
38026
38027         * class.c (mono_class_metadata_init): delayed computing of the
38028         class size to mono_class_metadata_init ()
38029
38030 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
38031
38032         * class.c, class.h: add an interfaces member to MonoClass.
38033         * image.c, image.h: add assembly_name field to MonoImage
38034         from the assembly table.
38035         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
38036
38037 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38038
38039         * class.c: Handle Array in mono_class_from_mono_type ().
38040         * metadata.c, pedump.c: some endian fixes.
38041
38042 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
38043
38044         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
38045         * metadata.c: fix small problem introduced with the latest commit.
38046
38047 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
38048
38049         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
38050         We don't need a MonoMetadata pointer anymore to compare signatures in
38051         mono_metadata_signature_equal (), update callers.
38052         Reduced memory usage an number of allocations for MonoMethodHeader and
38053         MonoMethodSignature.
38054
38055 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
38056
38057         * metadata.c: added compare for szarray.
38058
38059 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
38060
38061         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
38062         and add a couple more types to it and mono_defaults. Give an hint on
38063         classes that need implementing in our corlib and are referenced
38064         in mscorlib.
38065
38066 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
38067
38068         * class.h, class.c: keep track if a class is also an Enum.
38069         * loader.c: Implement a couple more types for use in libffi
38070         marshalling. Gives better diagnostics when failing to dlopen
38071         a library. Set method->klass for P/Invoke methods, too.
38072
38073 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
38074
38075         * class.c, class.h: add a MonoType this_arg to MonoClass that
38076         represents a pointer to an object of the class' type that
38077         can be used by the interpreter and later the type cache.
38078         Add best guess alignment info for valuetype objects.
38079
38080 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
38081
38082         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
38083         into MonoType: one less level of indirection and allocation and
38084         simplifies quite a bit of code. Added cache for MonoTypes that are
38085         used frequently, so that we don't need to allocate them all the time.
38086
38087 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
38088
38089         * class.c (mono_class_create_from_typedef): System.Enum is also a
38090         value type, although it does not derive from System.ValueType
38091         (maybe a bug in the ms compiler?)
38092
38093         * metadata.c (mono_type_size): return the right size for value types
38094
38095         * loader.c (mono_get_method): only initialize method header if not abstract
38096
38097         * class.c (mono_class_from_mono_type): use mono_default values. 
38098
38099 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
38100
38101         * *: use MonoClass pointers instead of <type_tokens>
38102         
38103         * class.h: new flag: metadata_inited.
38104
38105         * class.c (mono_class_metadata_init): impl.
38106         (mono_class_instance_size): impl.
38107         (mono_class_data_size): impl.
38108
38109 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
38110
38111         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
38112         MonoClass now has the name and name_space fields. 
38113         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
38114         mono_get_method () takes and optional MonoClass as argument.
38115         Removed mono_typedef_from_name() and added mono_class_token_from_name()
38116         instead that takes advantage of a map from class names to typedef
38117         tokens in MonoImage.
38118
38119 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
38120
38121         * metadata.c: zero is not a valid alignment boundary.
38122         Merge MONO_TYPE_VOID in default decoding code.
38123
38124 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
38125
38126         * image.h: merged MonoMetadata into MonoImage
38127
38128         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
38129         identify the type of elements.
38130
38131 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
38132
38133         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
38134         * cil-coff.h: split MonoMSDOSHeader and add size info.
38135         * image.c: add some consistency checks.
38136         * metadata.c: fix row size computation: one programmer
38137         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
38138         add explanation for the locator routine.
38139         Fix decoding of size in method header.
38140         
38141 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
38142
38143         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
38144         (g_concat_dir_and_file): Bring g_concat_dir_and_file
38145         function from gnome-libs.  This uses the right path separator
38146         based on the OS, and also works around a bug in some systems where
38147         a double slash is not allowed. 
38148         (default_assembly_name_resolver): Use g_concat_dir_and_file
38149         (mono_assembly_open): ditto.
38150
38151 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
38152
38153         * metadata.c (mono_metadata_signature_equal): impl.
38154
38155         * *: void is now a realy MonoType (instead of using NULL)
38156         
38157         * metadata.c (do_mono_metadata_parse_type): use
38158         mono_metadata_parse_type to parse void value.
38159
38160 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
38161
38162         * metadata.c, metadata.h: in the signature and method header store
38163         only the space required for holding the loca vars and incoming arguments.
38164
38165 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
38166
38167         * metadata.c (do_mono_metadata_parse_type): treat void like any
38168         other type (instead of assigning NULL);
38169
38170 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
38171
38172         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
38173
38174 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
38175
38176         * image.c (do_mono_image_open): added a cache for arrays.
38177
38178 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38179
38180         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
38181         decode a single column from a row in a metadata table and changes
38182         to take advantage of it in the typedef locator (gives a nice speed up).
38183         Store offset info for function params.
38184
38185 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
38186
38187         * image.h (MONO_IMAGE_IS_CORLIB): removed 
38188
38189 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
38190
38191         * assembly.c: how could mono_assembly_close () had ever worked?
38192         * metadata.c, metadata.h: provide offset info for local vars.
38193         Implement mono_type_size () to take care of alignment as well
38194         as size (it was mono_field_type_size in cli/class.c before).
38195
38196 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
38197
38198         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
38199
38200         * assembly.h (CORLIB_NAME): set to corlib.dll
38201
38202         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
38203
38204 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
38205
38206         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
38207         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
38208         tokentype.h: massive namespace cleanup.
38209
38210 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
38211
38212         * metadata.h, metadata.c: decode exception clauses when parsing method header.
38213
38214 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
38215
38216         * metadata.c (mono_metadata_free_type): added check for type !=
38217         NULL (void) before calling mono_metadata_free_type()
38218
38219 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
38220
38221         * metadata.h, row_indexes.h: added header with enumerations to use
38222         to index in the columns from tables in metadata and to decode coded
38223         tokens: we should start using this instead of embedding magic numbers
38224         all over the code.
38225
38226 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
38227
38228         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
38229         Move metadata_t info from cli_image_info_t to MonoImage, where
38230         it's easily accessible. Changed all the uses accordingly.
38231         Added the method and class caches to MonoImage.
38232         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
38233         and mono_metadata_decode_value () signature to be more consistent
38234         with the other parse functions (and simplify code). Taken advantage
38235         of zero-length array allocation with GCC. Removed reduntant (and
38236         wrong) MonoFieldType struct and use MonoParam instead. Changed
38237         mono_metadata_parse_field_type () to use common code for parsing.
38238         Added mono_metadata_typedef_from_field () and
38239         mono_metadata_typedef_from_method () to lookup a typedef index from a
38240         field or method token.
38241         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
38242
38243 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
38244
38245         * metadata.c (mono_metadata_parse_field_type): Implement. 
38246         (do_mono_metadata_parse_type): Split engine from
38247         mono_metadata_parse_type, so that we can create smaller structures
38248         for things that just have one pointer to the MonoType (look at
38249         the MonoFieldType)
38250
38251 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
38252
38253         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
38254         as Jan Gray found out, it is incorrect. 
38255
38256 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
38257
38258         * assembly.c: Implement asssembly loading.  This loads an image
38259         and loads all the referenced assemblies.  Come to think of it, we
38260         could always do lazy loading of the assemblies. 
38261
38262         * image.c (mono_image_open): Keep loaded images in a hashtable.
38263
38264         * image.h (MonoImage): Add reference count.
38265
38266 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
38267
38268         * assembly.c (mono_assembly_open): Keep track of the file name in
38269         case the assembly has no ASSEMBLY table.
38270
38271         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
38272         from get.c here.
38273
38274 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
38275
38276         * metadata.c, metadata.h: decode local vars in method header
38277         parse function. Change callers accordingly.
38278
38279 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
38280
38281         * metadata.h, cil-coff.h: protect against multiple inclusion.
38282         Added some new structures to hold information decoded from metadata:
38283         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
38284         and relevant decoding/free functions.
38285         * metadata.c: implement decoding functions. Add warning for out of bounds
38286         index in mono_metadata_locate(). Implement mono_get_method () to retreive
38287         all the info about a method signature and invocation. Remove check on
38288         uninitialized local var in parse_mh() and fix memory leak.
38289
38290 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
38291
38292         * metadata.h: More macros.
38293
38294         * tokentype.h: New file.
38295
38296 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
38297
38298         * assembly.c: added a consistency check and initialize
38299         some structures with g_new0().
38300         * metadata.c: fixed a couple more bugs in table size computation
38301         and add other checks for out-of bound access to metadata.
38302
38303 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
38304
38305         * metatada.c: fix bugs computing table sizes. Spew a
38306         warning when index in string heap is out of bounds.
38307
38308 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
38309
38310         * metadata.h: Add a couple of macros to manipulate tokens. 
38311
38312 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
38313
38314         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
38315         cli_section_tables).
38316
38317 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
38318
38319         * metadata.c (mono_metadata_user_string): New function, provides
38320         access to the UserString heap. 
38321
38322 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
38323
38324         * metadata.c: Add inline documentation.
38325
38326 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
38327
38328         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
38329         files. 
38330
38331 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
38332
38333         * typeattr.h: New file, TypeAttribute flags. 
38334
38335 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
38336
38337         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
38338         mono_assembly_ensure_section): Section loading code.
38339         (load_section_tables): Load the sections.
38340
38341         * mono/metadata/metadata.c (mono_metadata_locate_token,
38342         mono_metadata_locate): Functions to locate the information
38343         definition given a token or a table and an index.
38344         (mono_metadata_compute_table_bases): New.
38345         (compute_size): New function to compute the sizes of the various
38346         tables.
38347
38348         * mono/metadata/metadata.h: Finish listing the different index
38349         types. 
38350
38351         * mono/metadata/pedump.c: Improve to dump new information.
38352
38353 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
38354
38355         * mono/metadata/metadata.c: Entered all the tables matching
38356         Beta2. 
38357
38358         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2